mfc中消息传递的机制是先从鼠标焦点的界面开始吗
1个回答
展开全部
不是。
消息是基于线程的,而标准消息通常是基于进程下的窗口的。每个活动进程下的常规状态窗口,都有自己的消息环,并独立响应消息。
而这个“开始”是没法说的,因为这涉及进程间关系和线程间关系。在同一个进程的主线程中,由主线程逐一创建窗口(如果有),每个窗口创建自己的消息环,并在窗口创建完毕后开始响应消息,你说哪里是开始呢?
MFC下,第一个创建的是APP进程类和主窗口类,而消息响应也不是这个概念,以MDI多文档为例,鼠标消息是系统消息,当鼠标消息传递到程序后,APP类会获取鼠标位置,并将消息传递给鼠标所在的当前焦点窗口。如果是在客户区,那么首先会传递给框架ChildFrame,有子框架传递给View。如果鼠标不在当前焦点子框架内,消息会传递给主框架MDIMainFrame,再由主框架处理或发送给对应位置的子窗口(如工具条等)。总之,系统消息是“向下”逐级传递的,不是由焦点开始,而是焦点有优先接收权。
消息是基于线程的,而标准消息通常是基于进程下的窗口的。每个活动进程下的常规状态窗口,都有自己的消息环,并独立响应消息。
而这个“开始”是没法说的,因为这涉及进程间关系和线程间关系。在同一个进程的主线程中,由主线程逐一创建窗口(如果有),每个窗口创建自己的消息环,并在窗口创建完毕后开始响应消息,你说哪里是开始呢?
MFC下,第一个创建的是APP进程类和主窗口类,而消息响应也不是这个概念,以MDI多文档为例,鼠标消息是系统消息,当鼠标消息传递到程序后,APP类会获取鼠标位置,并将消息传递给鼠标所在的当前焦点窗口。如果是在客户区,那么首先会传递给框架ChildFrame,有子框架传递给View。如果鼠标不在当前焦点子框架内,消息会传递给主框架MDIMainFrame,再由主框架处理或发送给对应位置的子窗口(如工具条等)。总之,系统消息是“向下”逐级传递的,不是由焦点开始,而是焦点有优先接收权。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询