识讯息。对於每个讯息,均有一个对应的识别字,这些识别字定义於Windows表头档案(其中大多数在WINUSER.H中),以字首WM(「window
message」,视窗讯息)开头。例如,使用者将滑鼠游标放在HELLOWIN显示区域之内,并按下滑鼠左按钮,Windows就在讯息伫列中放入一个讯息,该讯息的message栏位等於WM_LBUTTONDOWN。这是一个常数,其值为0x0201。
wParam 一个32位元的「message
parameter(讯息参数)」,其含义和数值根据讯息的不同而不同。
lParam 一个32位元的讯息参数,其值与讯息有关。
time 讯息放入讯息伫列中的时间。
pt 讯息放入讯息伫列时的滑鼠座标。
只要从讯息伫列中取出讯息的message栏位不为WM_QUIT(其值为0x0012),GetMessage就传回一个非零值。WM_QUIT讯息将导致GetMessage传回0。
叙述
TranslateMessage (&msg) ;
将msg结构传给Windows,进行一些键盘转换。(关於这一点,我们将在第六章中深入讨论。)
叙述
DispatchMessage (&msg) ;
又将msg结构回传给Windows。然後,Windows将该讯息发送给适当的视窗讯息处理程式,让它进行处理。这也就是说,Windows将呼叫视窗讯息处理程式。在HELLOWIN中,这个视窗讯息处理程式就是WndProe函式。处理完讯息之後,WndProc传回到Windows。此时,Windows还停留在DispatchMessage呼叫中。在结束DispatchMessage呼叫的处理之後,Windows回到HELLOWIN,并且接著从下一个GetMessage呼叫开始讯息回圈。
视窗讯息处理程式
以上我们所讨论的都是必要的负担:注册视窗类别,建立视窗,然後在萤幕上显示视窗,程式进入讯息回圈,然後不断从讯息伫列中取出讯息来处理。
实际的动作发生在视窗讯息处理程式中。视窗讯息处理程式确定了在视窗的显示区域中显示些什么以及视窗怎样回应使用者输入。
在HELLOWIN中,视窗讯息处理程式是命名为WndProc的函式。视窗讯息处理程式可任意命名(只要求不和其他名字发生冲突)。一个Windows程式可以包含多个视窗讯息处理程式。一 |