WM_ACTIVE的消息
来源:互联网 发布:闲徕互娱 知乎 编辑:程序博客网 时间:2024/05/17 02:59
WM_ACTIVE的消息参数
wParam的低阶word指示窗口是被激活还是失去激活:
WA_ACTIVE,被鼠标点击以外的方法激活;
WA_CLICKACTIVE,由鼠标点击激活;
WA_INACTIVE,失去激活;
wParam的高阶word指示窗口是否被最小化;
非零表示最小化;
lPararm表示将激活的窗口句柄(WA_INACTIVE),或者将失去激活的窗口句柄(WA_CLICKACTIVE、WA_ACTIVE)。
在标准Windows消息处理的章节中,曾指出处理WM_ACTIVE消息时,先要调用一个函数_AfxHandleActivate,此函数的原型如下:
static void AFXAPI _AfxHandleActivate(CWnd* pWnd,
WPARAM nState,CWnd* pWndOther)
其中:
参数1是接收消息的窗口;
参数2是窗口状态,为WM_ACTIVE的消息参数wParam;
参数3是WM_ACTIVE的消息参数lParam表示的窗口。
_AfxHandleActivate是MFC内部使用的函数,声明和实现均在WinCore.CPP文件中。实现如下:
如果pWnd指向的窗口不是子窗口,而且pWnd和pWndOther窗口的顶级父窗口(TopLevelParent)不是同一窗口,则发送MFC定义的消息WM_ACTIVATETOPLEVEL给pWnd的顶级窗口,消息参数wParam是nState,消息参数lParam指向一个长度为二的数组,数组里存放pWnd和pWndOther所指窗口的句柄。否则,_AfxHandleActivate不作什么。
从这里可以看出:只有顶层的主边框窗口能处理WM_ACTIVE消息,事实上,Windows系统只会给顶层的非子窗口发送WM_ACTIVE消息。
WM_ACTIVATETOPLEVEL消息的处理
CWnd及派生类CFrameWnd实现了对WM_ACTIVATETOPLEVEL消息的处理,分别解释如下:
消息处理函数CWnd::OnActivateTopLevel如果失去激活,则取消工具栏的提示(TOOLTIP)。
消息处理函数CFrameWnd::OnActivateTopLevel调用CWnd的OnActivateTopLevel;如果接收WM_ACTIVE消息的窗口是线程主窗口,则使得其活动的视窗口变成非活动的(OnActive(FALSE, pActiveView,pActiveView)。
从这里可以知道,在顶层窗口接收到WM_ACTIVE消息后,MFC会进行一些固定的处理,然后才调用WM_ACTIVE消息处理函数。
WM_ACTIVE消息的处理
在_AfxHandleActivate和WM_ACTIVATETOPLEVEL消息处理完之后,才是对WM_ACTIVE的处理。CWnd和CFrameWnd都实现了消息处理。
CWnd的消息处理函数:
void CWnd::OnActive(UINT nState, CWnd* pWndOther, BOOL bMinimized)
其中:
参数1取值为WA_INACTIVE/WA_ACTIVE/WA_CLICKACTIVE;
参数2指向激活或者失去激活的窗口,具体同WM_ACTIVE消息;
参数3表示是否最小化。
此函数的实现是调用Default(),作缺省处理。
CFrameWnd的消息处理函数:
void CFrameWnd::OnActive(UINT nState,CWnd* pWndOther, BOOL bMinimized)
首先调用CWnd::OnActivate。
如果活动视非空,消息是WA_ACTIVE/WA_CLICKACTIVE,并且不是最小化,则重新激活当前视,调用了以下函数:
pActiveView->OnActiveView(TRUE,pActiveView,pActiveView);
并且,如果活动视非空,通知它边框窗口状态的变化(激活/失去激活),调用以下函数:
pActiveView->OnActivateFrame(nState, this)。
- WM_ACTIVE的消息
- 有用的消息 系统消息映射
- /*发送消息,单项的传递消息*/
- /*接收消息--单项的接收消息*/
- jms 消息过滤 及消息的组成
- Windows的消息队列与消息循环
- windows的消息队列与消息循环
- Window 消息——消息的格式
- Windows的消息队列与消息循环
- windows的消息传递--消息盒子
- HTTP消息及响应消息的状态
- window消息机制 消息的产生、来源
- MFC的消息玄机--关于自定义消息
- 消息相关的函数 GetMessage - 获取消息
- 消息相关的函数TranslateMessage - 翻译消息
- 消息相关的函数DispatchMessage - 派发消息
- rtems 的消息与消息队列管理器
- windows的消息传递--消息盒子
- WebConfig ConnectionStrings Tool For .NET2.0
- ASP与验证码
- ASP.NET中常用功能代码总结(上传图片到数据库,从数据库中读取图片)
- 更新一下自己
- WPS处理长文档的技巧,也适用于OOo
- WM_ACTIVE的消息
- 2007/09/27 随感
- ASP.NET中常用功能代码总结(保存图片到XML文件)
- 飞花似花:央视炮轰成龙,是一场“侵略”战争
- ASP.NET中常用功能代码总结(文件操作篇)
- 信产部网站备案系统被披露存在备案人隐私外泄问题
- 奇虎总裁齐向东:病毒恶意软件木马三分天下
- Tomcat5.5 + Mysql5.0 JNDI
- ASP.NET中常用功能代码总结(XML文件操作篇)