前言
一个对话框内嵌入另一个对话框
准备
创建一个基于对话框的mfc项目
开始
一、父窗体的设置
- 拖一个 static text 到父窗体
- 可以设置其属性border 为true 方便测试,并且为其绑定变量 CStatic m_static_child;
- 资源视图中新建一个对话框,自行布局
- 设置其熟悉 border 为none style 为child system menu 为false
- 为其添加一个类,同时开放以下的代码
// 对话框数据 /*#ifdef AFX_DESIGN_TIME*/ enum { IDD = IDD_DIALOG_Child }; //使这句话有效,后面有用到 /*#endif*/
- 在父窗体内编写代码
方法一:
CClassChildDlg *pDlg = new CClassChildDlg();
pDlg->Create(CClassChildDlg::IDD, &m_static_child);
pDlg->ShowWindow(TRUE);
缺点:大小需要自己去调整
方法二:
CClassChildDlg *pDlg = new CClassChildDlg();
pDlg->Create(IDD_DIALOG_Child, this);//子窗体的id
CRect ClassInfoRect;
GetDlgItem(IDC_STATIC_CHILD)->GetWindowRect(&ClassInfoRect);
ScreenToClient(ClassInfoRect);
pDlg->MoveWindow(ClassInfoRect);
pDlg->ShowWindow(SW_SHOW);
规避了方法一的缺点,会自适应