您的位置:首页 > 其它

窗口分割

2016-01-12 18:37 197 查看
建立一个单文档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. 编译运行,结果如下:



应用程序窗体分割为两部分,左侧是视图区,右侧为交互

选择区。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: