CDlgMove dlg(NULL);
dlg.DoModal();
HWND hWnd = dlg.GetSafeHwnd(); //<------这里执行后,hWnd竟然是NULL ?????,把代码改为:
CDlgMove *pDlg
pDlg = new CDlgMove(NULL);
pDlg->DoModal();
HWND hWnd = pDlg->GetSafeHwnd();还是同样的效果!!!把CDlgMove dlg(NULL);改为CDlgMove dlg(this);也没任何好转!!!而且,CDlgMove中,目前没有任何代码,只有默认的代码和一个CComboBox

解决方案 »

  1.   

    DoModal退出时对话框窗口已经关闭了
      

  2.   

    哦,明白了,我是要访问 dlg中的一个成员变量,
    看来只能访问变量,不能访问控件?? 呵呵
      

  3.   

    你等到
    dlg.DoModal();
    之后,dlg这个对话框已经销毁了,句柄当然没有了。改为Modeless的吧,或者另外开一个线程,在dlg仍然还存在的时候获得句柄。
      

  4.   

    >>哦,明白了,我是要访问 dlg中的一个成员变量,
    >>看来只能访问变量,不能访问控件?? 呵呵
    错CDlgMove dlg(NULL);
    HWND hWnd = dlg.GetSafeHwnd(); //放在这里才行!
    dlg.DoModal();
      

  5.   

    CDlgMove dlg(NULL);
    dlg.DoModal();
    HWND hWnd = dlg.GetSafeHwnd(); //
    你想得到hWnd的值,但是你必须执行完DoModal()后才能得到,那么,你DoModal()后,直到有返回时才能看hWnd,这时dlg已经销毁了呀