在一个基于对话框的程序中,创建了一个用户界面线程,在用户界面线程中创建了一个非模态的对话框。我现在想知道的是,如果主线程想给用户界面线程中的非模态对话框发消息,该怎么操作?反过来,从非模态对话框中向主线程中发消息,又该怎么操作?我主要是不知道如何在线程中获得主线程中对话框的句柄。请大家给指点一下

解决方案 »

  1.   

    AfxGetMainWnd
    //The following line send a WM_CLOSE message 
    //   to the Application's main window. This will cause the
    //   Application to exit.
    AfxGetMainWnd()->PostMessage(WM_CLOSE, 0, 0);
      

  2.   


    应该是这样了,不然就传递的时候,在线程的参数中,就把主线程的this指针当作参数也传递过去,这样就有了
      

  3.   

    可以把句柄做成一个全局变量
    或者用findwindow来获取
      

  4.   

    显然,主线程和非模态对话框能够互相获取对方的句柄就可以,这样就可以互相发消息了非模态对话框中: AfxGetMainWnd()主线程中:这个更容易,你是在主线程中创建的,把该对话框的指针存起来就行了,什么时候都可以用
      

  5.   

    用户界面线程从CWinThread派生出来,CWinThread类有个成员函数 GetMainWnd()用于获得指向线程主窗口的指针所以,::PostMessage(GetMainWnd()->GetSafeHwnd(),WM_CLOSE,0,0);