MFC如何在父窗口的指定位置创建子窗口,及bo

如题所述

这里以一个实例来演示:
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域中声明一个这个类的对象,比如:
C_NewDlg1 m_NewDlg_Info;C_NewDlg2 m_NewDlg_Enqiure;CRect m_DialogChild;

6、在父类的初始化函数OnInitDialog()中作如下的改动:

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中添加子内容到某一个区域的功能。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-08-24
丰收点燃了四季沐歌,一簇簇花开的笑靥,奏响土地发自内心的乐声,香息一页丰收的语言。
第2个回答  2018-08-24
Movewindow

MFC如何在父窗口的指定位置创建子窗口,及bo
1、我们新建一个基于对话框的项目,项目名字为test。2、在资源视图中添加两个对话框IDD_ENQIURENOTE_NEWDLG_INFO、IDD_ENQIURENOTE_NEWDLG_ENQIURE,并设计好对话框的界面。在资源视图的子窗口通过右键,选择属性,把子窗口的style设置为child。而picture控件的border属性默认是典型的对话框形式,如果想...

MFC中如何在父窗口中显示一个子窗口
其中实参 this 就是父窗口指针,按照你的需求传进来就可以了。或者用SetParent()接口来指定父窗口。

MFC DoModal()显示后子窗口 父窗口被隐藏?想操作父窗口 怎么办
DoModal是模态对话框,这样不能操作mainwindow对话框的,使用上面的create方法显示pos对话框就可以同时操作两个对话框了

MFC 在父窗口中嵌入显示子窗口
在IDD_1的成员处加上IDD_2的对象obj,然后在IDD_1的"装入函数"中加上:obj.create(...obj.showwindows(SW_SHOW)就行了

mfc在通过父窗口的控件对子窗口中的控件进行操作做
你可以在父窗口中调用子窗口的头文件,然后通过在要操作的地方调用子窗口头文件,通过头文件可以看到子窗口的全部控件,然后对你要操作的控件进行修改。比如:子窗口头名为a.h,那你在父窗口的初始化中包含a.h,include "a.h",调用的时候 a newa = new a;然后通过"newa."调用子窗口的东西,给...

mfc:如何在对从话框中打开一个新对话框后将之前的对话框关闭_百度知 ...
如果你想要在父窗口打开子窗口,那么就得保证父窗口不能关闭,否则你的子窗口会被自动销毁。如果你真的想把父窗口关闭,不妨将子窗口做成另外一个exe,打开另外一个exe也就意味着打开另一个进程。不会对子窗口造成影响。

MFC 子窗口怎么得到父窗口的父窗口的指针,并对父窗口的父窗口的按钮进行...
子窗口获得父窗口指针 GetParent();比如父窗体如下 CParentDlg : public CDialog { public:CButton m_bt;} 子窗体操作父窗体的按钮m_bt,可以这样(CParentDlg *)GetParent()->m_bt.SetWindowText("hello");

MFC 父窗口获取子窗口
如果子窗口是模式对话框,可以在子窗口关闭之后,获取子对话框中的值。如:CSubDlg subDlg;if(IDOK == subDlg.DoModel()){ int n = subDlg.m_nValue;}发送消息的话是这样:GetParent()->SendMessage(MESSAGE_ID, lParam, wParam); MESSAGE_ID是你的自定义消息ID或者干脆对GetParent()进...

VC\/MFC关于父对话框与子窗体之间消息的传递?
父窗口启动子窗口时,肯定有子窗口的句柄,用这个字柄给子窗口PostMessage自定义消息(把窗口大小作为参考传过去),在子对话框里写个函数响应这个自定义消息就行了。当然啦,发送自定义消息最好是放在响应ON_SIZE消息的函数里(注意里面要做一个处理:Windows第一次调用ON—SIZE时不能响应)。如果还是没...

C#中如何处理父窗口及其子窗口标题
首先 我们必须理解 MDI 本身是如何通过 Windows 核心 API 来实现自己的行为特性的 其实这与MFC或者 NET的公共语言运行时(CLR)没有什么关系 在创建MDI应用时 框架及其子窗口有各自专门的窗口过程 DefFrameProc 和 DefMDIChildProc 一个处理各种 WM_MDIXXX 消息以及其它类似 WM_SIZE WM_SYSMAND 的消息...

相似回答