我在模式对话框的OnInitDialog中通过AfxBeginThread调用一函数(即AfxBeginThread(function,this); ),现在我想在程序执行完后关闭该模式对话框该如何做,把对话框改为非模式也没关系。
有人教我说用SendMessage()来发送WM_CLOSE事件来关闭对话框,可是在function中如何通过this来的到窗体句柄HWND呢??

解决方案 »

  1.   

    在function中,
    CXXDiadlg *pDlg=(CXXDiadlg*)lparam;
    pDlg->GetSafeHwnd();来得到窗体句柄
      

  2.   

    不需要按钮吧,我想你直接用
    this->OnOk();
    就可以阿,何必搞的那么复杂呢?
      

  3.   

    UINT function(LPVOID *P)
    {
      CyourDlg *dlg=(CyourDlg *)p;
    //todo
    return dlg->PostMessage(SW_CLOSE);
    }
      

  4.   

    可以调用CDialog::DestroyWindow()方法。改变为非模式时,你可以用调用PostNcDestroy()方法消除圣对话框的this指针。
      

  5.   

    AfxBeginThread(function,this); this:窗体指针。通过他可以得到窗体句柄;::SendMessage(this->GetSafeHwnd(),WM_CLOSE,0,0);
    可以关闭窗口。
      

  6.   

    谢谢大家!由于走出学校后就一直在搞Lotus编程,对vc、vb等开发工具都不熟,vc还是大学时看过一点。让大家见笑了!不过我现在学java!