设为首页 加入收藏

TOP

视窗和讯息(二十七)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17265
Tags:视窗 讯息
、SIZE_MAXSHOW或SIZE_MAXHIDE (在WINUSER.H表头档案中分别定义为数字0到4)。也就是说,参数wParam表明视窗是非最小化还是非最大化,是最小化、最大化,还是隐藏。

lParam参数包含了新视窗的大小,新宽度和新高度均为16位元值,合在一起成为32位元的lParam。WINDEF.H中提供了帮助程式写作者从lParam中取出这两个值的巨集,我们将在下一章说明这个巨集。

有时候,DefWindowProc处理完讯息後会产生其他的讯息。例如,假设使用者执行HELLOWIN,并且使用者最终单击了 Close 按钮,或者假设用键盘或滑鼠从系统功能表中选择了 Close , DefWindowProc处理这一键盘或者滑鼠输入,在检测到使用者选择了 Close 选项之後,它给视窗讯息处理程式发送一条WM_SYSCOMMAND讯息。WndProc将这个讯息传给DefWindowProc。DefWindowProc给视窗讯息处理程式发送一条WM_CLOSE讯息来回应之。WndProc再次将它传给DefWindowProc。DestroyWindow呼叫DestroyWindow来回应这条WM_CLOSE讯息。DestroyWindow导致Windows给视窗讯息处理程式发送一条WM_DESTROY讯息。WndProc再呼叫PostQuitMessage,将一条WM_QUIT讯息放入讯息伫列中,以此来回应此讯息。这个讯息导致WinMain中的讯息回圈终止,然後程式结束。

伫列化讯息与非伫列化讯息
 

我们已经谈到过,Windows给视窗发送讯息,这意味著Windows呼叫视窗讯息处理程式。但是,Windows程式也有一个讯息回圈,它呼叫GetMessage从讯息伫列中取出讯息,并且呼叫DispatchMessage将讯息发送给视窗讯息处理程式。

那么,Windows程式是依次等待讯息(类似于普通程式中相同的键盘输入),然後将讯息送到某地方去的吗?或者,它是直接从程式外面接收讯息的吗?实际上,两种情况都存在。

讯息能够被分为「伫列化的」和「非伫列化的」。伫列化的讯息是由Windows放入程式讯息伫列中的。在程式的讯息回圈中,重新传回并分配给视窗讯息处理程式。非伫列化的讯息在Windo

首页 上一页 24 25 26 27 28 29 下一页 尾页 27/29/29
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出文字 下一篇Unicode简介

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: