MyFileIO.cpp
上传用户:cding2008
上传日期:2007-01-03
资源大小:1812k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // MyFileIO.cpp : File I/O helper implementation
  3. //
  4. // ModelMagic 3D and 'glOOP' (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is freely distributable without licensing fees and is
  11. // provided without guarantee or warrantee expressed or implied. This
  12. // program is -not- in the public domain.
  13. //
  14. /////////////////////////////////////////////////////////////////////////////
  15. #include "stdafx.h"
  16. #include "MyFileIO.h"
  17. /////////////////////////////////////////////////////////////////////////////
  18. // Helpers for saving/restoring window state in the ini file
  19. static TCHAR szFormat[] = _T("%u,%u,%d,%d,%d,%d,%d,%d,%d,%d");
  20. BOOL PASCAL NEAR ReadWindowPlacement(LPWINDOWPLACEMENT pwp, LPSTR lpszSection, LPSTR lpszWindowName)
  21. {
  22. CString strBuffer = AfxGetApp()->GetProfileString(lpszSection, lpszWindowName);
  23. if (strBuffer.IsEmpty())
  24. return FALSE;
  25. WINDOWPLACEMENT wp;
  26. int nRead = _stscanf(strBuffer, szFormat,
  27. &wp.flags, &wp.showCmd,
  28. &wp.ptMinPosition.x, &wp.ptMinPosition.y,
  29. &wp.ptMaxPosition.x, &wp.ptMaxPosition.y,
  30. &wp.rcNormalPosition.left, &wp.rcNormalPosition.top,
  31. &wp.rcNormalPosition.right, &wp.rcNormalPosition.bottom);
  32. if (nRead != 10)
  33. return FALSE;
  34. wp.length = sizeof wp;
  35. *pwp = wp;
  36. return TRUE;
  37. }
  38. void PASCAL NEAR WriteWindowPlacement(LPWINDOWPLACEMENT pwp, LPSTR lpszSection, LPSTR lpszWindowName)
  39. // write a window placement to settings section of app's ini file
  40. {
  41. TCHAR szBuffer[sizeof("-32767")*8 + sizeof("65535")*2];
  42. wsprintf(szBuffer, szFormat,
  43. pwp->flags, pwp->showCmd,
  44. pwp->ptMinPosition.x, pwp->ptMinPosition.y,
  45. pwp->ptMaxPosition.x, pwp->ptMaxPosition.y,
  46. pwp->rcNormalPosition.left, pwp->rcNormalPosition.top,
  47. pwp->rcNormalPosition.right, pwp->rcNormalPosition.bottom);
  48. AfxGetApp()->WriteProfileString(lpszSection, lpszWindowName, szBuffer);
  49. }
  50. void DisplayFileIOException(CFileException* exception)
  51. {
  52. if(exception->m_cause == CFileException::none )
  53. AfxMessageBox("No error occured.  False exception??", MB_OK, NULL);
  54. if(exception->m_cause == CFileException::generic )
  55. AfxMessageBox("An unspecified error occurred!", MB_OK, NULL);
  56. if(exception->m_cause == CFileException::fileNotFound )
  57. AfxMessageBox("The file could not be located!", MB_OK, NULL);
  58. if(exception->m_cause == CFileException::badPath )
  59. AfxMessageBox("All or part of the path is invalid!", MB_OK, NULL);
  60. if(exception->m_cause == CFileException::tooManyOpenFiles )
  61. AfxMessageBox("The permitted number of open files was exceeded!", MB_OK, NULL);
  62. if(exception->m_cause == CFileException::accessDenied )
  63. AfxMessageBox("The file could not be accessed!", MB_OK, NULL);
  64. if(exception->m_cause == CFileException::invalidFile )
  65. AfxMessageBox("There was an attempt to use an invalid file handle!", MB_OK, NULL);
  66. if(exception->m_cause == CFileException::removeCurrentDir )
  67. AfxMessageBox("The current working directory cannot be removed!", MB_OK, NULL);
  68. if(exception->m_cause == CFileException::directoryFull )
  69. AfxMessageBox("There are no more directory entries!", MB_OK, NULL);
  70. if(exception->m_cause == CFileException::badSeek )
  71. AfxMessageBox("There was an error trying to set the file pointer!", MB_OK, NULL);
  72. if(exception->m_cause == CFileException::hardIO )
  73. AfxMessageBox("There was a hardware error!", MB_OK, NULL);
  74. if(exception->m_cause == CFileException::sharingViolation )
  75. AfxMessageBox("SHARE.EXE was not loaded, or a shared region was locked!", MB_OK, NULL);
  76. if(exception->m_cause == CFileException::lockViolation )
  77. AfxMessageBox("There was an attempt to lock a region that was already locked!", MB_OK, NULL);
  78. if(exception->m_cause == CFileException::diskFull )
  79. AfxMessageBox("The disk is full!", MB_OK, NULL);
  80. if(exception->m_cause == CFileException::endOfFile )
  81. AfxMessageBox("The end of file was reached!", MB_OK, NULL);
  82. }