MFC创建嵌入式对话框,实现切换不同的对话框在主对话框指定位置

本例子以两个子对话框为例,点击两个按钮,分别显示不同的对话框内容。

1、新增两个按钮,分别为打开对话框1和打开对话框2;

2、新增对话框1,ID为IDD_DIALOG1,修改属性中,style为child, Border为none;双击确定,生成CDialog1类,继承CDialog类;

3、新增对话框2,ID为IDD_DIALOG2,修改属性中,style为child, Border为none;双击确定,生成CDialog2类,继承CDialog类;

4、分别在两个对话框中添加内容,显示两个对话框的区别。

5、在主对话头文件类中,增加两个对话框变量;

private:
CDialog1 m_Dialog1;
CDialog2 m_Dialog2;

6、在主对话框界面中增加一个pictureControl控件,ID为IDC_PICTURE1,控件大小和dialog1一致,属性中设置visual为false,不可见;

     在主对话框界面中增加一个pictureControl控件,ID为IDC_PICTURE2,控件大小和dialog2一致,属性中设置visual为false,不可见;

7、在主对话的onInitDialog()函数中增加如下处理,用来把对话框1和2显示在对应的IDC_PICTURE1和IDC_PICTURE2上。

CRect rect1;
GetDlgItem(IDC_PICTURE1)->GetWindowRect(&rect1);
ScreenToClient(&rect1);


m_Dialog1.Create(IDD_DIALOG1, this);
m_Dialog1.MoveWindow(rect1.left, rect1.top, rect1.Width(), rect1.Height());
m_Dialog1.ShowWindow(SW_HIDE);


CRect rect2;
GetDlgItem(IDC_PICTURE2)->GetWindowRect(&rect2);
ScreenToClient(&rect2);


m_Dialog2.Create(IDD_DIALOG2, this);
m_Dialog2.MoveWindow(rect2.left, rect2.top, rect2.Width(), rect2.Height());
m_Dialog2.ShowWindow(SW_HIDE);

8、在按钮打开对话框1中添加如下代码隐藏对话框2,显示对话框1:

       m_Dialog2.ShowWindow(SW_HIDE);
m_Dialog1.ShowWindow(SW_SHOW);

9、在按钮打开对话框2中添加如下代码隐藏对话框1,显示对话框2:

m_Dialog1.ShowWindow(SW_HIDE);
m_Dialog2.ShowWindow(SW_SHOW);


代码参见上传资源:


你可能感兴趣的:(MFC)