天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 66|回复: 0

响应AutoCAD消息

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
响应AutoCAD消息



AutoCAD 传递给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应用程序之前发送该消息.
下表列出了应用程序使用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时需要响应的消息
消息        说明
kOleUnloadAppMsg        确定应用程序是否可以被卸载时发送该消息(没有其他应用程序引用ActiveX对象或界面).
在rxdefs.h文件中,AppMsgCode类说明定义了这些枚举常量.
我们必须确定ObjectARX应用程序将对哪一个消息作出响应.下表介绍了收到每一个消息后的推荐操作内容
收到消息后的操作
消息        操作
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进行等价事件回调时,响应这些消息.

 

 

 

 

响应AutoCAD消息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:22 , Processed in 0.138794 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表