标题有点麻烦了,其实问题比较简单一个基于对话框的程序,主对话框的窗口是A, 然后用DoModal打开一个子对话框B, 在子对话框B中会打开一个线程,要把这个线程中的某些信息显示在B中的某个文本框中,该如何做? AfxGetMainWnd?

解决方案 »

  1.   

    你启动线程的时候,把this指针传给回调函数AfxBeginThread(yourfunc, this);
      

  2.   

    sinsou:消息如何传给子对话框呢?lixiaosan:
    我程序有点特殊,没办法把指针传过去,否则改动量太大了。 有办法在线程内获得子对话框的指针吗?
      

  3.   

    还是把对话框B的指针传进去吧,用消息一样要对话框B的句柄如果真不想改,也可以在A对话框中加一成员变量来记录对话框B的句柄
    HWND m_hWndB;
    m_hWndB = NULL;
    在定义了B之后,可以设置m_hWndB = dlgB.GetSafeHwnd();这样就可以用消息了,在线程中AfxGetMainWnd获得句柄发送消息或是把句柄直接改为指针也一样
    CWnd *m_pB;m_pB=&dlgB;在线程中AfxGetMainWnd获得B的指针
      

  4.   

    不应该跨线程处理UI,应该将主窗口的HWND作为参数传给工作者线程,工作者线程需要处理UI时,向主窗口的HWND发送消息。