MFC如何在父窗口的指定位置创建子窗口,及border边框属性设置
2017-04-06 11:00
726 查看
在 VS2012的MFC工程中,如何在父窗口的指定位置创建子窗口?这里以一个实例来演示:1、我们新建一个基于对话框的项目,项目名字为test。2、在资源视图中添加两个对话框IDD_ENQIURENOTE_NEWDLG_INFO、IDD_ENQIURENOTE_NEWDLG_ENQIURE,并设计好对话框的界面。在资源视图的子窗口通过右键,选择属性,把子窗口的style设置为child。而picture控件的border属性默认是典型的对话框形式,如果想搞嵌入式的,可以改为none,即没有边框;或者改为thin则是细边框.3、在父窗口上用工具箱的PictureControl选择出一个区域,将来让子窗口显示在这个区域中,并将该控件命名为IDC_STATIC_ChildArea。4、在资源视图中找到两个子窗口的对话框上,分别右键,选择添加类(Add Class),然后弹出的对话框中对新增的类进行设置。其中,在基类(Base Class)需要选择CDialogEx(老版本的VC是CDialog),然后输入新增类的名称(例如输入C_NewDlg1、C_NewDlg2),点击确认即可新增类。这样,这个新建的类不仅有对应的头文件还有.cpp文件,还有一个与这个类对应的UI界面。5、把需要将新增的类对应的头文件#include "C_NewDlg1.h"、 #include "C_NewDlg2.h"包含到它对应的父类的头文件(如testDlg.h )中。同时在protected域中声明一个这个类的对象,比如:
[cpp] view plain copy
C_NewDlg1 m_NewDlg_Info;
C_NewDlg2 m_NewDlg_Enqiure;
CRect m_DialogChild;
6、在父类的初始化函数OnInitDialog()中作如下的改动:
[cpp] view plain copy
BOOL CtestDlg::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。
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中添加子内容到某一个区域的功能。
参考资料:http://www.cnblogs.com/zhaoxiaoming/archive/2011/10/10/MFC_NewDialog.html转载自: http://blog.csdn.net/u013174689/article/details/35780993
[cpp] view plain copy
C_NewDlg1 m_NewDlg_Info;
C_NewDlg2 m_NewDlg_Enqiure;
CRect m_DialogChild;
6、在父类的初始化函数OnInitDialog()中作如下的改动:
[cpp] view plain copy
BOOL CtestDlg::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。
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中添加子内容到某一个区域的功能。
参考资料:http://www.cnblogs.com/zhaoxiaoming/archive/2011/10/10/MFC_NewDialog.html转载自: http://blog.csdn.net/u013174689/article/details/35780993
相关文章推荐
- MFC如何在父窗口的指定位置创建子窗口,及border边框属性设置
- 如何设置vs窗口的属性管理器和解决方案管理器的位置
- 如何设置MFC单文档主窗口的位置?
- 如何设置窗口大小和位置?
- Flex中如何通过tickValues属性,在程序中设置Slider坐标位置
- MFC中如何创建固定大小的窗口
- 在windows/MFC编程中如何设置窗口半透明
- Flex中如何利用getTabAt函数遍历TabNavigator容器的各个Tab,并且通过labelPlacement属性设置标签位置
- c# .net 如何截取当前程序窗口指定位置的截图
- 如何用控件的CALayer 的特性创建 圆角界面,边框,和设置背景
- 3. 如何创建数据库(可以指定数据库文件的位置)
- MFC对话框应用程序 如何在对话框窗口显示前获取窗口(控件)的屏幕坐标位置
- Qt for Symbian中如何添加头文件路径和打包文件|Qt 窗口外边框设置。
- [WPF]如何实现设置弹出窗口的Owner属性功能?
- 如何在PB数据窗口中设置数据窗口的更新属性
- MFC中如何创建固定大小的窗口
- Flex中如何遍历TabBar控件的各个Tab,并且通过labelPlacement属性设置标签位置
- Flex中如何通过设置editable属性创建一个可编辑的DataGrid控件的例子
- MFC中设置窗口大小位置
- vtkBorderWidget设置窗口位置的问题