// [!output DIALOG_AUTO_PROXY_IMPL] : 实现文件 // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output DIALOG_AUTO_PROXY_HEADER]" #include "[!output DIALOG_HEADER]" #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output DIALOG_AUTO_PROXY_CLASS] IMPLEMENT_DYNCREATE([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) [!output DIALOG_AUTO_PROXY_CLASS]::[!output DIALOG_AUTO_PROXY_CLASS]() { EnableAutomation(); // 为使应用程序在自动化 // 对象处于活动状态时一直保持运行,构造函数调用 AfxOleLockApp。 AfxOleLockApp(); // 通过应用程序 // 的主窗口指针来访问对话框。设置代理的内部指针 // 指向对话框,并设置对话框的后向指针指向 // 该代理。 ASSERT_VALID(AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd) { ASSERT_KINDOF([!output DIALOG_CLASS], AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS([!output DIALOG_CLASS]))) { m_pDialog = reinterpret_cast<[!output DIALOG_CLASS]*>(AfxGetApp()->m_pMainWnd); m_pDialog->m_pAutoProxy = this; } } } [!output DIALOG_AUTO_PROXY_CLASS]::~[!output DIALOG_AUTO_PROXY_CLASS]() { // 为了在用 OLE 自动化创建所有对象后终止应用程序, // 析构函数调用 AfxOleUnlockApp。 // 除了做其他事情外,这还将销毁主对话框 if (m_pDialog != NULL) m_pDialog->m_pAutoProxy = NULL; AfxOleUnlockApp(); } void [!output DIALOG_AUTO_PROXY_CLASS]::OnFinalRelease() { // 释放了对自动化对象的最后一个引用后,将调用 // OnFinalRelease。基类将自动 // 删除该对象。在调用该基类之前,请添加您的 // 对象所需的附加清除代码。 [!output DIALOG_AUTO_PROXY_BASE_CLASS]::OnFinalRelease(); } BEGIN_MESSAGE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_MESSAGE_MAP() BEGIN_DISPATCH_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_DISPATCH_MAP() // 注意: 我们添加了对 IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] 的支持 // 以支持来自 VBA 的类型安全绑定。此 IID 必须与附加在 .IDL 文件中的 // 调度接口的 GUID 匹配。 // {[!output DISPIID_REGISTRY_FORMAT]} static const IID IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] = [!output DISPIID_STATIC_CONST_GUID_FORMAT]; BEGIN_INTERFACE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) INTERFACE_PART([!output DIALOG_AUTO_PROXY_CLASS], IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME], Dispatch) END_INTERFACE_MAP() // IMPLEMENT_OLECREATE2 宏在此项目的 StdAfx.h 中定义 // {[!output APP_CLSID_REGISTRY_FORMAT]} IMPLEMENT_OLECREATE2([!output DIALOG_AUTO_PROXY_CLASS], "[!output SAFE_PROJECT_IDENTIFIER_NAME].Application", [!output APP_CLSID_IMPLEMENT_OLECREATE_FORMAT]) // [!output DIALOG_AUTO_PROXY_CLASS] 消息处理程序