使用VisualC 创建ARX程序(1)教程

0小峫0

0小峫0

2016-03-18 15:34

下面图老师小编跟大家分享使用VisualC 创建ARX程序(1)教程,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

本小节通过一个简单的实例来讲述ARX程序的创建过程,介绍编制ObjectARX程序的一些基本街韬驮颍⒊醪搅私釧RX程序与AutoCAD进行通讯的方式。如同学习其它计算机语言一样,我们首先来创建一个最简单的ARX程序—“Hello.ARX”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,ObjectARX!”。

38.2.1建立ARX程序的基本步骤

由于ARX程序是一种可以共享AutoCAD地址空间并对AutoCAD进行直接调用的动态链接库,因此应该按照下列基本步骤建立ARX程序:
(1)创建自定义类来实现新的命令:用户可以从ARX类层次关系中的大多数类和符号表类中派生自己的类。

(2)决定ARX程序应该响应的AutoCAD消息:AutoCAD通过向ARX程序发出一系列的消息指明在它内部发生的特殊事件,ARX程序必须对其中的某些消息作出反映,并触发相应的操作。

(3)实现应用程序与AutoCAD通信的入口:AutoCAD通过函数acrxEntryPoint()来调用ARX程序,而不是象普通的C 程序那样使用main()函数。函数acrxEntryPoint()中可以用switch语句处理AutoCAD的各种返回信息,根据不同信息执行不同的函数,并返回状态码。如果针对特定的消息返回出错代码,则必须用case语句来处理。最后,必须用AcRx::kRetOk作为函数acrxEntryPoint()的最终返回值。

(4)完成ARX程序的初始化:用户必须在acrxEntryPoint()函数的AcRx::kInitAppMsg事件中或者该事件调用的函数(例如:initApp()函数)中,对程序中自定义的所有类进行初始化,然后调用acedRegCmds-addCommand()函数在AutoCAD命令堆栈中注册新命令。

(5)实现卸载(Unload)功能:用户必须在acrxEntryPoint()函数的AcRx::kUnloadAppMsg事件中或者该事件调用的函数(例如:unloadApp()函数)中,调用acedRegCmds-removeGroup()函数将initApp()函数中注册的新命令组从AutoCAD命令堆栈中清除,调用deleteAcRxClass()函数清除程序中自定义的任何类,然后删除所有由应用程序添加到AutoCAD中的对象,并清除所有与AcDbObject、AcDbDatabase、AcRxDynamicLinker或AcEditor对象相关联的事件反应器。

注意缺省情况下,ARX程序处于被锁定状态而不能被卸载,如果要使ARX程序可以被卸载,需保存由AcRx::kInitAppMsg传送的appId参数,由unlockApplication()函数调用,见acrxEntryPoint()函数注释。

38.2.2AutoCAD与ARX程序之间的消息传递

AutoCAD向ARX程序发送四类消息:

(1)发送给所有ARX程序的消息:kInitAppMsg、kUnloadAppMsg、kLoadDwgMsg、kPreQuitMsg。

(2)只发送给通过调用acedDefun()函数注册AutoLISP函数的ARX程序的消息:kUnloadDwgMsg、kInvkSubrMsg、kEndMsg、kQuitMsg、kSaveMsgkCfgMsg。

(3)只发送给注册service对象的ARX程序的消息:kDependencyMsg、kNoDependencyMsg。

(4)只发送给使用ActiveX控件对象的ARX程序的消息:kOleUnloadAppMsg。

普通的ARX程序仅需要响应消息kInitAppMsg和kUnloadAppMsg,这两种消息的含义和ARX程序对它们的响应方式为:

(1)消息kInitAppMsg:当AutoCAD加载ObjectARX应用程序并开始进行与应用程序的通信时发送此消息。

对于此消息,ARX程序应该注册服务对象、类、AcEd命令和事件反应器,以及AcRxDynamicLinker类事件反应器,初始化应用程序的系统资源(如设备、窗口),并执行简单的初始化操作;这时,AcRx、AcEd和AcGe类库都应该被激活;如果需要对应用程序进行解锁或重新加锁操作,还应该保存pkt参数。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/autocad/)

但是这里不能进行下列操作:初始化设备驱动程序、激活用户界面资源、按特殊顺序加载应用程序、执行AutoLISP程序以及打tulaoshi.com开任何数据库,否则将导致错误发生或者系统崩溃;AcDb和AcGi类库也不能在这里激活,尽管它们与AcRx和其它结构有联系。

(2)消息kUnloadAppMsg:当ObjectARX程序被卸载时(由用户卸载或者AutoCAD程序终止时),AutoCAD发送此消息,关闭当前文件并执行清除操作。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/autocad/)

对于此消息,ARX程序应该清除所有系统资源,所有对kInitAppMsg消息所做的初始化等工作都应该在这里被终止或者析构。AutoCAD不会自动解除初始化所做的工作。

38.2.3实例1最简单的ARX程序——“Hello.ARX”

Hello.ARX是最简单的ARX程序,但是麻雀虽小,五脏俱全,它是进一步学习编写复杂程序的基础,现在请大家和我来一步步的完成它,具体过程如下:

Step1创建工程

(1)运行VisualC 6.0,选择菜单命令【File】→【New…】,弹出“New”对话框。

(2)在“New”对话框中选择“Projects”选项卡。

(3)在“Projects”选项卡中选择“Win32Dynamic-LinkLibrary”项。

(4)输入程序名称“Hello”和存放目录,并确认“Platforms:”内选中“Win32”。

(5)完成以上步骤后(如图38-2所示),单击OK按钮,并在下一提示对话框中单击Finishig按钮来建立一个空的DLL工程。

Step2建立源文件“Hello.cpp”

(1)选择菜单命令【File】→【New…】,弹出“New”对话框。

(2)在“New”对话框中选择“Files”选项卡。

(3)在“Files”选项卡中选择“C SourceFile”项。

(

12下一页
展开更多 50%)
分享

猜你喜欢

使用VisualC 创建ARX程序(1)教程

autocad教程
使用VisualC 创建ARX程序(1)教程

使用VisualC 创建ARX程序(2)教程

autocad教程
使用VisualC 创建ARX程序(2)教程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用VisualC 创建ARX程序(3)教程

autocad教程
使用VisualC 创建ARX程序(3)教程

使用VBA创建应用程序教程

autocad教程
使用VBA创建应用程序教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

AutoCAD中使用VBA创建应用程序教程

autocad教程
AutoCAD中使用VBA创建应用程序教程

使用VBA创建应用程序

autocad教程
使用VBA创建应用程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Painter 8 自定义图案(1)

Painter 8 自定义图案(1)

Freehand 10 基本操作

Freehand 10 基本操作
下拉加载更多内容 ↓