响应AutoCAD消息

 
 
 
AAutoCAD 传递给ObjectARX应用程序的消息有四类:
传送给所有应用程序的消息.
仅当应用程序使用acedDefun()注册AutoLISP函数时传送的消息
传递给用ObjectARX已经注册服务的应用程序消息
只对使用ActiveX控件的应用程序需要作出响应的消息
下面五个表分别介绍了AutoCAD传送给ObjectARX应用程序的消息.下表列举了传送给所有应用程序的消息.
发送给所有应用程序
消息
说明
贝格尔
kInitAkInitAppMsg
当ObjectARX应用程序被加载并打开AutoCAD和应用程序之间通信时发送的消息.
kUnloadAppMsg
当ObjectARX应用程序被卸载时(当卸载应用程序或退出AutoCAD时)发送该消息.关闭文件并清除操作
kLoadDwgMsg
当打开图形时发送该消息.然后,如果应用程序使用AutoLISP注册函数时,AutoCAD向调入编辑器的每一个图形发送该消息.此时,AutoCAD编辑器已被完全初始化,所有全局函数都可用. 但是,在kLoadDwgMsg时不能使用acedCommand()函数
kSaveMsg
当输入了SAVEAS、NEW或OPEN命令后,在AutoCAD保存图形时发送该消息
kUnloadDwgMsg
当退出图形窗口时发送该消息
kPreQuitMsg
当退出AutoCAD时,在开始卸载所有ObjectARX应用程序之前发送该消息.
x下表列出了应用程序使用acedDefun()注册AutoLISP函数时,AutoCAD发送给应用程序的消息
使用AutoLISP函数时发送的消息
消息
说明
kInvkSubrMsg
当使用acedDefun()调用函数注册时发送此消息
kEndMsg
只有当图形被修改,输入END命令后,需要保存时(当dbmode不为0)发送此消息.对NEW或OPEN命令,不发送此消息,而发送kSaveMsg和kLoadDwgMsg.对END命令,如果dbmode为0,则发送kQuitMsg,而不是kEndMsg.
(2000后END命令停止使用)
kQuitMsg
当输入QUIT命令后AutoCAD退出(退出但不存盘)时发送该消息.
领袖性格注释: kQuitMsg消息发送与KPreQuitMsg消息之前.
kCfgMsg
只有当改变了显示驱动程序,AutoCAD从配置程序返回时发送该消息.
下表列出了如果使用ObjectARX已注册一个服务时应用程序收到的消息.
应用程序注册服务时收到的消息
消息
说明
kDependencyMsg
当ObjectARX应用程序已经注册了一个AcRxService对象,并且该服务的从属计数器从0变为1时发送该消息
 
kNoDependencyMsg
当ObjectARX应用程序已经注册了一个AcRxService对象,并且该服务的从属计数器从1变为0时发送该消息.
下表列出了如果应用程序使用ActiveX Automation时需要响应的消息.
使用ActiveX Automation时需要响应的消息
泰州pm2.5
消息
说明
kOleUnloadAppMsg
确定应用程序是否可以被卸载时发送该消息(没有其他应用程序引用ActiveX对象或界面).
在rxdefs.件中,AppMsgCode类说明定义了这些枚举常量.
我们必须确定ObjectARX应用程序将对哪一个消息作出响应.下表介绍了收到每一个消息后的推荐操作内容
收到消息后的操作
家校互动上海
消息
gapdh
操作
kInitAppMsg
允许注册服务、类、AcEd命令及反应器和AcRxDymicLinker反应器;初始化应用程序系统资源,如设备和窗口;执行所用初始化工作;AcRx、AcEd和AcGe都被激活;如果想解锁和锁定其应用程序时,保存pkt参数值.
不允许初始化设备驱动程序、激活任意接口资源,以特殊的顺序加载应用程序、调用AutoLISP或者打开任意数据库.否则会引起错误甚至导致系统崩溃.虽然有关的Ac结Rx和其他结构被激活,但AcDb和AcGi库通常尚未被激活 .
kUnloadAppMsg
允许执行最后系统资源清理工作,任何在kInitAppMsg中开始或创建对象,应当在此处停止或析构.
不要除在kIniAppMsg中激活库外,当调用了该消息时,AutoCAD通常被卸载 .
kOleUnloadAppMsg
姆拉迪奇
允许只有使用ActiveX的应用程序响应此消息.
不允许:如果应用程序可以被卸载(没有其他应用程序引用该应用程序的ActiveX对象或界面).以AcRx::kRetOK回应.如果应用程序不能被卸载,则以AcRx::kRetError回应
kLoadDwgMsg
执行有关当前图编辑会话的初始化。AcDb、AcGi和用户接口API都在此时激活.所有AutoCAD提供的API被激活.我们可在此时执行AutoLISP函数注册,并初始化用户接口.此时进行其他操作,包括检查AutoCAD驱动程序.如果用户想尽早的访问acdbHostApplicationServices()->workingDatabase(),可以查询AcEditorRector事件
不允许:对每个图形编辑会话不需要任何处理,不只一次向每个程序执行传送该消息.
kUnloadDwgMsg
释放或清除响应kLoadDwgMsg消息时开始或注册的所有工作.释放所有AcDb反应器,清除持久反应器.
不允许:释放与当前编辑会话无关的系统资源,或清除AcRx类、AcEd反应器或命令;他们在编辑会话之间保持有效.
kDependencyMsg
如果其他应用程序依赖于我们的应用程序,执行所有对应用程序必须的操作,如锁定应用程序使它不能被卸载.
kNoDependencyMsg
如果其他应用程序不依赖于我们的应用程序,执行所有对应用程序必须的操作,如解锁应用程序,使它在用户需要时可以被卸载.
kInvkSubrMsg
调用acedDefun()注册的函数,调用acedGetFundode()确定函数,用acedRetxxx()返回结果.
不允许:除了函数调用外的任何操作.
kPreQuitMsg
卸载应用程序的调用的附属(应用程序、DLL,等等)确保它们能在应用程序卸载之前被卸载.
kEndMsg
kCfgMsg
kQuitMsg
kSaveMsg
使用AcEdEditorReactor事件回调作为对这些消息的响应.
不允许:如果我们正在对响应通过AcEditorReactor进行等价事件回调时,响应这些消息.

本文发布于:2024-09-22 04:18:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/118829.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:应用程序   消息   发送   注册   响应   使用   卸载   操作
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议