doc.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // [!output DOC_IMPL] : implementation of the [!output DOC_CLASS] class
  2. //
  3. #include "stdafx.h"
  4. #include "[!output APP_HEADER]"
  5. [!if OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  6. #include "[!output ROWSET_HEADER]"
  7. [!endif]
  8. #include "[!output DOC_HEADER]"
  9. [!if CONTAINER || CONTAINER_SERVER]
  10. #include "[!output CONTAINER_ITEM_HEADER]"
  11. [!endif]
  12. [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER]
  13. #include "[!output SERVER_ITEM_HEADER]"
  14. [!endif]
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #endif
  18. // [!output DOC_CLASS]
  19. IMPLEMENT_DYNCREATE([!output DOC_CLASS], [!output DOC_BASE_CLASS])
  20. BEGIN_MESSAGE_MAP([!output DOC_CLASS], [!output DOC_BASE_CLASS])
  21. [!if CONTAINER || CONTAINER_SERVER]
  22. // Enable default OLE container implementation
  23. [!if !RICH_EDIT_VIEW]
  24. ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, &[!output DOC_BASE_CLASS]::OnUpdatePasteMenu)
  25. ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE_LINK, &[!output DOC_BASE_CLASS]::OnUpdatePasteLinkMenu)
  26. ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_CONVERT, &[!output DOC_BASE_CLASS]::OnUpdateObjectVerbMenu)
  27. ON_COMMAND(ID_OLE_EDIT_CONVERT, &[!output DOC_BASE_CLASS]::OnEditConvert)
  28. [!endif]
  29. ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, &[!output DOC_BASE_CLASS]::OnUpdateEditLinksMenu)
  30. ON_COMMAND(ID_OLE_EDIT_LINKS, &[!output DOC_BASE_CLASS]::OnEditLinks)
  31. ON_UPDATE_COMMAND_UI_RANGE(ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, &[!output DOC_BASE_CLASS]::OnUpdateObjectVerbMenu)
  32. [!endif]
  33. [!if MAPI]
  34. ON_COMMAND(ID_FILE_SEND_MAIL, &[!output DOC_CLASS]::OnFileSendMail)
  35. ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, &[!output DOC_CLASS]::OnUpdateFileSendMail)
  36. [!endif]
  37. END_MESSAGE_MAP()
  38. [!if AUTOMATION]
  39. BEGIN_DISPATCH_MAP([!output DOC_CLASS], [!output DOC_BASE_CLASS])
  40. END_DISPATCH_MAP()
  41. // Note: we add support for IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] to support typesafe binding
  42. //  from VBA.  This IID must match the GUID that is attached to the
  43. //  dispinterface in the .IDL file.
  44. // {[!output DISPIID_REGISTRY_FORMAT]}
  45. static const IID IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] =
  46. [!output DISPIID_STATIC_CONST_GUID_FORMAT];
  47. BEGIN_INTERFACE_MAP([!output DOC_CLASS], [!output DOC_BASE_CLASS])
  48. INTERFACE_PART([!output DOC_CLASS], IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME], Dispatch)
  49. END_INTERFACE_MAP()
  50. [!endif]
  51. // [!output DOC_CLASS] construction/destruction
  52. [!output DOC_CLASS]::[!output DOC_CLASS]()
  53. {
  54. [!if SUPPORT_COMPOUND_FILES && !COMPOUND_DOC_NONE]
  55. // Use OLE compound files
  56. EnableCompoundFile();
  57. [!endif]
  58. // TODO: add one-time construction code here
  59. [!if AUTOMATION]
  60. EnableAutomation();
  61. AfxOleLockApp();
  62. [!endif]
  63. }
  64. [!output DOC_CLASS]::~[!output DOC_CLASS]()
  65. {
  66. [!if AUTOMATION]
  67. AfxOleUnlockApp();
  68. [!endif]
  69. }
  70. BOOL [!output DOC_CLASS]::OnNewDocument()
  71. {
  72. if (![!output DOC_BASE_CLASS]::OnNewDocument())
  73. return FALSE;
  74. [!if APP_TYPE_SDI]
  75. [!if EDIT_VIEW]
  76. reinterpret_cast<CEditView*>(m_viewList.GetHead())->SetWindowText(NULL);
  77. [!endif]
  78. [!endif]
  79. // TODO: add reinitialization code here
  80. // (SDI documents will reuse this document)
  81. return TRUE;
  82. }
  83. [!if RICH_EDIT_VIEW]
  84. [!output CONTAINER_ITEM_BASE_CLASS]* [!output DOC_CLASS]::CreateClientItem(REOBJECT* preo) const
  85. {
  86. return new [!output CONTAINER_ITEM_CLASS](preo, const_cast<[!output DOC_CLASS]*>(this));
  87. }
  88. [!endif]
  89. [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER]
  90. // [!output DOC_CLASS] server implementation
  91. COleServerItem* [!output DOC_CLASS]::OnGetEmbeddedItem()
  92. {
  93. // OnGetEmbeddedItem is called by the framework to get the COleServerItem
  94. //  that is associated with the document.  It is only called when necessary.
  95. [!output SERVER_ITEM_CLASS]* pItem = new [!output SERVER_ITEM_CLASS](this);
  96. ASSERT_VALID(pItem);
  97. return pItem;
  98. }
  99. [!endif]
  100. [!if ACTIVE_DOC_SERVER]
  101. // [!output DOC_CLASS] Active Document server implementation
  102. CDocObjectServer *[!output DOC_CLASS]::GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite)
  103. {
  104. return new CDocObjectServer(this, pDocSite);
  105. }
  106. [!endif]
  107. [!if !DB_VIEW_NO_FILE && !HTML_EDITVIEW]
  108. // [!output DOC_CLASS] serialization
  109. void [!output DOC_CLASS]::Serialize(CArchive& ar)
  110. {
  111. [!if EDIT_VIEW]
  112. // CEditView contains an edit control which handles all serialization
  113. reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
  114. [!else]
  115. if (ar.IsStoring())
  116. {
  117. // TODO: add storing code here
  118. }
  119. else
  120. {
  121. // TODO: add loading code here
  122. }
  123. [!if CONTAINER || CONTAINER_SERVER]
  124. // Calling the base class [!output DOC_BASE_CLASS] enables serialization
  125. //  of the container document's COleClientItem objects.
  126. [!if RICH_EDIT_VIEW]
  127. // TODO: set CRichEditDoc::m_bRTF = FALSE if you are serializing as text
  128. [!endif]
  129. [!output DOC_BASE_CLASS]::Serialize(ar);
  130. [!if ACTIVE_DOC_CONTAINER]
  131. // activate the first one
  132. if (!ar.IsStoring())
  133. {
  134. POSITION posItem = GetStartPosition();
  135. if (posItem != NULL)
  136. {
  137. CDocItem* pItem = GetNextItem(posItem);
  138. POSITION posView = GetFirstViewPosition();
  139. COleDocObjectItem *pDocObjectItem = DYNAMIC_DOWNCAST(COleDocObjectItem, pItem);
  140. if (posView != NULL && pDocObjectItem != NULL)
  141. {
  142. CView* pView = GetNextView(posView);
  143. pDocObjectItem->DoVerb(OLEIVERB_SHOW, pView);
  144. }
  145. }
  146. }
  147. [!endif]
  148. [!endif]
  149. [!endif]
  150. }
  151. [!endif]
  152. // [!output DOC_CLASS] diagnostics
  153. #ifdef _DEBUG
  154. void [!output DOC_CLASS]::AssertValid() const
  155. {
  156. [!output DOC_BASE_CLASS]::AssertValid();
  157. }
  158. void [!output DOC_CLASS]::Dump(CDumpContext& dc) const
  159. {
  160. [!output DOC_BASE_CLASS]::Dump(dc);
  161. }
  162. #endif //_DEBUG
  163. // [!output DOC_CLASS] commands