




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ObjectARX 开发环境下的开发环境下的 AutoCAD 对话框设计对话框设计 袁梅 李亚萍 张竟 武汉大学城市建设学院 湖北 武汉 430072 摘要摘要 在 ObjectARX 开发环境下 AutoCAD 支持两种格式的对话框 PDB 对话框和 Windows 机制的对话框 从简单实例出发 本文介绍了这两种格式的对话框设计 关键词关键词 ObjectARX AutoCAD PDB MFC 对话框 1 引言引言 ObjectARX 是 Autodesk 公司为 AutoCAD 配置的面向对象的 C 编程环境 在 ObjectARX 环境下开发的应用程序本质上是一个 Windows 环境下的动态连接库 DLL 它 共享 AutoCAD 的地址空间并能直接利用 AutoCAD 核心数据库结构和代码 能在运行期间 实时扩展 AutoCAD 的功能 由于其功能强大 速度快 安全性好 目前已成为 AutoCAD 最重要的开发工具 在 CAD 软件开发中 对话框的设计是软件开发者非常关心的问题之一 AutoCAD 除 了使用命令行与用户进行交互外 还可使用对话框 对话框是一种边界固定的窗口 也是 一种最先进 最流行的人机交互界面 运用对话框可以方便地实现程序设计时的数据传输 和信息传输 所以在当今的几乎所有的软件都要用到对话框界面与用户交流 在 CAD 的 二次开发中 可以采用两种方式使用对话框技术 一种是 PDB 格式 即使用 AutoCAD 系 统本身提供的可编程对话框技术 另一种是使用 Windows 机制的对话框设计技术 以下分别介绍了以 ObjectARX 为开发工具 在 Visual C 6 0 集成开发环境中 AutoCAD2000 的这两种格式的对话框设计 2 基于基于 AutoCAD PDB 的对话框设计的对话框设计 PDB 是可编程对话框 Programmable Dialog Box 的缩写 是从 R12 开始提供的一种 用于与用户交互的可视化界面 开发 PDB 对话框的关键有两个 一是掌握 DCL 语言 二是 编写 ObjectARX 驱动程序 许多已使用 DCL 对话框的 ADS 程序 只需对编程接口稍作修 改就可移植到 AutoCAD2000 平台上 并且 ObjectARX 2000 向下兼容 ADS 提供了与之对 应的全局函数 ADSRX 因此完全可在 ObjectARX2000 中采用 ADSRX 函数进行开发 PDB 对话框由对话框定义文件和驱动程序两部分组成 对话框定义文件用于定义对话 框的外观 包括对话框的风格 位置 尺寸 内部控件及控件初值等 对话框驱动程序用 于管理对话框的显示 与用户的交互 关闭以及获取对话框中控件值 2 1 对话框定义文件对话框定义文件 对话框定义文件是一种文本文件 其后缀为 dcl 它借助对话框控制语言 Dialog Control Language 简称 DCL 来定义对话框的外观 DCL 是 Autodesk 公司创建的专门用 于生成对话框的命令语言 在用 DCL 定义对话框时 对话框中的单一部件称为 控件 控件的布局 外观和行为借助于控件的属性而规定 对话框采用树型层次结构表示法 树 的根节点为对话框本身 在 DCL 中称为 dialog 树的叶节点可由各种控件和控件组构成 装配这些控件的过程就是定义对话框的过程 对话框是控件的有机组合 AutoCAD PDB 模块提供了各种预定义的控件 控件组 以及控件的属性 事实上 编写 DCL 文件就是调 用这些控件 并设置控件的属性 下面给出图 1 所示对话框的 DCL 文件 Mypdb dcl dcl settings default dcl settings audit level 0 Mypdb dialog 定义名为 Mypdb 的对话框 label PDB 对话框示例 对话框标签 row 定义一个行控件 boxed column 定义一个带框列控件 label 请输入岔管参数 带框列标签 edit box 定义一个编辑框 label 主管进口半径 R1 编辑框的标签 key K1 编辑框的关键字 由驱动程序使用 定义其它几个编辑框 代码略 image 定义一个图象控件 key image width 25 height 9 color graphics background ok cancel 定义 OK 和 CANCEL 按钮 MYPDB DCL 文件结束 其中 OK CANCEL 按钮是从 AutoCAD 的 BASIC DCL 中自动引用来的按钮 对话框定义文件可用 任意文本编辑器进行编辑 也可在 Visual C 集成开发 环境中 单击 File NEW 菜 单 在弹出的对话框中选择 File 选项卡 选择 Text File 不要核选 Add to project 项 输入 文件名为 Mypdb dcl 存放 位置可选与对话框驱动程序 所在的项目文件路径相同 单击 OK 2 2 驱动程序驱动程序 对话框必须利用驱动程序才能发挥作用 驱动程序由主调用函数和回调函数组成 主 调用函数用于装入 显示 交互以及清除对话框 回调函数一般用于对对话框中各控件的 值进行提取等操作 ObjectARX 提供了一系列用于操作 AutoCAD PDB 对话框的库函数 它们均以 ads 开头 主调用函数与 ObjectARX 应用程序中的用户函数融为一体 在需要对 话框的位置上 加入调用对话框及处理对话框结果的相关函数即可 回调函数一般单独给 出 专用于操作对话框中的各控件 常常在函数名前加 CALLB 以示区别 CALLB 实际上 是一个空字符 并且它的返回值为 void 一般对应于一个对话框有多个回调函数 下面给出图 1 所示对话框的驱动程序 Mypdb cpp int drive main ads hdlg hdlg 定义对话框句柄 int dcl id 对话框文件标识符 int dlg status 对话框的状态值 ads load dialog Mypdb dcl 将对话框文件 Mypdb dcl 调入内存 ads new dialog Mypdb dcl id CLIENTFUNC 0 显示对话框 ads action tile hdlg accept CLIENTFUNC ok cb 将 OK 按钮与回调函数 ok cb 相关联 ads dimensions tile hdlg image 显示幻灯片 ads start image hdlg image ads slide image 0 0 sht1 5 sht2 5 msld 幻灯片名为 MSLD SLD ads end image ads start dialog hdlg 启动对话框 让用户与对话框进行交互 ads unload dialog dcl id 从内存中卸掉对话框文件 if dlg status DLGOK return RTERROR return RTNORM void CALLB ok cb ads callback packet cpkt 回调函数 char tbuf 80 ads get tile cpkt dialog K1 tbuf MAX TILE STR R1 atof tbuf 字符串转化为双精度浮点数 acutPrintf n R1 f R1 获取各控件的值 送入相应的变量 ads done dialog cpkt dialog 1 正常关闭对话框 以上只给出了主调用函数 drive main 和回调函数 print cb ok cb 的部分代码 相当于 ObjectARX 应用程序中的用户程序主体函数部分 Mypdb cpp 中头文件部分 函数声明部分和接口函数部分和一般的 ObjectARX 应用程序要求相同 不再写出 必 须注意 头文件中一定要有 include adsdlg h 在 Visual C 6 0 中编译 Mypdb cpp 生成 Mypdb arx 文件 打开 AutoCAD2000 加载 Mypdb arx 文件 输入相应的外部命令 则弹出图 1 所示的对话框 在对话框中输 入参数 点击 OK 按钮 在 AutoCAD 的命令提示行会显示刚才输入的参数值 并 关闭对话框 3 基于基于 MFC 的用户界面设计的用户界面设计 Microsoft 基础类库 MFC 给软件开发者提供了一种便捷快速建立标准的用户界面的方法 ObjectARX 开发环境也提供了一系列基于 MFC 的用户界面类 我们可以使用这些类设计 Windows 风格的对话框 使用 Windows 对话框的 ObjectARX 应用程序将使自己的界面与 AutoCAD 内建对话框界面完全一致 且可与其它 Windows 应用程序紧密集成在一起 共 享 Windows 的各种资源 而且程序的维护也非常方便 在 ObjectARX 应用程序中使用 MFC 最明显的优点是可以充分利用 MSVC Microsoft Visual C 开发环境提供的先进技 术和工具 实现程序界面的可视化设计 Windows 对话框也是 Autodesk 极力推荐开发者使 用的对话框 3 1 AdUi 与与 AcUi 类库类库 在 ObjectARX 中 由 Autodesk 提供的与用户界面 UI 有关的 MFC 系统分为两个类库 一个称为 AdUi 它是一个 MFC 扩展动态链接库 用于扩展某些与 UI 有关的 MFC 类 这 个库是为了使用 AutoCAD 和其它 Autodesk 产品而开发的 它包含了核心功能 另一个称 为 AcUi 它是在 AdUi 架构基础上建立的 专门用于 AutoCAD 提供 AutoCAD 专用的外 观和特性 在使用 MFC 建立 ObjectARX 应用程序时 我们可以选择动态或静态链接 MFC 库的 方式 对于动态方式 我们可以选择常规的 DLL 方式或扩展的 DLL 方式 首选方法就是 使用动态链接的 MFC 库 并将其做成扩展 DLL 因为这是唯一可以安全使用 AdUi 和 AcUi 这两个 MFC RX 基本类库的方法 要在基于 MFC 的应用程序中使用 AdUi 和 AcUi 在 Visual C 源文件中必须包含 adui h 和 acui h 文件 链接时必须与 adui15 lib 和 acui15 lib 相链接 在建立使用 AdUi 和 AcUi 的 ObjectARX 应用程序时 关键点有三个 一是要在 Visual C 集成开发环境中生成 MFC AppWizard dll 项目类型 二是要与 MFC 动态链接 三是要在 Application Wizard 自动 创建的原代码中 手工加入与 AutoCAD 的接口语句 3 2 对话框的创建对话框的创建 利用 Visual C 提供的应用程序设计向导 Application Wizard 可以方便 快速地创建 Windows 对话框 下面以图 2 所示对话框为例 说明其创建步骤 1 创建 ObjectARX MFC 应用程序框架 首先在 VC 集成开发环境中建立项目文件 从 File 菜单中选择 New 在弹出的对话框中选择 Project 选项卡 从中选择 MFC AppWizard dll 在 Project name 编辑框中输入项目名称 Mymfc 在 Location 中输入路径 单击 OK 在随后出现的对话框中选择 MFC Extension DLL Using shared MFC DLL 单击 Finish 这样就建立了一个基本的项目框架 自 动生成了四个基本文件 Mymfc cpp Mymfc def StdAfx cpp StdAfx h 和两个资源文件 Resource h Mymfc rc 在建立了项目文件后 还需进行项目设置 以便以后能正确地 编译和链接应用程序 2 用 Visual C App Studio 创建 MFC 对话框 选择 Insert Resource 菜单项向项目文件中 加入对话框资源 在控件工具栏中选择适当的 控件资源 插入到新建的空白对话框中 调整 对话框的布局 编辑对话框及其控件的特性 3 创建对话框类和相关控件 利用 ClassWizard 创建对话框类 MymfcDlg 自动生 成对话框处理文件 MymfcDlg cpp 和 MymfcDlg h 并在出现的 MFC ClassWizard 对话框中选择 Member Variable 选项卡 为 对话框中的控件资源定义成员变量 4 创建对话框处理函数 继续在 MFC ClassWizard 对话框中选择 Message Maps 选 项卡 为不同的控件增加相关消息映射的成员函数 建立消息处理程序 MymfcDlg cpp 的 框架 5 给对话框处理函数添加代码 进入 MymfcDlg cpp 的编辑界面 将所有消息处理函 数编辑完成 并修改对话框头文件和基本文件 6 编译链接以及运行应用程序 对程序进行编译链接 生成可执行文件 Mymfc arx 在 AutoCAD2000 中装入 Mymfc arx 运行程序中定义的外部命令 MYMFC 便可显示图 2 所示对话框 3 3 ObjectARX 应用程序应用程序 通过 VC AppWizard 使用 AdUi 和 AcUi 创建的 ObjectARX 应用程序主要由三组文 件所组成 第一组是基本文件 第二组是对话框资源文件 第三组是对话框处理程序 3 3 1 基本文件包括 Mymfc cpp Mymfc def StdAfx cpp StdAfx h 四个文件 它们是 在利用 VC 的 AppWizard 建立项目文件时自动生成的 是基于 MFC 的 ObjectARX 应用 程序的基本组成部分 需对它们进行进一步修改 以为它们增加与 ObjectARX 的接口 对于 StdAfx h 文件 必须在其开头增加如下内容 ifdef DEBUG define WAS DEBUG undef DEBUG endif 在 StdAfx h 文件的末尾增加如下内容 ifdef WAS DEBUG 大致相同 define DEBUG undef WAS DEBUG endif StdAfx cpp 文件只有一个语句 不需修改 Mymfc def 文件内容与一般的 ObjectARX 应用程序一样 Mymfc cpp 文件 主要是增加与 ObjectARX 的接口语句 文件结构与普通 ObjectARX 应 用程序大致相同 但多了一个 DllMain 函数 修改过程简述如下 1 打开 Mymfc cpp 文件 删除含有 AFX EXTENSION MODULE 的一行代码 删除 整个 DllMain 函数体 在相应位置添加头文件及宏定义 include resource h include MymfcDlg h include AcExtensionModule h extern C HWND adsw acadMainWnd AC IMPLEMENT EXTENSION MODULE theArxDLL 2 建立用户函数 用以建立 AutoCAD 的外部命令 void MyDialogCreate MymfcDlg dlg CWnd FromHandle adsw acadMainWnd int nReturnValue dlg DoModal 3 增加 ObjectARX 应用程序的接口函数 initApp unloadApp acrxEntryPoint 4 增加新的 DllMain 函数 代码略 3 3 2 对话框资源文件包括三个文件 Resource h Mymfc rc 和 Mymfc rc2 它们是 在利用 AppWizard 构造对话框时自动生成的 一般不需要修改 3 3 3 对话框处理程序包括两个文件 MymfcDlg cpp 和 MymfcDlg h 在利用 AppWizard 构造对话框时自动生成的只是对话框处理程序的框架 需对这两个文件进行修 改 由于基于 MFC 的普通 Windows 应用程序的对话框是从 CDialog 类派生而来的 而基 于 MFC 的 ObjectARX 应用程序是从 CAcUiDialog 类派生的 因此应将 MymfcDlg cpp 和 MymfcDlg h 文件中的所有 CDialog 类名替换为 CAcUiDialog 类名 在 MymfcDlg h 文件中 使用 AdUi 控件类型名替换相应内容 例如将 CEdit 替换为 CAcUiNumericEdit 将 CButton 替换为 CAcUiPickButton 在文件开头部分的宏定义段加入 应用程序必须的头文件 include resource h include include include 还可根据需要增加成员变量和辅助函数 MymfcDlg cpp 是消息处理程序 在利用 MFC ClassWizard 建立完成了消息处理程序的 框架后 可向其中的消息处理函数添加代码 用以处理对话框中的控件 4 结语结语 在 ObjectARX 开发环境下 AutoCAD 支持两种格式的对话框 与 Windows 对话框相 比 PDB 对话框的优点是 1 对话框独立于 AutoCAD 的运行平台 不论是在 Windows 环境还是在 UNIX 环境下 对话框的源程序和对话框的外观均是不变的 在移植 AutoCAD 的应用程序时非常方便 2 设计和使用均较容易 不需要掌握 Windows 环境下的诸如 MFC 和类库等大量的 C 知识 只需要简单学习一下对话框控制语言 DCL 即可 3 PDB 对话框可调用幻灯片显示图形 PDB 对话框的弱点则更加明显 一是只能供 AutoCAD 应 用程序所使用 二是功能和机制上远不如 Windows 对话框 局限于用 DCL 文件形式描述 对话框 缺乏具有视觉效果的直观设计工具 不支持可视化开发 三是不能满足 Windows 操作系统下对应用程序界面一致性的要求 Autodesk 为了保护用户过去的投资利益 打算 长期支持这种格式的对话框 基于 MFC 的 Windows 对话框最明显的优点是可充分利用 Windows 资源和 MFC 类库 以及可视化编程环境 实现程序界面的可视化设计 ObjectARX 编程环境提供的与 MFC 相关的用户界面类 AdUi 和 AcUi 使我们所开发的应用程序能与 AutoCAD 风格界面很好 地融合在一起 同时用 Visual C 6 0 还可设计出更加复杂的对话框 这是 DCL 语言无法做 到的事 参考文献参考文献 1 王福军 张志民 张师伟 AutoCAD2000 环境下 C Vi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财贸系统经营管理责任制合同
- 软件测评师真题及答案
- 2025四川中铁二院招聘12人备考练习题库及答案解析
- 酒店与婚庆公司合作协议
- 2025年湖南郴州安仁县城区学校(含县三中)公开选聘202名教师考试参考试题及答案解析
- 2025年宿州泗县人民医院劳务派遣制护理工作人员招聘23名备考练习试题及答案解析
- 医疗信息考试题目及答案
- 2025年黄山黟县桃花源人才服务有限公司公开招聘劳务派遣工作人员1名备考练习试题及答案解析
- 2025中国地质调查局南京地质调查中心招聘科研助理6人(劳务派遣)考试参考试题及答案解析
- 2025年宣城市旌德县中医院招聘社会化用人5人备考练习题库及答案解析
- 现代化智能仓储物流中心建设的项目解决的方案课件
- 《真空原理简介》教学课件
- 艾滋病检测筛查实验室申请表
- 文化政策与法规课件
- 社区社群团购新团长培训案例课件
- 外科学教学课件:食管癌
- 露天矿开采技术课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案
- 部编人教版九年级上册初中历史 第1课 古代埃及 教案(教学设计)
- 钢结构钢梁计算(PPT33张)
- 幼儿教师——散文诗
- 创伤骨折院前急救ppt课件(PPT 50页)
评论
0/150
提交评论