转)截取窗口的最小化消息
来源:互联网 发布:网络电影童谣没看懂 编辑:程序博客网 时间:2024/05/02 04:34
我们首先要知道窗口什么时候最小化。但是窗口消息中并没有最小化这个消息,经过一番查找,发现最小化竟而藏在了WM_SIZE这个消息的wParam参数中了。
我们在这里就利用窗口的WM_SIZE消息来获取窗口最小化的消息。首先我们要了解一下WM_SIZE消息是什么时候产生的。
在MSDN中描述道:“The WM_SIZE message is sent to a window after its size has changed. ”意思是:“在窗口大小改变时,Windows给窗口过程发送一个WM_SIZE消息。”
所以,在窗口最小化时,Windows会给窗口发送WM_SIZE消息,我们可以通过这个消息来截取最小化消息。
那么,到底怎么截取呢?我们来看一下winuser.h头文件的定义:
/*
* WM_SIZE message wParam values
*/
#define SIZE_RESTORED 0
#define SIZE_MINIMIZED 1
#define SIZE_MAXIMIZED 2
#define SIZE_MAXSHOW 3
#define SIZE_MAXHIDE 4
这是WM_SIZE消息的wParam参数取值的宏定义。从上面可以看到一项
#define SIZE_MINIMIZED 1
这就是我们接下来要用到的。如果wParam的值为SIZE_MINIMIZED就代表窗口被最小化了。
明白以上内容后,我们开始动手来实现最小化时改变程序图标。
1.新建SDI文档,把要更改的图标加入到资源,然后通过向导添加一个WM_SIZE消息的处理函数。
2.具体做法是点击菜单栏中的"查看"->"建立类向导..."
3.在Message Maps页中的"Class name"项选择CMainFrame,然后Message中选择WM_SIZE,然后单击"Add Function"按钮.
4.这样就把处理WM_SIZE消息的函数建立起来了,我们不要急着关闭向导,单击按钮"Edit Code"来进行具体的功能实现。
5.进入到代码页面,我们可以看到处理WM_SIZE消息的函数框架,如下:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
}
6.现在我们来实现,当窗口最小化时弹出提示信息。我们可以在OnSize函数中加入如下代码:
if(nType==SIZE_MINIMIZED)
{
::AfxMessageBox("窗口最小化了",MB_OK);
}
7.运行一下,看到效果了吗?
- 转)截取窗口的最小化消息
- 截取窗口的最小化消息
- 窗口最大化、最小化及关闭的消息
- 窗口最小化和最大化消息
- VC处理窗口最小化的消息和函数
- 最小化的窗口闪烁
- 窗口的最大化最小化
- 如何重载最小化、最大化窗口消息响应
- windows消息控制窗口最大化最小化
- API 拦截窗口关闭&最大化&最小化消息
- 当最小化的时候,在一段时间内想让窗口不显示的解决方案WM_QUERYOPEN消息
- 桌面上的所有窗口最小化
- [转]MFC 窗口重绘问题,最小化消失的问题解决
- Delphi 消息实现窗口最小化,最大化,关闭(delphi)
- 最小化窗口
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子
- 控制MDI窗口的,最大化.最小化按钮!
- 最小化桌面所有窗口的两个方法
- google的搜索体验太赞 导航类新闻站搜索非常棒
- WebService WSDL结构分析
- strace 的用法
- C#截取字符串方法
- 翻译 shaderX2 Deferred Shading with Multiple Render Target
- 转)截取窗口的最小化消息
- wxWidgets 2.8 在ubuntu 下的安装
- jQuery简介(cssrain)
- javascript转帖备忘
- 【金融】什么是SHIBOR?
- 平台崩溃之operator new异常(十八)-2010-7-12
- myEclipse8.0或者8.5 svn插件配置
- TI DVSDK on OMAP3530 use Devkit8000 (5)
- 【转载】WM获取GPS数据