PicSeeDoc.cpp
上传用户:aokegd
上传日期:2009-12-14
资源大小:1276k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // PicSeeDoc.cpp : implementation of the CPicSeeDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "PicSee.h"
  5. #include "PicSeeDoc.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CPicSeeDoc
  13. IMPLEMENT_DYNCREATE(CPicSeeDoc, CDocument)
  14. BEGIN_MESSAGE_MAP(CPicSeeDoc, CDocument)
  15. //{{AFX_MSG_MAP(CPicSeeDoc)
  16. ON_COMMAND(ID_FILE_NEW, OnFileNew)
  17. //}}AFX_MSG_MAP
  18. END_MESSAGE_MAP()
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CPicSeeDoc construction/destruction
  21. CPicSeeDoc::CPicSeeDoc()
  22. {
  23. // TODO: add one-time construction code here
  24. }
  25. CPicSeeDoc::~CPicSeeDoc()
  26. {
  27. }
  28. BOOL CPicSeeDoc::OnNewDocument()
  29. {
  30. if (!CDocument::OnNewDocument())
  31. return FALSE;
  32. // TODO: add reinitialization code here
  33. // (SDI documents will reuse this document)
  34. return TRUE;
  35. }
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CPicSeeDoc serialization
  38. void CPicSeeDoc::Serialize(CArchive& ar)
  39. {
  40. if (ar.IsStoring())
  41. {
  42. // TODO: add storing code here
  43. }
  44. else
  45. {
  46. // TODO: add loading code here
  47. }
  48. }
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CPicSeeDoc diagnostics
  51. #ifdef _DEBUG
  52. void CPicSeeDoc::AssertValid() const
  53. {
  54. CDocument::AssertValid();
  55. }
  56. void CPicSeeDoc::Dump(CDumpContext& dc) const
  57. {
  58. CDocument::Dump(dc);
  59. }
  60. #endif //_DEBUG
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CPicSeeDoc commands
  63. void CPicSeeDoc::OnFileNew() 
  64. {
  65. //不做任何工作
  66. }
  67. void CPicSeeDoc::DeleteContents() 
  68. {
  69. //清除位图资源
  70. if (m_Bitmap.m_hObject != NULL)
  71. m_Bitmap.DeleteObject();
  72. CDocument::DeleteContents();
  73. }
  74. BOOL CPicSeeDoc::OnOpenDocument(LPCTSTR lpszPathName) 
  75. {
  76. /* if (!CDocument::OnOpenDocument(lpszPathName))
  77. return FALSE;
  78. return TRUE;*/
  79. if (IsModified())
  80. TRACE0("Warning: OnOpenDocument replaces an unsaved documentn");
  81. DeleteContents();
  82. //设置等待鼠标
  83. BeginWaitCursor();
  84. //打开位图文件
  85. HBITMAP hImage = (HBITMAP)LoadImage(NULL, lpszPathName, IMAGE_BITMAP,
  86. 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
  87. EndWaitCursor();
  88. if (!hImage) {
  89. DWORD LastError = GetLastError();
  90. // Error message should be fomatted with LastError included
  91. AfxMessageBox("LoadImage failed");
  92. return FALSE;
  93. }
  94. //构造位图对象
  95. if (!m_Bitmap.Attach(hImage)) {
  96. AfxMessageBox("Bitmap could not be attached");
  97. return FALSE;
  98. }
  99. SetModifiedFlag(FALSE);
  100. //更新所有视图
  101. UpdateAllViews(NULL);
  102. return TRUE;
  103. }