📄 subject_52019.htm
字号:
<p>
序号:52019 发表者:圆锥曲线 发表日期:2003-09-06 18:26:30
<br>主题:关于PeekMessage()的提问,请大家帮忙解释一下
<br>内容:int PASCAL WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)<BR>{<BR> MSG msg;<BR> if ( !InitWindow( hInstance, nCmdShow ) )return FALSE;<BR> while(1)<BR> {<BR> if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))<BR> {<BR> TranslateMessage(&msg); <BR> DispatchMessage(&msg);<BR> }<BR> else if(bActive)<BR> {/**/}<BR> }<BR> return msg.wParam;<BR>}<BR>请问上述代码中peekMessage()是干什么的?这段消息处理代码的作用是什么?请大家费心详细解释一下!谢谢。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:iamhere 回复日期:2003-09-06 18:43:24
<br>内容:PeekMessage检查消息队列,如果有消息则取出放在msg中,PM_REMOVE标志表示取出后将该消息从消息队列中删除<BR>TranslateMessage用以将一些虚拟按键消息(virtual-key messages )转义为字符消息(character messages)<BR>DispatchMessage将消息派发给当前程序处理<BR><BR><BR>这段消息处理代码的作用就是不断的检查消息队列中是否有消息。有的话取出来(PeekMessage),经过转义(TranslateMessage)后,派发给程序处理(DispatchMessage)。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2003-09-08 18:13:44
<br>内容:一般来说<BR>getmessage会阻塞。也就是说没有消息进来的时候,这个函数不会返回<BR>peekmessage不会阻塞,每次调用立刻返回。<BR>一般来说,程序消息跟消息之间有比较大的空闲时间。如果用getmessage,这段时间就被浪费了,不能用来执行程序,因为getmessage不会返回。这个时候就可以用peekmessage,peekmessage返回后有消息就处理消息,否者就利用这个空闲时间处理一个比较小的函数,比如<BR>else if(bActive)<BR> {/**/}<BR>这个里面的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -