📄 subject_24041.htm
字号:
<p>
序号:24041 发表者:夏乾坤 发表日期:2002-12-09 10:24:26
<br>主题:菜鸟问题:关于消息循环,HELP!
<br>内容:请各位帮忙 ! 比如<BR>HWND hWnd=0;<BR>hWnd = ::FindWindow("class","Window name");<BR>for(;;)<BR>{<BR> if(hWnd!=0){break;}<BR>}<BR><BR>在循环查找窗口句柄的时候会造成假死机状态!之间用什么函数或用什么方法能避免这一点?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bottle_fish 回复日期:2002-12-09 13:29:12
<br>内容:sleep(200);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:太平冰水 回复日期:2002-12-09 22:40:08
<br>内容:用工作线程做查找工作,或者在循环中加入Getmessage和ransparentmessage,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>
回复者:夏乾坤 回复日期:2002-12-10 09:53:35
<br>内容:你说的消息分派还是不明白! <BR>请帮忙写出解决的代码,谢谢了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2002-12-10 12:49:37
<br>内容:HWND hWnd=0;<BR>hWnd = ::FindWindow("class","Window name");<BR>for(;;)<BR>{<BR> if(hWnd!=0){break;}<BR>}<BR>我怎么看不明?如果没找到,hWnd=0,那么for(;;)岂不成了死循环??<BR>顺便问问。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:夏乾坤 回复日期:2002-12-10 14:28:08
<br>内容:是的,我的意思就是在后台查找这个窗口,如果一直找不到这个窗口,我的程序也处于空闲状态,等待处理的状态,但是我用了这个for循,程序根本没空闲,却成了假死机状态了!<BR><BR>我以前用VB做程序,循环里边用一个DoEvents 函数就可以解决这一问题!<BR><BR>我的问题只有1个,就是解决循环里的假死机问题!<BR>请各位帮忙!!!!!!!!!!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:太平冰水 回复日期:2002-12-10 20:32:20
<br>内容:看看代码:<BR><BR>// 创建查询线程 <BR> DWORD dwThreadID;<BR> m_hSearchThread = ::CreateThread(NULL,0,SearchProc,m_pThreadPara,0,&dwThreadID);<BR> if(m_hSearchThread != NULL)<BR> {<BR>//使“查询”按钮不可用<BR> GetDlgItem(IDC_BTN_SEARCH)->EnableWindow(FALSE);<BR>//开始动画<BR> m_ani.Play(0,-1,-1);<BR>//转发系统消息 <BR> while(::WaitForSingleObject(m_hSearchThread ,0) != WAIT_OBJECT_0)<BR> {<BR> MSG msg;<BR>// ::GetMessage(&msg, NULL, 0, 0); <BR> ::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);<BR> ::TranslateMessage(&msg);<BR> ::DispatchMessage(&msg);<BR> }<BR>//停止动画<BR> m_ani.Stop();<BR> m_ani.Seek(0);<BR>//允许“查询”按钮可用<BR> GetDlgItem(IDC_BTN_SEARCH)->EnableWindow(TRUE);<BR> }
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:夏乾坤 回复日期:2002-12-11 07:06:18
<br>内容:不太明白
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:夏乾坤 回复日期:2002-12-11 11:52:27
<br>内容:有没有不用建立进程的方法?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:XinLin 回复日期:2002-12-11 12:43:01
<br>内容:很简单,在一个线程中实现这个查找,并在for(;;)中<BR>加一句Sleep(10),10ms你都看不到假死现象,也可随你<BR>的意志,Bye
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:夏乾坤 回复日期:2002-12-11 16:09:46
<br>内容:晕,一直没试,Sleep果然好用<BR><BR>我的程序很简单,不用线程就可以搞定,谢谢各位帮忙!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bottle_fish 回复日期:2002-12-12 12:43:30
<br>内容:给分啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:迷你猪 回复日期:2002-12-26 17:43:48
<br>内容:这个问题很简单,在unix上不解决的话可以使你的cpu完全消耗掉!<BR>可以这样,可以指定100次循环,如果在这100次中有满足条件的,则<BR>不进行sleep,如果没满足条件,sleep一下,效率会提高很多,在其它<BR>类似场合下很实用,如果一味的sleep,效率很低,这涉及到一个统计<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 + -