窗口分割

建立一个单文档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. 编译运行,结果如下:

 

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

选择区。


猜你喜欢

转载自blog.csdn.net/baixue0729/article/details/50506045