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

📄 subject_19952.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:19952 发表者:紫云 发表日期:2002-11-01 15:16:51
<br>主题:一个关于thread的菜鸟级问题
<br>内容:本人初学VC++,正在学习线程编程,遇到一些问题,向各位大侠请教<BR><BR>建立一个工作线程,不断刷新主线程窗体 StaticText,但报异常,<BR>应该是线程同步刷新问题,但不知该怎么写,请帮助<BR><BR>代码如下:<BR>//<BR>typedef struct {<BR>&nbsp;&nbsp;&nbsp;&nbsp;CWnd*&nbsp;&nbsp;&nbsp;&nbsp;fhWnd;//主窗体句柄<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;nShowCount; //显示的数字初始值<BR>}TTHREADPARAM, *LPTTHREADPARAM;<BR><BR>// Thread test<BR>UINT Watch(LPVOID lpParam)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char szBuf[10];<BR>&nbsp;&nbsp;&nbsp;&nbsp;TTHREADPARAM *pTP = (TTHREADPARAM *)lpParam;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (i=0;i&lt;10;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(szBuf,0,sizeof(szBuf));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//_itoa(pTP-&gt;nShowCount++,szBuf,10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Static_SetText(pTP-&gt;fhWnd-&gt;m_hWnd, _TEXT("33"));<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetDlgItemInt(pTP-&gt;fhWnd, IDC_NCOUNT,&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++pTP-&gt;nShowCount , FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(1000);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return(0);<BR>}<BR><BR><BR>void CFileChangeView::OnStart() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;DlgOpenChange();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_bWatchClose = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TTHREADPARAM tdp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tdp.fhWnd = GetDlgItem(IDC_NCOUNT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;tdp.nShowCount = GetDlgItemInt(IDC_NCOUNT);<BR><BR>//&nbsp;&nbsp;&nbsp;&nbsp;SetDlgItemInt(IDC_NCOUNT, 100123 , FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CWinThread * pThread = <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxBeginThread(Watch, &tdp);<BR><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>
回复者:CDMA2000 回复日期:2002-11-01 15:33:40
<br>内容:SetDlgItemInt()的第一个参数应该是handle of dialog box<BR>但<BR>&nbsp;&nbsp;&nbsp;&nbsp;tdp.fhWnd = GetDlgItem(IDC_NCOUNT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;tdp.nShowCount = GetDlgItemInt(IDC_NCOUNT);<BR>你将tdp.fhWnd 传递的是控件的指针啊<BR><BR>你的结构应该这样<BR>typedef struct {<BR>&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;&nbsp; fhWnd;//主窗体句柄<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;nShowCount; //显示的数字初始值<BR>}TTHREADPARAM, *LPTTHREADPARAM;<BR><BR>还有tdp.fhWnd = GetDlgItem(IDC_NCOUNT);<BR>应该改为tdp.fhWnd = GetSafeHwnd();<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-11-01 15:34:09
<br>内容:CWnd是不可以传进thread的,进去以后handle就自动变成NULL了<BR>2002-11-1 21:17:55

⌨️ 快捷键说明

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