home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / common / msdev98 / bin / ide / mfcapwz.dll / TEMPLATE / DOC.CPP < prev    next >
C/C++ Source or Header  |  1998-06-18  |  6KB  |  219 lines

  1. // $$doc_ifile$$.cpp : implementation of the $$DOC_CLASS$$ class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "$$root$$.h"
  6.  
  7. $$IF(CRecordView || CDaoRecordView || COleDBRecordView)
  8. #include "$$recset_hfile$$.h"
  9. $$ENDIF
  10. #include "$$doc_hfile$$.h"
  11. $$IF(CONTAINER || CONTAINER_SERVER)
  12. #include "$$cntritem_hfile$$.h"
  13. $$ENDIF
  14. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER)
  15. #include "$$srvritem_hfile$$.h"
  16. $$ENDIF
  17.  
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // $$DOC_CLASS$$
  26.  
  27. IMPLEMENT_DYNCREATE($$DOC_CLASS$$, $$DOC_BASE_CLASS$$)
  28.  
  29. BEGIN_MESSAGE_MAP($$DOC_CLASS$$, $$DOC_BASE_CLASS$$)
  30.     //{{AFX_MSG_MAP($$DOC_CLASS$$)
  31. $$IF(VERBOSE)
  32.         // NOTE - the ClassWizard will add and remove mapping macros here.
  33.         //    DO NOT EDIT what you see in these blocks of generated code!
  34. $$ENDIF
  35.     //}}AFX_MSG_MAP
  36. $$IF(CONTAINER || CONTAINER_SERVER)
  37.     // Enable default OLE container implementation
  38. $$IF(!CRichEditView)
  39.     ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, $$DOC_BASE_CLASS$$::OnUpdatePasteMenu)
  40.     ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE_LINK, $$DOC_BASE_CLASS$$::OnUpdatePasteLinkMenu)
  41.     ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_CONVERT, $$DOC_BASE_CLASS$$::OnUpdateObjectVerbMenu)
  42.     ON_COMMAND(ID_OLE_EDIT_CONVERT, $$DOC_BASE_CLASS$$::OnEditConvert)
  43. $$ENDIF //!CRichEditView
  44.     ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, $$DOC_BASE_CLASS$$::OnUpdateEditLinksMenu)
  45.     ON_COMMAND(ID_OLE_EDIT_LINKS, $$DOC_BASE_CLASS$$::OnEditLinks)
  46.     ON_UPDATE_COMMAND_UI_RANGE(ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, $$DOC_BASE_CLASS$$::OnUpdateObjectVerbMenu)
  47. $$ENDIF
  48. $$IF(MAPI)
  49.     ON_COMMAND(ID_FILE_SEND_MAIL, OnFileSendMail)
  50.     ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, OnUpdateFileSendMail)
  51. $$ENDIF //MAPI
  52. END_MESSAGE_MAP()
  53.  
  54. $$IF(AUTOMATION)
  55. BEGIN_DISPATCH_MAP($$DOC_CLASS$$, $$DOC_BASE_CLASS$$)
  56.     //{{AFX_DISPATCH_MAP($$DOC_CLASS$$)
  57.         // NOTE - the ClassWizard will add and remove mapping macros here.
  58.         //      DO NOT EDIT what you see in these blocks of generated code!
  59.     //}}AFX_DISPATCH_MAP
  60. END_DISPATCH_MAP()
  61.  
  62. $$IF(VERBOSE)
  63. // Note: we add support for IID_I$$Safe_root$$ to support typesafe binding
  64. //  from VBA.  This IID must match the GUID that is attached to the 
  65. //  dispinterface in the .ODL file.
  66.  
  67. // {$$DISPIID_CLSID_ODL$$}
  68. $$ENDIF //VERBOSE
  69. static const IID IID_I$$Safe_root$$ =
  70. $$DISPIID_CLSID$$;
  71.  
  72. BEGIN_INTERFACE_MAP($$DOC_CLASS$$, $$DOC_BASE_CLASS$$)
  73.     INTERFACE_PART($$DOC_CLASS$$, IID_I$$Safe_root$$, Dispatch)
  74. END_INTERFACE_MAP()
  75.  
  76. $$ENDIF //AUTOMATION
  77. /////////////////////////////////////////////////////////////////////////////
  78. // $$DOC_CLASS$$ construction/destruction
  79.  
  80. $$DOC_CLASS$$::$$DOC_CLASS$$()
  81. {
  82. $$IF(COMPFILE)
  83. $$IF(VERBOSE)
  84.     // Use OLE compound files
  85. $$ENDIF
  86.     EnableCompoundFile();
  87.  
  88. $$ENDIF //COMPFILE
  89. $$IF(VERBOSE)
  90.     // TODO: add one-time construction code here
  91.  
  92. $$ENDIF
  93. $$IF(AUTOMATION)
  94.     EnableAutomation();
  95.  
  96.     AfxOleLockApp();
  97. $$ENDIF
  98. }
  99.  
  100. $$DOC_CLASS$$::~$$DOC_CLASS$$()
  101. {
  102. $$IF(AUTOMATION)
  103.     AfxOleUnlockApp();
  104. $$ENDIF
  105. }
  106.  
  107. BOOL $$DOC_CLASS$$::OnNewDocument()
  108. {
  109.     if (!$$DOC_BASE_CLASS$$::OnNewDocument())
  110.         return FALSE;
  111. $$IF(PROJTYPE_SDI)
  112. $$IF(CEditView)
  113.  
  114.     ((CEditView*)m_viewList.GetHead())->SetWindowText(NULL);
  115. $$ENDIF //CEditView
  116. $$ENDIF //PROJTYPE_SDI
  117.  
  118. $$IF(VERBOSE)
  119.     // TODO: add reinitialization code here
  120.     // (SDI documents will reuse this document)
  121.  
  122. $$ENDIF
  123.     return TRUE;
  124. }
  125. $$IF(CRichEditView)
  126.  
  127. $$CNTRITEM_BASE_CLASS$$* $$DOC_CLASS$$::CreateClientItem(REOBJECT* preo) const
  128. {
  129.     // cast away constness of this
  130.     return new $$CNTRITEM_CLASS$$(preo, ($$DOC_CLASS$$*) this);
  131. }
  132. $$ENDIF //CRichEditView
  133. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER)
  134.  
  135. /////////////////////////////////////////////////////////////////////////////
  136. // $$DOC_CLASS$$ server implementation
  137.  
  138. COleServerItem* $$DOC_CLASS$$::OnGetEmbeddedItem()
  139. {
  140. $$IF(VERBOSE)
  141.     // OnGetEmbeddedItem is called by the framework to get the COleServerItem
  142.     //  that is associated with the document.  It is only called when necessary.
  143.  
  144. $$ENDIF
  145.     $$SRVRITEM_CLASS$$* pItem = new $$SRVRITEM_CLASS$$(this);
  146.     ASSERT_VALID(pItem);
  147.     return pItem;
  148. }
  149. $$ENDIF
  150. $$IF(ACTIVE_DOC_SERVER)
  151.  
  152. /////////////////////////////////////////////////////////////////////////////
  153. // $$DOC_CLASS$$ Active Document server implementation
  154.  
  155. CDocObjectServer *$$DOC_CLASS$$::GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite)
  156. {
  157.     return new CDocObjectServer(this, pDocSite);
  158. }
  159. $$ENDIF
  160.  
  161.  
  162. $$IF(!DB_NO_FILE)
  163.  
  164. /////////////////////////////////////////////////////////////////////////////
  165. // $$DOC_CLASS$$ serialization
  166.  
  167. void $$DOC_CLASS$$::Serialize(CArchive& ar)
  168. {
  169. $$IF(CEditView)
  170. $$IF(VERBOSE)
  171.     // CEditView contains an edit control which handles all serialization
  172. $$ENDIF //VERBOSE
  173.     ((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);
  174. $$ELSE
  175.     if (ar.IsStoring())
  176.     {
  177. $$IF(VERBOSE)
  178.         // TODO: add storing code here
  179. $$ENDIF
  180.     }
  181.     else
  182.     {
  183. $$IF(VERBOSE)
  184.         // TODO: add loading code here
  185. $$ENDIF
  186.     }
  187. $$IF(CONTAINER || CONTAINER_SERVER)
  188. $$IF(VERBOSE)
  189.  
  190.     // Calling the base class $$DOC_BASE_CLASS$$ enables serialization
  191.     //  of the container document's COleClientItem objects.
  192. $$ENDIF
  193. $$IF(CRichEditView)
  194.     // TODO: set CRichEditDoc::m_bRTF = FALSE if you are serializing as text
  195. $$ENDIF //CEditView
  196.     $$DOC_BASE_CLASS$$::Serialize(ar);
  197. $$ENDIF // Container
  198. $$ENDIF // CEditView
  199. }
  200. $$ENDIF //!DB_NO_FILE
  201.  
  202. /////////////////////////////////////////////////////////////////////////////
  203. // $$DOC_CLASS$$ diagnostics
  204.  
  205. #ifdef _DEBUG
  206. void $$DOC_CLASS$$::AssertValid() const
  207. {
  208.     $$DOC_BASE_CLASS$$::AssertValid();
  209. }
  210.  
  211. void $$DOC_CLASS$$::Dump(CDumpContext& dc) const
  212. {
  213.     $$DOC_BASE_CLASS$$::Dump(dc);
  214. }
  215. #endif //_DEBUG
  216.  
  217. /////////////////////////////////////////////////////////////////////////////
  218. // $$DOC_CLASS$$ commands
  219.