特殊的Windows消息
WM_CREATE消息
该消息是Windows发送给视图的第一个消息。由于当应用程序框架调用Create函数时该消息就会被发送,而此时窗口创建还未完成,窗口还不可见,因此在控制函数OnCreate内部,不能调用那些依赖于窗口处于完全激活状态的Windows函数。
但是我们可以在被重载的OnInitialUpdate函数内调用这些函数。不过必须注意,对于SDI程序,在视图生存期间OnInitialUpdate函数可能会被调用多次。
注意:OnInitialUpdate函数是视图窗口完全建立后,在调用OnDraw函数之前第一个被调用的函数,很多初始化工作可以放在这个函数里,因此很重要。
WM_CLOSE消息
当用户从系统菜单中关闭窗口或者父窗口被关闭时,Windows都会发送WM_CLOSE消息。如果在派生视图类中重新定义了OnClose消息映射函数,就完全可以控制关闭过程。例如:如果需要提醒用户将变化的内容保存在文件中时,就可以将这步工作放在OnClose函数中来完成。只有在确认了关闭窗口是非常安全的情况下,才可以调用基类的OnClose函数,由它来继续处理关闭过程。此时,视图对象和相应的窗口仍然处于活动状态。
注意:当使用完整的应用程序框架结构时,也可以不使用WM_CLOSE的消息控制函数。作为应用程序框架的高度结构化的程序退出过程的一部分,我们可以通过重载CDocument::SaveModified虚函数来达到这个目的。
WM_QUERYENDSESSION消息
当用户退出Windows时,Windows就会发送WM_QUERYENDSESSION消息给所有正在运行的应用程序,而OnQueryEndSession消息映射函数正是用来处理这一消息的。如果我们对WM_CLOSE消息函数编写了相应的控制函数,则同样也需要对WM_QUERYENDSESSION 消息编写相应的控制函数。
WM_DESTROY消息
Windows在发送WM_CLOSE消息之后,紧接着就会发送WM_DESTROY消息,而OnDestroy消息映射函数正是处理这一消息的。当程序收到该消息时,它将假设此时视类已经完全消失,但仍然处于活动状态,并且视窗的子窗口还仍然处于活动状态。利用这个消息的控制函数,就可以在对依赖于当前窗口存在的所有东西做清除工作。不过,一定要记住,应该调用基类的OnDestroy函数,而不能在用户自己的视图的OnDestroy函数中“终止”窗口的析构过程,终止析构的处理应该放在OnClose函数中。
WM_NCDESTROY消息
当窗口被关闭时所发送的最后一个消息就是这个消息。由于此时所有子窗口都已经被关系,所以我们可以在OnNcDestroy函数中做一些不依赖于该窗口是否处于活动状态的最后的处理工作,不过最好一定要调用基类中的OnNcDestroy函数。
特殊的Windows消息的更多相关文章
- Windows消息机制
Windows的消息系统是由3个部分组成的: · 消息队列.Windows能够为所有的应用程序维护一个消息队列.应用程序必须从消息队列中获取消息,然后分派给某个窗口.· 消息循环.通过这个循环机制应用 ...
- windows消息机制详解(转载)
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.消息本身是作为一个记录传递给应用程序的 ...
- windows消息钩子注册底层机制浅析
标 题: [原创]消息钩子注册浅析 作 者: RootSuLe 时 间: 2011-06-18,23:10:34 链 接: http://bbs.pediy.com/showthread.php?t= ...
- Windows消息机制详解
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...
- Windows消息机制知识点总结
1.windows消息类型 以下四种,前三种是系统消息,范围在[0x0000, 0x03ff],第四种是用户自定义消息. 1.1 窗口消息 与窗口的内部运作有关,如创建窗口,绘制窗口,销毁窗口等.可以 ...
- Windows消息大全(转)
原链接地址: http://www.cnblogs.com/icebutterfly/archive/2011/08/05/2128864.html 表A-1 Windows消息分布 消息范围说 明 ...
- Windows消息过滤
在C#编程中,经常会遇到一些场景,如禁止鼠标拖动窗体,启用某些快捷键,禁止鼠标移动等.遇到这些需求,可以通过窗体的MouseMove事件,OnDragDrop,OnMove等事件来解决问题, 但是该方 ...
- 【转】windows消息和消息队列详解
转载出处:http://blog.csdn.net/bichenggui/article/details/4677494 windows消息和消息队列 与基于MS - DOS的应用程序不同,Wind ...
- Windows GUI代码与Windows消息问题调试利器
Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,高 ...
- 我对windows消息机制的理解(参考深入浅出MFC,欢迎批评指正!!)
以消息为基础,以事件驱动之 程序的进行依靠外部消息来驱动,即:程序不断等待任何可能的输入,然后做判断,然后再做适当的处理. 消息输入:操作系统捕获,以消息形式进入程序.(操作系统通过其USERS模块中 ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之0507筛选素数
题目
- log4cpp的初步使用
(1)下载log4cpp的工程,编译生成lib文件和dll库 下载路径为:http://sourceforge.net/projects/log4cpp/files/latest/download 如 ...
- Can't connect to MySQL server on 'XXX' (13)
出现can't connect to MySQL server using '' (13)的错误,结果是 SELinux 不让 httpd 访问外网,一开始还以为是iptables造成的,关闭之后发现 ...
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- 通过xml生成word文档
Xml生成word总结 使用xml生成word的基本步骤在<使用xslt转化xml数据形成word文档导出.doc>中说明比较清楚了.但是其中的细节并未说到,因此自己折腾了两天总算成功了. ...
- Away3D带你360°漫游全景影像
1代码展示 package { import away3d.containers.View3D; import away3d.controllers.HoverController; import a ...
- 设计模式(二)单件模式Singleton(创建型)
SINGLETON(单件)—对象创建型模式 几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关 ...
- hibernate笔记(一)
一.主配置文件hibernate.cfg.xml 位置:放在src目录下. 主要包含信息: 一.数据库信息 数据库方言(类的全名) 及 数据库链接信息 1. 数据库方言 2. ...
- 浙江大学PAT上机题解析之3-05. 求链式线性表的倒数第K项
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式说明: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理). 输出 ...
- GridView点击空白地方事件扩展
我们通常在ListView或者GridView响应点击Item事件,但很多时候我们同样也 希望监听到点击空白区域的事件来做更多的处理.本文以GridView为例给出一个实现 的方法,扩展GridVie ...