DlgProxy.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // DlgProxy.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "tcStatic.h"
  5. #include "DlgProxy.h"
  6. #include "TcStaticDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // TcStaticDlgAutoProxy
  11. IMPLEMENT_DYNCREATE(TcStaticDlgAutoProxy, CCmdTarget)
  12. TcStaticDlgAutoProxy::TcStaticDlgAutoProxy()
  13. {
  14. EnableAutomation();
  15. // 为使应用程序在自动化对象处于活动状态时一直保持
  16. // 运行,构造函数调用 AfxOleLockApp。
  17. AfxOleLockApp();
  18. // 通过应用程序的主窗口指针
  19. // 来访问对话框。设置代理的内部指针
  20. // 指向对话框,并设置对话框的后向指针指向
  21. // 该代理。
  22. ASSERT_VALID(AfxGetApp()->m_pMainWnd);
  23. if (AfxGetApp()->m_pMainWnd)
  24. {
  25. ASSERT_KINDOF(TcStaticDlg, AfxGetApp()->m_pMainWnd);
  26. if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(TcStaticDlg)))
  27. {
  28. m_pDialog = reinterpret_cast<TcStaticDlg*>(AfxGetApp()->m_pMainWnd);
  29. m_pDialog->m_pAutoProxy = this;
  30. }
  31. }
  32. }
  33. TcStaticDlgAutoProxy::~TcStaticDlgAutoProxy()
  34. {
  35. // 为了在用 OLE 自动化创建所有对象后终止应用程序,
  36. // 析构函数调用 AfxOleUnlockApp。
  37. // 除了做其他事情外,这还将销毁主对话框
  38. if (m_pDialog != NULL)
  39. m_pDialog->m_pAutoProxy = NULL;
  40. AfxOleUnlockApp();
  41. }
  42. void TcStaticDlgAutoProxy::OnFinalRelease()
  43. {
  44. // 释放了对自动化对象的最后一个引用后,将调用
  45. // OnFinalRelease。基类将自动
  46. // 删除该对象。在调用该基类之前,请添加您的
  47. // 对象所需的附加清理代码。
  48. CCmdTarget::OnFinalRelease();
  49. }
  50. BEGIN_MESSAGE_MAP(TcStaticDlgAutoProxy, CCmdTarget)
  51. END_MESSAGE_MAP()
  52. BEGIN_DISPATCH_MAP(TcStaticDlgAutoProxy, CCmdTarget)
  53. END_DISPATCH_MAP()
  54. // 注意: 我们添加了对 IID_ItcStatic 的支持
  55. // 以支持来自 VBA 的类型安全绑定。此 IID 必须同附加到 .IDL 文件中的
  56. // 调度接口的 GUID 匹配。
  57. // {FE5F6896-4A21-46D1-B03C-A4FA6831DE93}
  58. static const IID IID_ItcStatic =
  59. { 0xFE5F6896, 0x4A21, 0x46D1, { 0xB0, 0x3C, 0xA4, 0xFA, 0x68, 0x31, 0xDE, 0x93 } };
  60. BEGIN_INTERFACE_MAP(TcStaticDlgAutoProxy, CCmdTarget)
  61. INTERFACE_PART(TcStaticDlgAutoProxy, IID_ItcStatic, Dispatch)
  62. END_INTERFACE_MAP()
  63. // IMPLEMENT_OLECREATE2 宏在此项目的 StdAfx.h 中定义
  64. // {CE2EE923-C315-4E41-A1B1-D0BA1E788B5A}
  65. IMPLEMENT_OLECREATE2(TcStaticDlgAutoProxy, "tcStatic.Application", 0xce2ee923, 0xc315, 0x4e41, 0xa1, 0xb1, 0xd0, 0xba, 0x1e, 0x78, 0x8b, 0x5a)
  66. // TcStaticDlgAutoProxy 消息处理程序