使用 MFC 资源向导创建一个新对话框。从 MFC 对话框基类为其派生一个新类,例如。应创建一个占位符控件(如列表框),该控件将在创建属性检查器控件时替换为该控件。使用要用于显示属性检查器控件的相同位置和矩形尺寸。CDialog 添加以下受保护的成员变量以保存指向 PropertyInspector ActiveX 控件的指针: CComPtr<IPropertyInspector> mpInspector; 若要支持此控件,请包括AcPi.h文件。此生成的 IDL 文件包含所有属性检查器接口的声明。在对话框的实现文件中,将包含AcPi_i.c文件,用于定义属性检查器接口的 GUID。 此外,还需要以下受保护成员充当属性检查器控件的容器: CWnd* CWnd* mpInspectorWnd; 基本对话框初始化由 MFC 项目向导为您完成。您无需实现消息处理程序即可了解本练习的重点。同样,默认实现就足够了,因为属性检查器接口和控件(而不是 MFC)将处理此应用程序中的数据显示和更新。DoDataExchange() 除了基本的 MFC 设置之外,还必须实例化属性检查器控件并设置初始化它所需的数据结构。这可以在您的覆盖中完成。在此函数中,应将前面创建的对话框占位符控件替换为属性检查器控件。从占位符获取窗口尺寸并将其应用于新的属性检查器实例后,可以放弃占位符。CDialog::InitDialog() 若要创建属性检查器控件,请首先初始化成员以指向新对象。然后,使用属性检查器控件的 CLSID 作为其第一个参数进行调用。若要设置属性检查器窗口的大小以匹配对话框设计,请将占位符的矩形坐标作为 rect 参数传递。mpInspectorWndCWndmpInspectorWnd->CreateControl() 最后,将占位符控件的 ID 作为参数传递。参数告诉 Windows 使用什么 ID 来查找窗口。您还可以将新窗口配置为通过调用来响应此 ID。属性检查器控件现在假定 ID 是它自己的。此序列实例化属性检查器 ActiveX 控件,并替换对话框中的占位符。nIDnIDSetWindowLongPtr()IDC_PI_PLACEHOLDER mpInspectorWnd = new CWnd; ASSERT(mpInspectorWnd != NULL); CWnd* pWnd = GetDlgItem(IDC_PI_PLACEHOLDER); CRect rect; pWnd->GetWindowRect(&rect); ScreenToClient(&rect); mpInspectorWnd->CreateControl(CLSID_PropertyInspector, NULL, WS_CHILD | WS_TABSTOP | WS_VISIBLE, rect, this, IDC_PI_PLACEHOLDER); SetWindowLong(mpInspectorWnd->m_hWnd, GWL_ID, IDC_PI_PLACEHOLDER); |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:36
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.