入口点函数的19种消息,AcRxArxApp只处理16种。
AcRx::AppMsgCode一共有19种消息。
但由IMPLEMENT_ARX_ENTRYPOINT宏实现的App类,只处理了16种消息。
缺:
kSuspendMsg = 16,
kInitTabGroupMsg = 17,
kEndTabGroupMsg = 18
Messages that are sent to all applications
Messages that are sent only if the application has registered an AutoLISP ® function with acedDefun()
Messages that are sent to applications that have registered a service with ObjectARX
Messages only responded to by applications that use ActiveX Automation
enum AppMsgCode {
kNullMsg = ,
kInitAppMsg = 1,
kUnloadAppMsg = 2,
kLoadDwgMsg = 3,
kUnloadDwgMsg = 4,
kInvkSubrMsg = 5,
kCfgMsg = 6,
kEndMsg = 7,
kQuitMsg = 8,
kSaveMsg = 9,
kDependencyMsg = 10,
kNoDependencyMsg = 11,
kOleUnloadAppMsg = 12,
kPreQuitMsg = 13,
kInitDialogMsg = ,
kEndDialogMsg = ,
kSuspendMsg = ,
kInitTabGroupMsg = ,
kEndTabGroupMsg =
};
这个kPreQuitMsg看起来像有用的。
官方建议在消息响应中做的操作
|
Message |
Recommended Actions |
|---|---|
|
kInitAppMsg |
Do register services, classes, AcEd commands and reactors, and AcRxDynamicLinker reactors. Initialize application's system resources, such as devices and windows. Perform all one-time early initialization. AcRx, AcEd, and AcGe are all active. Store the value of the pkt parameter if you want to unlock and relock your application. Don't expect device drivers to be initialized, any user interface resources to be active, applications to be loaded in a particular order, AutoLISP to be present, or any databases to be open. Calls involving any of these assumptions will result in an error condition, sometimes fatal. AcDb and AcGi libraries are generally not yet active, although related AcRx and other structures are in place. |
|
kUnloadAppMsg |
Do perform final system resource cleanup. Anything started or created in kInitAppMsg should now be stopped or destroyed. Don't expect things to be any different from the description of kInitAppMsg. AutoCAD could be mostly dismantled by the time this call is made, except for the libraries listed as active in the kInitAppMsg Do description. |
|
kOleUnloadAppMsg |
This message should be responded to only by applications using ActiveX Automation. Do respond with AcRx::kRetOK, if the application can be unloaded (none of its ActiveX objects or interfaces are being referenced by other applications). If it cannot be unloaded, respond with AcRx::kRetError. |
|
kLoadDwgMsg |
Do perform initialization relevant to the current drawing edit session. AcDb, AcGi, and the user interface API are all now active. Whether anything has been done to the drawing is not specified. All AutoCAD-supplied APIs are now active. You can perform AutoLISP function registration at this time, and initialize the user interface. Other operations to perform now include polling AutoCAD drivers and querying AcEditorReactor events if you want the earliest possible access to acdbHostApplicationServices()->workingDatabase(). Don't do anything you would not want to happen for every drawing edit session. Assume this message is sent more than once per program execution. |
|
kUnloadDwgMsg |
Do release or clean up everything started or registered in response to kLoadDwgMsg code. Release all AcDb reactors, excluding persistent reactors. Don't release system resources that are not tied to an edit session, or clean up AcRx classes, AcEd reactors, or commands; they remain valid across edit sessions. |
|
kDependencyMsg |
Do perform any actions that are necessary for your application when other applications become dependent on it, such as locking your application so that it cannot be unloaded. |
|
kNoDependencyMsg |
Do perform any actions that are necessary for your application when there are no longer any other applications dependent on yours, such as unlocking your application so that it can be unloaded by the user if desired. |
|
kInvkSubrMsg |
Do invoke the functions registered with acedDefun(). Determine the function by making a call to acedGetFuncode(). Return values with acedRetxxx(). Don't do much here except function invocation. |
|
kPreQuitMsg |
Do unload any dependencies (applications, DLLs, and so on) that your application controls to ensure that they are unloaded before your application. |
|
kEndMsg kCfgMsg kQuitMsg kSaveMsg |
Do consider using the AcEditorReactor event callbacks as an alternative to responding to these messages. Don't respond to these messages if you're responding to the equivalent event callbacks made through AcEditorReactor. |
入口点函数的19种消息,AcRxArxApp只处理16种。的更多相关文章
- 做推送,怎么能不了解推送的 4 种消息形式呢?( Android 篇)
极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知. 笔者将基于官方说明与个人理解来谈一下这四种消息.本篇为 Android 篇,iOS 篇入口 ...
- 做推送,怎么能不了解推送的 4 种消息形式呢?(iOS 篇)
极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知.笔者将基于官方说明与个人理解来谈一下这四种消息.本篇为 iOS 篇,Android 篇入口. ...
- MySQL 笔记整理(19) --为什么我只查一行的语句,也执行这么慢?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 19) --为什么我只查一行的语句,也执行这么慢? 需要说明一下,如果M ...
- 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型
一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...
- RabbitMQ之五种消息模型
首先什么是MQ MQ全称是Message Queue,即消息对列!消息队列是典型的:生产者.消费者模型.生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息.因为消息的生产和消费都是异步的,而 ...
- rabbitmq五种消息模型整理
目录 0. 配置项目 1. 基本消息模型 1.1 生产者发送消息 1.2 消费者获取消息(自动ACK) 1.3 消息确认机制(ACK) 1.4 消费者获取消息(手动ACK) 1.5 自动ACK存在的问 ...
- JS_Window-三种消息框:警告框、确认框、提示框、页面显示时间-计时-延时
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
随机推荐
- html 通用 遮罩弹出层 弹出后 支持跳转页面
//showMessage 提示的内容默认为空必填 buttonText:按钮显示的内容默认为"确定" 传入 "" 为默认 url:跳转链接 传入"& ...
- Windows 10:解决开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的方法
开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用应该是不少网友都遇到过. 近日在使用Windows 10 Build 9926中,也出 ...
- 《高级Web应用程序设计》课程学习资料
任务1:什么是ASP.NET MVC 1.1 ASP.NET MVC简介 1.2 认识ASP.NET MVC项目结构 1.3 ASP.NET MVC生命周期 任务2:初识ASP.NET MVC项目开 ...
- C++ GPU && CPU
#include <amp.h> #include <iostream> #include <winbase.h> //操作系统的底层文件 using namesp ...
- CSS选择器和jQuery选择器的区别与联系之一
到底什么是选择器?我们通过常接触的CSS选择器和jQuery选择器理解一下,我们知道CSS是用于分离网页的结构和表现的,也就是说对于一个网页,HTML定义网页的结构,CSS描述网页的样子,一个很经典的 ...
- js中的cookie操作
一.js cookie 使用时把此段代码引入页面 (function (factory) { if (typeof define === 'function' && define. ...
- QB资料学习.01
1.多数据集的读取 A.取数SQL的配置,借用TStringList进行存储多个不同的取数SQL B.DBA取数: DBA.ReadMultipleDataSet(TStringList) C.结果 ...
- .Net中的加密与解密
加密与解密概述 加密与解密属于数据安全的范畴.在消息传输时,通过对消息进行特殊编码(加密),建立一种安全的交流方式,使得只有发送者所期望的接收者能够理解(解密).这里我们定义一个场景:发送方,接收方, ...
- Python的平凡之路(9)
一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 2 .SSHclie ...
- rails常用验证方法 (转)
validates_presence_of :login, :message => "用户名不能为空!" validates_length_of ...