CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

对话框创建和初始化

2022-12-31 11:02| 发布者: admin| 查看: 221| 评论: 0|来自: AutoCAD

使用 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);

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 11:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部