1,父窗口a 创建 子窗口 b
2, b 创建 线程 c
3, 在线程 c 中 需要更新 父窗口 a 的数据为什么每次更新都报错?
如何才能实现这个目标?
各位帮帮忙了
我折腾了一上午了
2, b 创建 线程 c
3, 在线程 c 中 需要更新 父窗口 a 的数据为什么每次更新都报错?
如何才能实现这个目标?
各位帮帮忙了
我折腾了一上午了
解决方案 »
- CDateTimeCtrl控件设置自定义时间和获取时间问题
- 跪求如何在View外的类使用m_pSet
- 每隔0.5秒从服务器数据库的TabA表中提数据刷新客户端界面上的MSHFlexGrid1控件。有24个客户端,TabA表中的记录由于各个客户端的操作而频繁变动,变动的范围为0~2000条左右记录,请审查这个方案是否可行。见主要代码:
- 如果本机有两块网卡,如何获取IP地址?
- 锁住鼠标到底怎么锁啊??
- 高分等待:怎样用VC写ISAPI网页过滤程序!
- 求《Visual C++实现MPEG/JPEG编解码技术》一书的电子版共享
- 重绘问题--基于dialog
- 大问题,救命!
- 请问一下,如下的宏定义该如何理解。
- 请问ListCtrl里怎么添加进度条显示?
- 把一个exe改写成一个dll的问题!
怎么办?
你看看是哪里报错?
mfc的窗口信息是存在线程相关的堆栈里的.不同线程要尝试取就会assert错
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);
1.将创建线程的窗口的hwnd通过参数传递给线程函数;
2.在线程函数中通过hwnd发消息给这个窗口;(PostMessage);
3.当这个窗口接到消息的时候,再利用一般的方法告诉其他的窗口做事情。
方法二:
1.获得当前窗口的线程ID,::GetCurrentThreadID();或者在App里直接取得线程ID,App有成员变量的。
2.然后通过参数传递给线程,这时候线程可以发送PostThreadMessage(...);告诉另一个线程做事情。