|
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
讯息识别字。这是一个数值,用以标
|