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

 我来答
约定20125
2018-08-25 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:96%
帮助的人:2837万
展开全部
这里以一个实例来演示:
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中添加子内容到某一个区域的功能。
百度网友d4d8d65
2018-08-24
知道答主
回答量:8
采纳率:0%
帮助的人:6334
展开全部
丰收点燃了四季沐歌,一簇簇花开的笑靥,奏响土地发自内心的乐声,香息一页丰收的语言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可爱的小黑土土
2018-08-24 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:323
采纳率:58%
帮助的人:43.2万
展开全部
Movewindow
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式