情况描述:
小弟在一个对话框应用程序中开启另一个用户界面线程,想在主对话框中通过新线程的指针设置界面线程对话框的标题及相关属性,但就是得不到正确的指针.
请问如何获得。
//问题1 如何得到 pWinThread中主窗口的指针呢?下面语句(使用线程对象的成员变量m_pMainWnd)肯定不正确,否则就不会有问题2
CWinThread *pWinThread;
pWinThread= ::AfxBeginThread(RUNTIME_CLASS(CThrdSpeakToOne));
TRACE("pWinThread->GetMainWnd(): %d \n" ,pWinThread->GetMainWnd());
TRACE("pWinThread->m_pMainWnd: %d \n" ,pWinThread->m_pMainWnd);
TRACE("AfxGetMainWnd(): %d \n" ,AfxGetMainWnd());
//下面提供一组TRACE的值
//pWinThread->GetMainWnd(): 23002900 
//pWinThread->m_pMainWnd: 23002900 
//AfxGetMainWnd(): 1244396 
((CThrdSpeakToOne*)pWinThread)->m_pMainWnd->SetWindowText("与"+strAsk+"聊天中");
//问题2 上面这句的结果改变的不是新的界面对话框的标题,而是主对话框的标题 为什么?
//       pWinThread->m_pMainWnd究竟指向who?

解决方案 »

  1.   

    pWinThread->m_pMainWnd这个值需要你在界面线程初始化创建界面窗体的时候赋值吧并且你创建了线成后,主线程和子线程的执行是随机的,所以不好确定是否已经创建了子线程的窗体
      

  2.   

    不错!
    cnwolf(独狼) 说的很对:昨天我跟踪了一下 ,确实是随机执行,子线程确实没有把窗体创建出来。我赋值当然就错了sycnick(李小虾) 你说我应该怎么修改设计呢 ,不要把话掰开说,很急人的!
    我很乐意听同学们的任何意见。
      

  3.   

    用event来做线程同步,用自定义消息来进行异步调用