设为首页 加入收藏

TOP

视窗和讯息(十九)
2010-12-30 21:09:07 来源: 作者: 【 】 浏览:17287
Tags:视窗 讯息
E。

ShowWindow函式在显示器上显示视窗。如果ShowWindow的第二个参数是SW_SHOWNORMAL,则视窗的显示区域就会被视窗类别中定义的背景画刷所覆盖。函式呼叫

UpdateWindow (hwnd) ;

会重画显示区域。它经由发送给视窗讯息处理程式(即HELLOWIN.C中的WndProc函式)一个WM_PAINT讯息做到这一点。後面,我们将说明WndProc如何处理这个讯息。

讯息回圈
 

呼叫UpdateWindow之後,视窗就出现在视讯显示器上。程式现在必须准备读入使用者用键盘和滑鼠输入的资料。Windows为当前执行的每个Windows程式维护一个「讯息伫列」。在发生输入事件之後,Windows将事件转换为一个「讯息」并将讯息放入程式的讯息伫列中。

程式通过执行一块称之为「讯息回圈」的程式码从讯息伫列中取出讯息:

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

msg变数是型态为MSG的结构,型态MSG在WINUSER.H中定义如下:

typedef struct tagMSG
{
HWND hwnd ;
UINT message ;
WPARAM wParam ;
LPARAM lParam ;
DWORD time ;
POINT pt ;
}
MSG, * PMSG ;

POINT资料型态也是一个结构,它在WINDEF.H中定义如下:

typedef struct tagPOINT
{
LONG x ;
LONG y ;
}
POINT, * PPOINT;

讯息回圈以GetMessage呼叫开始,它从讯息伫列中取出一个讯息:

GetMessage (&msg, NULL, 0, 0)

这一呼叫传给Windows一个指标,指向名为msg的MSG结构。第二、第三和第四个参数设定为NULL或者0,表示程式接收它自己建立的所有视窗的所有讯息。Windows用从讯息伫列中取出的下一个讯息来填充讯息结构的各个栏位,结构的各个栏位包括:

  • hwnd 接收讯息的视窗代号。在HELLOWIN程式中,这一参数与CreateWindow传回的hwnd值相同,因为这是该程式拥有的唯一视窗。
     
  • message 讯息识别字。这是一个数值,用以标
首页 上一页 16 17 18 19 20 21 22 下一页 尾页 19/29/29
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇输出文字 下一篇Unicode简介

评论

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