首先你要自己定义一个消息,也就是你的WM_IAMFINISHED,然后在线程结束的时候取得主线程的指针,向它传递消息就可以了。用PostMessage().

解决方案 »

  1.   

    #define WM_IAMFINISHED WM_USER+0x123
    :)
      

  2.   

    我还是有一点问题:
    我在该对话框类中定义了一个函数用以响应WM_IAMFINISHED 消息,为:
    LRESULT CTestDlg::OnFinished(WPARAM wparam, LPARAM lparam)
    {
    AfxMessageBox("A thread has finished");
    return 0;
    }又增加了消息映射:
    BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
                  ......
    ON_MESSAGE (WM_IAMFINISHED,OnFinished )
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()在线程结束的地方发送消息:
    UINT OnBeginThread(LPVOID pParam)
    {
    Sleep(10000);
    ::PostMessage((HWND) pParam,WM_IAMFINISHED,0,0);
    return 0;
    }
    但是线程结束时,却没有弹出对话框,请问是什么原因?
      

  3.   

    请检查一下在TestDlg.h中DECLARE_MESSAGE_MAP()宏前有没有加上
    afx_msg LRESULT OnFinished(WPARAM wparam, LPARAM lparam);
    一句?