GetMessage函数请教(50分)

  • 主题发起人 主题发起人 zzmbeyond01
  • 开始时间 开始时间
Z

zzmbeyond01

Unregistered / Unconfirmed
GUEST, unregistred user!
BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilteMax)<br>返回值:如果GetMessage函数取得WM_QUIT之外的其他消息,返回非零值。<br>如果函数取得WM_QUIT消息,返回值是零。<br>&nbsp;正确吗?我看有的书上与上面的对应的返回值相反,不知那个正确&gt; &nbsp;请教<br>
 
Return Value<br><br>If the function retrieves a message other than WM_QUIT, the return value is nonzero.<br><br>If the function retrieves the WM_QUIT message, the return value is zero. <br><br>If there is an error, the return value is -1. For example, the function fails if hWnd is an invalid window handle or lpMsg is an invalid pointer
 
基本正确。<br>一般sdk的消息处理这样写:<br>MSG msg;<br>while(GetMessage(&amp;msg, hWnd, 0, 0))<br>{<br>&nbsp; TranslateMessage(&amp;msg);<br>&nbsp; DispatchMessage(&amp;msg);<br>}<br>return msg.wParam;<br>因此当WM_QUIT到来时,循环结束,控制交回系统。<br>但当GetMessage出错时会返回-1,虽然这种情况很少,所以程序也可以这样<br>MSG msg;<br>BOOL res;<br>while(res = GetMessage(&amp;msg, hWnd, 0, 0))<br>{<br>&nbsp; if (res == -1)<br>&nbsp; {<br>&nbsp; &nbsp; /*错误处理*/<br>&nbsp; }<br>&nbsp; else<br>&nbsp; {<br>&nbsp; &nbsp; TranslateMessage(&amp;msg);<br>&nbsp; &nbsp; DispatchMessage(&amp;msg);<br>&nbsp; }<br>}<br>return msg.wParam;<br>
 
谢谢二位[:)]<br>加分!!<br>在请教一个问题,win32要求每个创建窗口的线程使用getmessage()来建立自己的<br>消息循环。这个消息循环怎么理解,是线程与创建的窗口之间的消息通信形成的[?]
 
多人接受答案了。
 
这份怎么加,同时又不让他接受答案[?][:D]
 

Similar threads

S
回复
0
查看
579
swish
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部