中格挡的动作要领:Vs2008 MFC生成分割窗体

来源:百度文库 编辑:爱问知道 时间:2020/01/29 13:50:34
Vs2008 MFC项目

简介
本文主要是对MFC中CSplitterWnd的用法做个简要介绍。我找了很久相关资料都没有找到适合新手的相关文章。希望本文能够帮助有着类似痛苦经历的兄弟。


背景
分割窗体就是把一个窗体分割成多个面板,如图1那样,或者像是迅雷那样。面板就是放各种控件或视图的容器。

分割窗体有两种形式,静态和动态。今天讲的只涉及到静态的,因为动态的要复杂些。两种形式的区别在于动态的可以收拢和展开,静态的则不能。


代码指南

 

0、建立项目

   打开VS2008,新建项目,选择MFC,MFC应用程序。


图2

如上图所示,设置好之后单击“完成”。


1、定义变量

   如图4,在MainFrm.h中添加变量 CSplitterWnd splitter 和 BOOL isInit。布尔变量isInit用来管理分割窗体的状态,用来判断是否已经分割过了。splitter是用来把窗体分割成图1那样子。另外,在MainFrm的构造函数中,把 isInit设置为FALSE。如图3.


图3


图 4

技巧:用惯了VC#的智能感知,很不习惯VC里面没有智能感知。不过据我所知早在VC6里面就有个快捷键 Alt+→ 来实现类似智能感知的功能,如图3中,输入 is 后,同时按下Alt + →这两个键就出现了供选择变量、方法、宏等的列表,继续输入 in 后,isInit就出来了。


2、分割窗体

分割窗体的动作应该在主窗体创建客户区的时候执行。在MainFrm中对OnCreateClient消息进行重写就可以达到我们的目的。

在VC2008中,单击“视图”,“类视图”,选中CMainFrm,右键,选择“属性”,如图5.


图5

在“属性”窗口右上选择“重写”,如图6. 就是“闪电”右边的右边那个。


图6

向下拉动滚动条,找到OnCreateClient,选择 <添加> OnCreateClient。如图7.


图7

在新创建的函数中写代码,如图8。


图8

CreateStatic函数中,参数依次是父窗口、分成几行、分成几列。如上代码,我们是要分成1行2列。

3、创建视图

在上一步中,我们把窗体分割成两个面板。如果不继续分割成更多子面板的话,就必须绑定一个视图到一个面板上。在调用了CreateStatic 之后,接着绑定默认视图到那两个面板上。如图9。还是图8的那个函数里接着写的。


图9

RUNTIME_CLASS是MFC中的一个宏,用来动态创建一个类。侯捷的《深入浅出MFC》里面有详述。

为了能使代码生效,还需要做如下设置。在MainFrm.cpp中添加CspliterView的头文件,如图10。


图10


在spliterView.h中添加spliterDoc.h的引用。如图11。


图 11

4、改写返回值

把return CFrameWndEx::OnCreateClient(lpcs, pContext); 注释调,添加代码return TRUE;如图12。


图12


5、响应窗体缩放

SetRowInfo和SetColumnInfo函数用来响应窗体大小变化的消息。如图5 至 图7所示,创建WM_SIZE消息处理函数。如图13、图14。


图13


图14

6、F5

     请按下F5。

怎么使用MFC做个窗体? VC/MFC 窗体变量传递问题 在VB中如何分割窗体? (高分) VC/MFC 窗体类之间变量如何传递? 请教一个ACCESS窗体生成的问题 vc6.0第一个载入的窗体的初始化代码应该在什么位置?(mfc) 谁有"基于遗传算法的图象分割"MFC应用程序 在VC++/MFC中我想点击一个窗体上的按钮后使窗体最小化最好是最小化到任务栏中!! 在VC /MFC中我想点击一个窗体上的按钮后使窗体最小化最好是最小化到任务栏中!! 请问有什么好的控件可以实现vb窗体分割? 我用MFC.net生成具有数据库连接功能的工程时.. MFC单文档视图中如何生成类似对话框中的控件啊?谢谢大侠了!! 用MFC生成的dll文件为什么不能通过 TlbImp进行转换 vb如何生成数据窗体后添加查寻按扭的工能 我的ASP.NET为什么老是出现窗体设计器生成的代码丢失 vb中使用数据库窗体向导是选择帮定ado控件和帮定ado代码所生成的窗体代码有什么区别? 我用视频分割软件后生成的文件声音画面不同步怎么回事? 如何在VC中创建不是基于MFC的EXcel表格的生成阿?用C语言的阿 MFC做好了界面,生成的.exe文件要怎么样才能在没装VC的电脑上用? 随机生成20个100以内的正整数,将其中的奇数和偶数分两行显示在窗体上 VB 6.0中工具栏中找不到ADD MDI Form如何生成一个MDI窗体.还有,状态栏控件(sbstatusbar)找不到呀 在Windows编程中,窗体要读*.rc文件,怎么让C编译器启动生成,还是自己写 有没有一种容易上手,安全性高的文件分割器,可以生成一个可执行文件的那种? 什么是MFC