⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_19687.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:19687 发表者:草席 发表日期:2002-10-30 16:18:21
<br>主题:为什么?(在线)
<br>内容:关于线程消息的问题<BR>代码如下:<BR>BOOL CTestThread::InitInstance()<BR>{<BR>&nbsp;&nbsp; MSG msg;<BR>&nbsp;&nbsp; PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);<BR>&nbsp;&nbsp; while (GetMessage(&msg, NULL, 0, 0))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *psz = (char *)msg.lParam;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(msg.message)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case WM_JOB_PRINT_AS_IS:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox("a");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(psz);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case WM_JOB_PRINT_REVERSE:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox("b");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(psz);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case WM_JOB_PRINT_LOWER:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox("c");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(psz);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(&msg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR>主线程中:<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PostThreadMessage(tid, WM_JOB_PRINT_AS_IS, NULL, (LPARAM)szText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;PostThreadMessage(tid, WM_JOB_PRINT_REVERSE, NULL, (LPARAM)szText);<BR>&nbsp;&nbsp;&nbsp;&nbsp;PostThreadMessage(tid, WM_JOB_PRINT_LOWER, NULL, (LPARAM)szText);<BR><BR>为什么我只能弹出一个"a"?如果我把AfxMessageBox去掉,则在调试环境下,可以看到所有的消息均得到响应?为什么?<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>
回复者:凯凯 回复日期:2002-10-30 16:22:37
<br>内容:不要在线程中使用AfxMessageBox。
<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-10-30 16:24:40
<br>内容:但是根本原因是什么?<BR><BR>AfxMessageBox导致消息循环改变?
<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>回复者:凯凯 回复日期:2002-10-30 16:31:19
<br>内容:以前碰到过这个问题,去掉AfxMessageBox就没事了。<BR><BR>我想是因为AfxMessageBox会挂起调用它的函数,直到它返回,好象是用一个永真循环实现的,这样可能造成了冲突。后来没时间没有仔细去搞这个问题了。
<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-10-30 16:35:58
<br>内容:只好不了了之?唉,不好<BR>虽然AfxMessageBox挂起当前函数,但是消息应该仍然存在消息队列里面才对呀<BR>另外,我在主线程中Post&nbsp;&nbsp;WM_QUIT消息给线程,为什么每次都要点两下,线程才结束?<BR>(每点击一下发送一个WM_QUIT消息)
<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-10-30 16:54:26
<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>
回复者:草席 回复日期:2002-10-30 17:09:59
<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-10-30 20:25:17
<br>内容:POST消息响应没有SEND快,你SEND一个看看。
<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-10-30 20:28:28
<br>内容:我知道,send相当于函数调用,先停止当前线程,转去执行消息相应函数<BR><BR>可是用post等了很久也没看到我的thread结束啊
<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-10-30 20:30:33
<br>内容:好像也没有sendthreadmessage这一说:)
<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-10-30 21:29:07
<br>内容:哦,如果是线程间的,你自己去看&lt;Windows高级编程指南&gt;的第十一章吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:74LS373 回复日期:2002-10-30 22:13:38
<br>内容:另外,我在主线程中Post&nbsp;&nbsp;WM_QUIT消息给线程,为什么每次都要点两下,线程才结束?<BR>(每点击一下发送一个WM_QUIT消息)<BR><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>
回复者:*** 回复日期:2002-10-30 22:21:30
<br>内容:如下:<BR>2002-10-30 22:55:09

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -