线程中 Edit Box显示数字菜鸟问题,请指教!谢谢

晕笑晕 2008-05-17 04:29:41
一个基于对话框的程序,我想在一线程中更新显示Edit Box 控件中的数字:
//线程中显示数字
void CJiance_xitongDlg::Onxianshishuzi()
{
// TODO: Add your command handler code here
CWinThread *ThreadReadData;
//进入在EditBox中显示数字的线程
ThreadReadData=AfxBeginThread(xianshi_Thread,this,THREAD_PRIORITY_NORMAL);
}
UINT xianshi_Thread(LPVOID pParam)
{
//获得对话框的句柄
CJiance_xitongDlg* pDlg = (CJiance_xitongDlg*)pParam;
pDlg->m_shuzi=10;
pDlg->UpdateData(FALSE);//显示测量值
return 0;
}
编译通过都没有错误,但只要一运行就报错的,显示对话框:Debug Assertion Failed!。。。。。。
请问是什么原因呢?我如何在线程当中对主对话框中的控件进行操作呢?谢谢
...全文
119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ls443085074 2008-05-17
  • 打赏
  • 举报
回复
1.2楼的都能解决,请结贴
krispan86 2008-05-17
  • 打赏
  • 举报
回复
给你提供一个另外的办法:

首先在CJiance_xitongDlg类头文件添加一个全局变量
static HWND hDlg; //对话框窗口句柄

修改创建线程函数为:

ThreadReadData=AfxBeginThread(xianshi_Thread,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);

CJiance_xitongDlg::OnInitDiolag()函数中加入:

hDlg=GetSafeHwnd();

//线程回调函数改为
UINT xianshi_Thread(LPVOID pParam)
{
shuzi=10;
CString str;
str.Format("%d",shuzi);
::SetDlgItemText(hDlg,IDC_SHUZI,str); //这个IDC_SHUZI需要修改的跟你的Edit Box的ID一致

return 0;
}
cnzdgs 2008-05-17
  • 打赏
  • 举报
回复
线程中不允许UpdateData,你可以用SetWindowText。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧