建立一个单文档MFC应用程序,初始界面是这样的
然后我们想将窗口分成两块,左侧为绘图区,右侧为选择控制区:
一、资源编辑
1. 选择资源视图。
2、选择资源视图中Dialog选项,按右键弹出Popup菜单;选择插入Dialog选项。
可以看到Dialog下面有两个对话框模板,其ID分别为:IDD_ABOUTBOX和IDD_ADDITION_DIALOG1,前者是“关于”对话框的模板,后者是主对话框的模板。ID是资源的唯一标识,我们可以换一个名字,其本质上是一个无符号整数,一般ID代表的整数值由系统定义,我们无需干涉。
3.在属性窗口中,编辑修改Dialog(对话框)的相关属性。
IDD_DIALOG1 改为: IDD_新名字
Style 选择Child.
Border 选择 None.
将确定和取消键删除:选择按钮单击右键删除。
关于属性:
1.ID:对话框ID,唯一标识对话框资源,可以修改。
2.Caption:对话框标题。
3.Border:边框类型。
4.Maximize:是否使用最大化按钮。
5.Minimize:是否使用最小化按钮。
6.Style:对话框类型。有三种类型:Overlapped(重叠窗口)、Popup(弹出式窗口)和Child(子窗口)。
4.为新资源映射一个类。
选中Dialog,双击左键弹出MFC添加类向导窗口。
命名类名 --- 新类名
基类选择 --- CFormView // CFormView类是用于窗体视图的基类
系统自动生成新类名.cpp和新类名.h两个文档模板。
二、分割窗口
1. 重写CMainFrame类的虚函数OnCreateClient()。
选择弹出类向导对话窗口,添加OnCreateClient函数。
2. CMainFrame类添加窗体分割条变量
CSplitterWnd m_wndSplit;
3. CMainFrame.cpp添加"新类名.h"
4. 在OnCreateClient函数中添加如下代码。
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_wndSplit.CreateStatic(this, 1, 2)) //建立一个一行两列的静态分割窗口
return 0;
if (!m_wndSplit.CreateView(0, 0, pContext->m_pNewViewClass, CSize(650, 100), pContext))
return 0;
if (!m_wndSplit.CreateView(0, 1, RUNTIME_CLASS(新类名),CSize(100, 50), pContext))
return 0;
ShowWindow(SW_SHOWMAXIMIZED);
return TRUE;
}
5. 编译运行,结果如下:
应用程序窗体分割为两部分,左侧是视图区,右侧为交互
选择区。