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);


代码参见上传资源:


  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值