关于父父窗口的数据更新问题:如下,在线等

master_ttch 2005-03-04 12:11:58
1,父窗口a 创建 子窗口 b
2, b 创建 线程 c
3, 在线程 c 中 需要更新 父窗口 a 的数据

为什么每次更新都报错?
如何才能实现这个目标?
各位帮帮忙了
我折腾了一上午了
...全文
77 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2005-03-04
  • 打赏
  • 举报
回复
线程函数:
UINT Progress(LPVOID pParam);//函数声明
UINT Progress(LPVOID pParam)
{
CParentDlg *pDlg = (CParentDlg *)pParam;//转换为父窗口指针
int iCount
pDlg->m_ProgressBar.SetPos(iCount); //用pDlg访问父窗口的变量
return 0;
}

在B中开始线程如:
AfxBeginThread(Progress,(LPVOID*)this->GetParent(),THREAD_PRIORITY_NORMAL);
lsaturn 2005-03-04
  • 打赏
  • 举报
回复
是assert错吧?
你看看是哪里报错?
mfc的窗口信息是存在线程相关的堆栈里的.不同线程要尝试取就会assert错
master_ttch 2005-03-04
  • 打赏
  • 举报
回复
我尝试了用SendMessage但是,还是报错
怎么办?
lsaturn 2005-03-04
  • 打赏
  • 举报
回复
不同线程中要出错,目前看来只能发消息
ww51xh 2005-03-04
  • 打赏
  • 举报
回复
SendMessage给Parent
master_ttch 2005-03-04
  • 打赏
  • 举报
回复
解决了
是通过发消息解决的
估计我开始发消息不知道哪块写错了吧
我把那块重新写了
然后就解决了问题
谢谢楼上各位
结贴
oyljerry 2005-03-04
  • 打赏
  • 举报
回复
可以传递窗口指针进线程直接访问,也可以发送消息来通知执行
BigFanOfCpp 2005-03-04
  • 打赏
  • 举报
回复
方法一:
1.将创建线程的窗口的hwnd通过参数传递给线程函数;
2.在线程函数中通过hwnd发消息给这个窗口;(PostMessage);
3.当这个窗口接到消息的时候,再利用一般的方法告诉其他的窗口做事情。
方法二:
1.获得当前窗口的线程ID,::GetCurrentThreadID();或者在App里直接取得线程ID,App有成员变量的。
2.然后通过参数传递给线程,这时候线程可以发送PostThreadMessage(...);告诉另一个线程做事情。

15,471

社区成员

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

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