急,Peekmessage和Getmessage联合起来用。 (50分)

  • 主题发起人 主题发起人 LongHai
  • 开始时间 开始时间
L

LongHai

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢你支持!<br> 因为Getmessage是阻塞的,后调用Getmessage整个程序将处于休眠状态。<br> 不知能不能这样子,在调用Getmessage之前先用一个循环调用PeekMessage来检查是否已经有消息,如果有的话再调用Getmessage取出消息。<br>代码如下:<br>&nbsp; While Not PeekMessage(Msg,FHandle,MyMsg1,THREAD_EXCEPTION,PM_NOREMOVE)Do<br>&nbsp; &nbsp; &nbsp; &nbsp; Application.ProcessMessages;<br>&nbsp; if GetMessage(Msg, FHandle, MyMsg1, THREAD_EXCEPTION) then<br>&nbsp; begin<br>&nbsp; End;<br> 这样好像不行,用PeekMessage函数返回的消息和GetMessage返回的消息不一样,不知怎么办,哪位高手知道?
 
准确的说PeekMessage就是偷看一下消息队列,<br>你用PM_NOREMOVE参数虽然没有从消息队列中删除消息,<br>但Application.ProcessMessages转发消息时却传给<br>了DefWindowProc函数。既然让系统处理了消息,下<br>面的GetMessage函数又如何获取消息呢?:)<br><br>我一般这样处理的:<br>while (!PeekMessage(&amp;msg, NULL, WM_XXX, WM_LAST, PM_REMOVE))<br>&nbsp;WaitMessage();<br>switch (msg)<br>{<br>&nbsp; case:<br>&nbsp; ......<br>}<br>呵呵。<br>
 
你不会用消息驱动事件吗[:D]
 
后退
顶部