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

对话框与窗口

开发平台:

Visual C++

  1. // [!output DIALOG_AUTO_PROXY_IMPL] : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "[!output APP_HEADER]"
  5. #include "[!output DIALOG_AUTO_PROXY_HEADER]"
  6. #include "[!output DIALOG_HEADER]"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // [!output DIALOG_AUTO_PROXY_CLASS]
  11. IMPLEMENT_DYNCREATE([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS])
  12. [!output DIALOG_AUTO_PROXY_CLASS]::[!output DIALOG_AUTO_PROXY_CLASS]()
  13. {
  14. EnableAutomation();
  15. // To keep the application running as long as an automation
  16. //  object is active, the constructor calls AfxOleLockApp.
  17. AfxOleLockApp();
  18. // Get access to the dialog through the application's
  19. //  main window pointer.  Set the proxy's internal pointer
  20. //  to point to the dialog, and set the dialog's back pointer to
  21. //  this proxy.
  22. ASSERT_VALID(AfxGetApp()->m_pMainWnd);
  23. if (AfxGetApp()->m_pMainWnd)
  24. {
  25. ASSERT_KINDOF([!output DIALOG_CLASS], AfxGetApp()->m_pMainWnd);
  26. if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS([!output DIALOG_CLASS])))
  27. {
  28. m_pDialog = reinterpret_cast<[!output DIALOG_CLASS]*>(AfxGetApp()->m_pMainWnd);
  29. m_pDialog->m_pAutoProxy = this;
  30. }
  31. }
  32. }
  33. [!output DIALOG_AUTO_PROXY_CLASS]::~[!output DIALOG_AUTO_PROXY_CLASS]()
  34. {
  35. // To terminate the application when all objects created with
  36. //  with automation, the destructor calls AfxOleUnlockApp.
  37. //  Among other things, this will destroy the main dialog
  38. if (m_pDialog != NULL)
  39. m_pDialog->m_pAutoProxy = NULL;
  40. AfxOleUnlockApp();
  41. }
  42. void [!output DIALOG_AUTO_PROXY_CLASS]::OnFinalRelease()
  43. {
  44. // When the last reference for an automation object is released
  45. // OnFinalRelease is called.  The base class will automatically
  46. // deletes the object.  Add additional cleanup required for your
  47. // object before calling the base class.
  48. [!output DIALOG_AUTO_PROXY_BASE_CLASS]::OnFinalRelease();
  49. }
  50. BEGIN_MESSAGE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS])
  51. END_MESSAGE_MAP()
  52. BEGIN_DISPATCH_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS])
  53. END_DISPATCH_MAP()
  54. // Note: we add support for IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] to support typesafe binding
  55. //  from VBA.  This IID must match the GUID that is attached to the
  56. //  dispinterface in the .IDL file.
  57. // {[!output DISPIID_REGISTRY_FORMAT]}
  58. static const IID IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] =
  59. [!output DISPIID_STATIC_CONST_GUID_FORMAT];
  60. BEGIN_INTERFACE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS])
  61. INTERFACE_PART([!output DIALOG_AUTO_PROXY_CLASS], IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME], Dispatch)
  62. END_INTERFACE_MAP()
  63. // The IMPLEMENT_OLECREATE2 macro is defined in StdAfx.h of this project
  64. // {[!output APP_CLSID_REGISTRY_FORMAT]}
  65. IMPLEMENT_OLECREATE2([!output DIALOG_AUTO_PROXY_CLASS], "[!output SAFE_PROJECT_IDENTIFIER_NAME].Application", [!output APP_CLSID_IMPLEMENT_OLECREATE_FORMAT])
  66. // [!output DIALOG_AUTO_PROXY_CLASS] message handlers