1,父窗口a 创建 子窗口 b
2, b 创建 线程 c
3, 在线程 c 中 需要更新 父窗口 a 的数据为什么每次更新都报错?
如何才能实现这个目标?
各位帮帮忙了
我折腾了一上午了

解决方案 »

  1.   

    我尝试了用SendMessage但是,还是报错
    怎么办?
      

  2.   

    是assert错吧?
    你看看是哪里报错?
    mfc的窗口信息是存在线程相关的堆栈里的.不同线程要尝试取就会assert错
      

  3.   

    线程函数:
    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);
      

  4.   

    方法一:
    1.将创建线程的窗口的hwnd通过参数传递给线程函数;
    2.在线程函数中通过hwnd发消息给这个窗口;(PostMessage);
    3.当这个窗口接到消息的时候,再利用一般的方法告诉其他的窗口做事情。
    方法二:
    1.获得当前窗口的线程ID,::GetCurrentThreadID();或者在App里直接取得线程ID,App有成员变量的。
    2.然后通过参数传递给线程,这时候线程可以发送PostThreadMessage(...);告诉另一个线程做事情。