2.MFC中如何添加子窗口

在MFC中,有时候需要在同一个区域显示不同的内容,比如,点击某一个按钮,在一个特定的区域显示A,再次点击之后,在同样的区域显示B,这个时候,就需要构建子窗口来解决问题。

    首先,按照上一篇的方法新建两个窗口,此时需要注意的是,通过右键,选择属性,把窗口的style设置为child。

    然后,在父窗口上用PictureControl选择出一个区域,将来让子窗口显示在这个区域中。

    然后在父类的初始化函数中作如下的改动:

      BOOL CEnqiureNote_NewDlg::OnInitDialog()
    {
     CDialog::OnInitDialog();

    //下面的m_NewDlg_Info和m_NewDlg_Enqiure是将要显示在同一个区域的不同的类,其中默认显示第一个。
     m_NewDlg_Info.Create(IDD_ENQIURENOTE_NEWDLG_INFO,this);  

     m_NewDlg_Enqiure.Create(IDD_ENQIURENOTE_NEWDLG_ENQIURE,this);

//读取嵌入位置,IDC_STATIC_ChildArea是刚才的PictureControl的ID,m_Dialog 是一个CRect的变量,需要在头文件进行声明。

     GetDlgItem(IDC_STATIC_ChildArea)->GetWindowRect(&m_DialogChild);
     ScreenToClient(m_DialogChild);

    //以下的功能是显示m_NewDlg_Info的内容。为了显示m_NewDlg_Enqiure,可以在相应的处理函数中放入这行代码,并隐藏

//m_NewDialog_Info即可。
     m_NewDlg_Info.MoveWindow(m_DialogChild);
     m_NewDlg_Info.ShowWindow(SW_SHOW);
     GetDlgItem(IDC_STATIC_ChildArea)->ShowWindow(false);

     return TRUE;
    }

这样就完成了MFC中添加子内容到某一个区域的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值