[!if RIBBON_TOOLBAR] // 这段 MFC 示例源代码演示如何使用 MFC Microsoft Office Fluent 用户界面 // (“Fluent UI”)。该示例仅供参考, // 用以补充《Microsoft 基础类参考》和 // MFC C++ 库软件随附的相关电子文档。 // 复制、使用或分发 Fluent UI 的许可条款是单独提供的。 // 若要了解有关 Fluent UI 许可计划的详细信息,请访问 // https://go.microsoft.com/fwlink/?LinkId=238214. // // 版权所有(C) Microsoft Corporation // 保留所有权利。 [!endif] // $dialogautoproxyimpl$: 实现文件 // #include "pch.h" #include "framework.h" #include "$appheader$" #include "$dialogautoproxyheader$" #include "$dialogheader$" #ifdef _DEBUG #define new DEBUG_NEW #endif // $dialogautoproxyclass$ IMPLEMENT_DYNCREATE($dialogautoproxyclass$, $dialogautoproxybaseclass$) $dialogautoproxyclass$::$dialogautoproxyclass$() { EnableAutomation(); // 为使应用程序在自动化对象处于活动状态时一直保持 // 运行,构造函数调用 AfxOleLockApp。 AfxOleLockApp(); // 通过应用程序的主窗口指针 // 来访问对话框。 设置代理的内部指针 // 指向对话框,并设置对话框的后向指针指向 // 该代理。 ASSERT_VALID(AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd) { ASSERT_KINDOF($dialogclass$, AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS($dialogclass$))) { m_pDialog = reinterpret_cast<$dialogclass$*>(AfxGetApp()->m_pMainWnd); m_pDialog->m_pAutoProxy = this; } } } $dialogautoproxyclass$::~$dialogautoproxyclass$() { // 为了在用 OLE 自动化创建所有对象后终止应用程序, // 析构函数调用 AfxOleUnlockApp。 // 除了做其他事情外,这还将销毁主对话框 if (m_pDialog != nullptr) m_pDialog->m_pAutoProxy = nullptr; AfxOleUnlockApp(); } void $dialogautoproxyclass$::OnFinalRelease() { // 释放了对自动化对象的最后一个引用后,将调用 // OnFinalRelease。 基类将自动 // 删除该对象。 在调用该基类之前,请添加您的 // 对象所需的附加清理代码。 $dialogautoproxybaseclass$::OnFinalRelease(); } BEGIN_MESSAGE_MAP($dialogautoproxyclass$, $dialogautoproxybaseclass$) END_MESSAGE_MAP() BEGIN_DISPATCH_MAP($dialogautoproxyclass$, $dialogautoproxybaseclass$) END_DISPATCH_MAP() // 注意: 我们添加了对 IID_I$safeprojectidentifiername$ 的支持来支持类型安全绑定 // 以支持来自 VBA 的类型安全绑定。 此 IID 必须同附加到 .IDL 文件中的 // 调度接口的 GUID 匹配。 // {$guid_disp_iid$} static const IID IID_I$safeprojectidentifiername$ = $guid_disp_iid_staticconst$; BEGIN_INTERFACE_MAP($dialogautoproxyclass$, $dialogautoproxybaseclass$) INTERFACE_PART($dialogautoproxyclass$, IID_I$safeprojectidentifiername$, Dispatch) END_INTERFACE_MAP() // IMPLEMENT_OLECREATE2 宏是在此项目的 pch.h 中定义的 // {$guid_app_clsid$} IMPLEMENT_OLECREATE2($dialogautoproxyclass$, "$safeprojectidentifiername$.Application", $guid_app_clsid_olecreate$) // $dialogautoproxyclass$ 消息处理程序