ObjectARX 2026(C++):创建对话框

最近更新于 2025-08-08 12:49

前言

ObjectARX 中的通用对话框主要使用 CAcUiDialog,它最顶层是继承自 MFC 的 CDialog,用方法和原生 MFC 差不多。
file

测试环境

Windows 11
Visual Studio 2022(ISO C++14)
环境配置:https://blog.iyatt.com/?p=21187

示例

创建项目

创建 ARX 项目 MfcDialog,勾选 MFC 支持
file
file

添加对话框

添加对话框资源

在项目名称上右键,添加资源
file

新建 Dialog
file

展开右侧工具箱,拖 1 个 Button 按钮进去,按钮上右键属性,修改描述文字为“你好,世界”,可以看到按钮上的文字改了
file

在资源视图下展开到对话框,可以看到添加的对话框资源的 ID 为:IDD_DIALOG1,后面绑定到代码里要使用这个 ID
file

为对话框添加关联类

在项目名称上右键,添加新建项
file

左侧选 ObjectARX,然后选里面的 ArxWizMFCSupport,最后点添加
file

类名可填:MfcDialog,基类选:CAcUiDialog,对话框 ID 选前面添加的 IDD_DIALOG1。头文件扩展名我的习惯是 C++ 中使用 .hpp,以和 C 语言区分
file

添加对话框功能实现代码

在类视图下,MfcDialog 类上右键属性
file

点击图标切换到重写选项
file

添加 OnInitDialog 方法
file

添加代码

    SetWindowText(L"MFC 对话框示例");

file

资源视图下双击对话框的 ID,切换到对话框视图,在按钮上右键添加事件处理程序
file

选 MfcDialog 类,消息选 BN_CLICKED 单击
file

添加代码

    acedAlert(L"你好,世界!");

file

调用对话框

类视图下双击切换到 CMfcDialogApp 类
file

引用对话框头文件 MfcDialog.hpp
file

在 On_kInitAppMsg 方法里添加代码

        CAcModuleResourceOverride resOveride; // 切换资源到当前扩展程序
        MfcDialog* pDlg = new MfcDialog(acedGetAcadFrame());
        if (pDlg->Create(MfcDialog::IDD, acedGetAcadFrame()))
        {
            pDlg->ShowWindow(SW_SHOW);
        }

file

运行测试

file

点击按钮弹出消息框
file

ObjectARX 2026(C++):创建对话框
Scroll to top
打开目录