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

📄 subject_63642.htm

📁 vc
💻 HTM
字号:
<p>
序号:63642 发表者:最后一根稻草 发表日期:2003-12-05 09:35:58
<br>主题:多线程AfxBeginThread的应用(错误求助)
<br>内容:有一个进度条,我想用线程来控制它,经过反复努力,终于能够编绎通过了,却在运行的时候出现了严重错误,我刚接触线程,高手指教。<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_progress1.SetRange(0,180);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_progress1.SetPos(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_progress1.SetStep(10);//对进度条1的初始化<BR><BR>定义一个全局函数:<BR>UINT button1Proc(LPVOID pParam )<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;18;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlg.m_progress1.StepIt();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(500);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;dlg.m_progress1.SetPos(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR><BR>}<BR>定义一个消息响应函数:<BR><BR>void CDlg::OnButton1() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HWND hWnd=GetSafeHwnd();<BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxBeginThread(button1Proc,hWnd,THREAD_PRIORITY_NORMAL);<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>
回复者:BigJames 回复日期:2003-12-05 14:49:23
<br>内容:不能够在thread里直接调用dlg的和窗口有关的操作。你可以定义一个消息,在thread里向dlg发消息<BR>把dlg 的hwnd传给线程。
<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>回复者:元元 回复日期:2003-12-05 18:29:12
<br>内容:我帮你改动如下,你自己去测试吧!,你应该传CDlg的指针进去。<BR>UINT button1Proc(LPVOID pParam )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDlg *pDlg = (CDlg*)pParam;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;18;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDlg-&gt;m_progress1.StepIt();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(500);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDlg-&gt;m_progress1.SetPos(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR>void CDlg::OnButton1() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxBeginThread(button1Proc,this,THREAD_PRIORITY_NORMAL);&nbsp;&nbsp;&nbsp;&nbsp;<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>
回复者:最后一根稻草 回复日期:2003-12-13 08:29:51
<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>
回复者:青蛙网子 回复日期:2003-12-13 22:19:52
<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 + -