我建立了基于Dialog的MFC工程。把登录做在MFC自生成的窗口类里。然后就是一个含tab控件的主对话框作为MFC自生成的对话框类的成员。
      登录成功之后,隐藏登录窗口,显示含tab的主对话框。
      问题是,当我点击主对话框的关闭时,如何向MFC自生成的窗口类发消息说叫登录框显示出来或者关闭?
      我用::PostMessage(GetDlgItem(IDD_MY_DIALOG)->m_hWnd,WM_MAIN_CLOSE,NULL,NULL);程序报错。不能用GetDlgItem获取句柄。IDD_MY_DIALOG为MFC自生成的窗口类资源ID。

解决方案 »

  1.   

    MFC自己生成的对话框 由App类成员m_pMainWnd指向
      

  2.   

    把发送消息的改为::PostMessage(theApp.m_pMainWnd->m_hWnd,WM_MAIN_CLOSE,NULL,NULL)。可以传到MFC自生成的对话框的OnClose函数里,但是登录框并没有消失。点击一下登录框的X,报错。
      

  3.   

    App类的InitInstance()函数中
    CLoginDlg login;
    if(IDOK != login.DoModal())
    {
     return FALSE;
    }CXXMainDlg dlg;
    m_pMainWnd = &dlg;
    dlg.DoModal();