我想利用MFC建立一个界面。大致是登录界面(对话框1),主界面(对话框2),菜单界面(对话框3)。我把对话框3的类型改为child了。但是,对话框3的父类默认为登陆界面(对话框1)。如何改成对话框2?

解决方案 »

  1.   

    SetParent;
    或者修改调用路径
      

  2.   

    对话框3.SetParent(对话框2);你说得不太清楚,只能给你这一个函数
      

  3.   

    哥,是我说的不清楚。我也发现应该是设置父窗口。
    你在帮我看看这个吧。m_menu1是对话框3的对象,hwnd是对画框2的句柄
    m_menu1.SetParent(hwnd),可是运行就报错
    “CWnd::SetParent”: 不能将参数 1 从“HWND”转换为“CWnd *”
    不知道是应该加什么头函数,或者什么库?
    费心了
      

  4.   

    哥,是我说的不清楚。我也发现应该是设置父窗口。
    你在帮我看看这个吧。m_menu1是对话框3的对象,hwnd是对画框2的句柄
    m_menu1.SetParent(hwnd),可是运行就报错
    “CWnd::SetParent”: 不能将参数 1 从“HWND”转换为“CWnd *”
    不知道是应该加什么头函数,或者什么库?
    费心了
      

  5.   

    报错提示一般没参考价值,设置断点debug一下,看最后在哪里出错。
      

  6.   

    1.
    HWND SetParent(
      HWND hWndChild,      // handle to window whose parent is changing
      HWND hWndNewParent   // handle to new parent window
    );
    ::SetParent(m_menu1.m_hWnd,hwnd);
    2.
    CWnd* SetParent( CWnd* pWndNewParent );
    static CWnd* PASCAL FromHandle( HWND hWnd );
    m_menu1.SetParent(CWnd::FromHandle(hwnd));
      

  7.   

    m_menu1.SetParent(hwnd), 参数应当是CWnd*类型,直接填写对话框2的实例化指针,不要填句柄
    比如m_menu1.SetParent(pDlg2)
      

  8.   

     
    我是用CMainMenu dlg2;
    dlg1.DoModal();// TODO: 在此添加控件通知处理程序代码
    产生的对话框2,我巨菜。不知道应该怎么改?
    而且CMainMenu dlg2;
    dlg1.DoModal();// TODO: 在此添加控件通知处理程序代码
    在对话框1 的类中定义的