设为首页 加入收藏

TOP

视窗和讯息(二十一)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17280
Tags:视窗 讯息
个视窗讯息处理程式总是与呼叫RegisterClass注册的特定视窗类别相关联。CreateWindow函式根据特定视窗类别建立一个视窗。但依据一个视窗类别,可以建立多个视窗。

视窗讯息处理程式总是定义为如下形式:

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

注意,视窗讯息处理程式的四个参数与MSG结构的前四个栏位是相同的。第一个参数hwnd是接收讯息的视窗的代号,它与CreateWindow函式的传回值相同。对於与HELLOWIN相似的程式(只建立一个视窗),这个参数是程式所知道的唯一视窗代号。如果程式是依据同一视窗类别(同时也是同一视窗讯息处理程式)建立多个视窗,则hwnd标识接收讯息的特定视窗。

第二个参数与MSG结构中的message栏位相同,它是标识讯息的数值。最後两个参数都是32位元的讯息参数,提供关於讯息的更多资讯。这些参数包含每个讯息型态的详细资讯。有时讯息参数是两个存放在一起的16位元值,而有时讯息参数又是一个指向字串或资料结构的指标。

程式通常不直接呼叫视窗讯息处理程式,视窗讯息处理程式通常由Windows本身呼叫。通过呼叫SendMessage函式,程式能够直接呼叫它自己的视窗讯息处理程式。我们将在後面的章节讨论SendMessage函式。

处理讯息
 

视窗讯息处理程式所接受的每个讯息均是用一个数值来标识的,也就是传给视窗讯息处理程式的message参数。Windows表头档案WINUSER.H为每个讯息参数定义以「WM」(视窗讯息)为字首开头的识别字。

一般来说,Windows程式写作者使用switch和case结构来确定视窗讯息处理程式接收的是什么讯息,以及如何适当地处理它。视窗讯息处理程式在处理讯息时,必须传回0。视窗讯息处理程式不予处理的所有讯息应该被传给名为DefWindowProc的Windows函式。从DefWindowProc传回的值必须由视窗讯息处理程式传回。

在HELLOWIN中,WndProc只选择处理三种讯息:WM_CREATE、WM_PAINT和WM_DESTROY。视窗讯息处理程式的结构如下:

switch (iMsg)
{
case WM_CREATE :
处理WM_CREATE讯息
return 0 ;

case
首页 上一页 18 19 20 21 22 23 24 下一页 尾页 21/29/29
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出文字 下一篇Unicode简介

评论

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