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

OpenGL

开发平台:

Visual C++

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