anywhereDoc.cpp
上传用户:zhenhuadz
上传日期:2007-01-07
资源大小:1511k
文件大小:5k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. // anywhereDoc.cpp : implementation of the CAnywhereDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "anywhere.h"
  5. #include "anywhereDoc.h"
  6. #include "msgman.h"
  7. #include "mainfrm.h"
  8. #include "frameprop.h"
  9. #include <limits.h>
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CAnywhereDoc
  17. IMPLEMENT_DYNCREATE(CAnywhereDoc, CDocument)
  18. BEGIN_MESSAGE_MAP(CAnywhereDoc, CDocument)
  19. //{{AFX_MSG_MAP(CAnywhereDoc)
  20. ON_COMMAND(ID_FRAMEPROP, OnFrameprop)
  21. //}}AFX_MSG_MAP
  22. END_MESSAGE_MAP()
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CAnywhereDoc construction/destruction
  25. CAnywhereDoc::CAnywhereDoc()
  26. {
  27. // TODO: add one-time construction code here
  28. m_hDIB = NULL;
  29. m_palDIB = NULL;
  30. m_sizeDoc = CSize(1,1);     // dummy value to make CScrollView happy
  31. }
  32. CAnywhereDoc::~CAnywhereDoc()
  33. {
  34. }
  35. BOOL CAnywhereDoc::OnNewDocument()
  36. {
  37. if (!CDocument::OnNewDocument())
  38. return FALSE;
  39. // TODO: add reinitialization code here
  40. // (SDI documents will reuse this document)
  41.     //m_FontAril.CreateFont(20,0,0,0,400,FALSE,FALSE,0,
  42. // ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
  43. // DEFAULT_PITCH|FF_SWISS,"Arial");
  44. //m_Fontst.CreateFont(15,0,0,0,700,0,0,0,ANSI_CHARSET,OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS
  45. //,DRAFT_QUALITY,VARIABLE_PITCH,_T("宋体"));
  46. //m_pmsgman=new CMsgman(this);
  47. for (int i=0;i<9;i++)
  48. m_sys[i]="";
  49. return TRUE;
  50. }
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CAnywhereDoc serialization
  53. void CAnywhereDoc::Serialize(CArchive& ar)
  54. {
  55. if (ar.IsStoring())
  56. {
  57. // TODO: add storing code here
  58. }
  59. else
  60. {
  61. // TODO: add loading code here
  62. }
  63. }
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CAnywhereDoc diagnostics
  66. #ifdef _DEBUG
  67. void CAnywhereDoc::AssertValid() const
  68. {
  69. CDocument::AssertValid();
  70. }
  71. void CAnywhereDoc::Dump(CDumpContext& dc) const
  72. {
  73. CDocument::Dump(dc);
  74. }
  75. #endif //_DEBUG
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CAnywhereDoc commands
  78. void CAnywhereDoc::OnFrameprop() 
  79. {
  80.  // CMainFrame *pFrame=(CMainFrame *)AfxGetMainWnd();
  81.   CFrameworkProperties dialog(((CMainFrame*)AfxGetMainWnd())->m_Framework);
  82.   dialog.DoModal();
  83.   
  84. }
  85. BOOL CAnywhereDoc::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  86. {
  87.  /* CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
  88.   if (pFrame && pFrame->m_Framework.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))
  89.     return TRUE;
  90. */
  91. return CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  92. }
  93. BOOL CAnywhereDoc::ReadBmp(LPCTSTR lpszPathName)
  94. {
  95. CFile file;
  96. CFileException fe;
  97. if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
  98. {
  99. ReportSaveLoadException(lpszPathName, &fe,
  100. FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
  101. return FALSE;
  102. }
  103. //DeleteContents();
  104. BeginWaitCursor();
  105. // replace calls to Serialize with ReadDIBFile function
  106. TRY
  107. {
  108. m_hDIB = ::ReadDIBFile(file);
  109. }
  110. CATCH (CFileException, eLoad)
  111. {
  112. file.Abort(); // will not throw an exception
  113. EndWaitCursor();
  114. ReportSaveLoadException(lpszPathName, eLoad,
  115. FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
  116. m_hDIB = NULL;
  117. return FALSE;
  118. }
  119. END_CATCH
  120. InitDIBData();
  121. EndWaitCursor();
  122. if (m_hDIB == NULL)
  123. {
  124. // may not be DIB format
  125. CString strMsg;
  126. strMsg.LoadString(IDS_CANNOT_LOAD_DIB);
  127. MessageBox(NULL, strMsg, NULL, MB_ICONINFORMATION | MB_OK);
  128. return FALSE;
  129. }
  130. SetPathName(lpszPathName);
  131. SetModifiedFlag(FALSE);     // start off with unmodified
  132.     return TRUE;
  133. }
  134. void CAnywhereDoc::InitDIBData()
  135. {
  136. if (m_palDIB != NULL)
  137. {
  138. delete m_palDIB;
  139. m_palDIB = NULL;
  140. }
  141. if (m_hDIB == NULL)
  142. {
  143. return;
  144. }
  145. // Set up document size
  146. LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) m_hDIB);
  147. if (::DIBWidth(lpDIB) > INT_MAX ||::DIBHeight(lpDIB) > INT_MAX)
  148. {
  149. ::GlobalUnlock((HGLOBAL) m_hDIB);
  150. ::GlobalFree((HGLOBAL) m_hDIB);
  151. m_hDIB = NULL;
  152. CString strMsg;
  153. strMsg.LoadString(IDS_DIB_TOO_BIG);
  154. MessageBox(NULL, strMsg, NULL, MB_ICONINFORMATION | MB_OK);
  155. return;
  156. }
  157. m_sizeDoc = CSize((int) ::DIBWidth(lpDIB), (int) ::DIBHeight(lpDIB));
  158. ::GlobalUnlock((HGLOBAL) m_hDIB);
  159. // Create copy of palette
  160. m_palDIB = new CPalette;
  161. if (m_palDIB == NULL)
  162. {
  163. // we must be really low on memory
  164. ::GlobalFree((HGLOBAL) m_hDIB);
  165. m_hDIB = NULL;
  166. return;
  167. }
  168. if (::CreateDIBPalette(m_hDIB, m_palDIB) == NULL)
  169. {
  170. // DIB may not have a palette
  171. delete m_palDIB;
  172. m_palDIB = NULL;
  173. return;
  174. }
  175. }