home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / com / inproc / ipdrive / ipdridoc.cpp < prev    next >
C/C++ Source or Header  |  1998-04-02  |  3KB  |  108 lines

  1. // ipdridoc.cpp : implementation of the CDriverDoc class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "stdafx.h"
  14. #include "ipdrive.h"
  15.  
  16. #include "ipdridoc.h"
  17.  
  18. #ifdef _DEBUG
  19. #undef THIS_FILE
  20. static char BASED_CODE THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CDriverDoc
  25.  
  26. IMPLEMENT_DYNCREATE(CDriverDoc, CDocument)
  27.  
  28. BEGIN_MESSAGE_MAP(CDriverDoc, CDocument)
  29.     //{{AFX_MSG_MAP(CDriverDoc)
  30.         // NOTE - the ClassWizard will add and remove mapping macros here.
  31.         //    DO NOT EDIT what you see in these blocks of generated code!
  32.     //}}AFX_MSG_MAP
  33. END_MESSAGE_MAP()
  34.  
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CDriverDoc construction/destruction
  37.  
  38. CDriverDoc::CDriverDoc()
  39. {
  40.     try 
  41.     {
  42.         // Will create whether in- or out-of-proc
  43.         HRESULT hr = m_map.CreateInstance(__uuidof(CVariantMap));
  44.         if (FAILED(hr)) 
  45.             _com_issue_error(hr);
  46.     }
  47.     catch (_com_error& e)
  48.     {
  49.         dump_com_error(e);
  50.         AfxMessageBox(IDP_UNABLE_TO_CREATE_INPROC);
  51.         AfxThrowUserException();
  52.     }
  53.     catch (...)
  54.     {
  55.         AfxMessageBox(IDP_UNABLE_TO_CREATE_INPROC);
  56.         AfxThrowUserException();
  57.     }
  58. }
  59.  
  60. CDriverDoc::~CDriverDoc()
  61. {
  62.     m_map.Release();
  63. }
  64.  
  65. BOOL CDriverDoc::OnNewDocument()
  66. {
  67.     if (!CDocument::OnNewDocument())
  68.         return FALSE;
  69.  
  70.     // TODO: add reinitialization code here
  71.     // (SDI documents will reuse this document)
  72.  
  73.     return TRUE;
  74. }
  75.  
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CDriverDoc serialization
  78.  
  79. void CDriverDoc::Serialize(CArchive& ar)
  80. {
  81.     if (ar.IsStoring())
  82.     {
  83.         // TODO: add storing code here
  84.     }
  85.     else
  86.     {
  87.         // TODO: add loading code here
  88.     }
  89. }
  90.  
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CDriverDoc diagnostics
  93.  
  94. #ifdef _DEBUG
  95. void CDriverDoc::AssertValid() const
  96. {
  97.     CDocument::AssertValid();
  98. }
  99.  
  100. void CDriverDoc::Dump(CDumpContext& dc) const
  101. {
  102.     CDocument::Dump(dc);
  103. }
  104. #endif //_DEBUG
  105.  
  106. /////////////////////////////////////////////////////////////////////////////
  107. // CDriverDoc commands
  108.