前言        

  当前许多优秀的软件都采用“多视”技术。

所谓“多视”,是指在同一个框架窗口里同时显示多个视图。

通过运用这种技术,可以在框架的有限控件内同时提供用户更大的信息量,并且使得用户界面更加友好,增强软件的可操作性。

拆分类型

MFC支持两种类型的拆分窗口:静态的和动态的。

  静态拆分窗口:行列数在拆分窗口被创建时就设置好了,用户不能更改,但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。要找一个使用了静态拆分窗口的应用程序,只要看一下Windows管理器即可。

  动态拆分窗口:最多可以有两行两列,但它们可以相互拆分和合并。VC就使用了动态拆分窗口使得可以同时编辑源程序文件的两个以上不同的部分。

  选择静态或动态拆分的一个准则是是否希望用户能够交互地修改拆分窗口的行列配置。另一个决定因素是计划在拆分窗口中使用的视图种类。

CSplitterWnd

CSplitterWnd类主要为窗口分割提供了封装,窗口被分成各个窗格后,由该类的对象负责管理。 

   

多视类之间的交互

  在MFC程序中,各个视类之间进行数据交互是通过Doc类来完成的,由CDocument类来处理文档,而由CView类来显示。即将数据存储到CDocument类中,而用到数据的时候再从该类中读取。

锁定切分条

  当用户创建好分割窗口后,有时并不希望通过拖动切分条来调节窗口的大小。这时就必须锁定切分条。锁定切分条的最简单的方法莫过于不让CSplitterWnd来处理WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR消息,而是将这些消息交给CWnd窗口进行处理,从而屏蔽掉这些消息。

切分条的定制

  由Window自己生成的切分条总是固定的,没有任何的变化,我们在使用一些软件比如ACDSee的时候却能发现它们的切分条却是和自动生成的切分条不一样的。那么如何定制自己的切分条呢?通过重载CSplitterWnd的虚方法OnDrawSplitter和OnInvertTracker可以达到这样的目的。

一个比较完整的例子:http://pan.baidu.com/s/1ge39Inh

VC++ 窗口拆分CSplitterWnd的更多相关文章

  1. VC窗口类的销毁-是否需要delete

    Windows窗口如果使用new的方法添加之后,在父窗口析构的时候,有些需要delete有些却不需要delete.这个的确有点坑,由于c++的实现,对于每个自己new的对象,我都会delete删除它, ...

  2. vc++窗口的创建过程(MFC消息机制的经典文章)

    一.什么是窗口类  在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC ...

  3. VC窗口最大化方法

    一.主框架窗口最大化 一般方法 1.修改App::InitInstance中的 m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateW ...

  4. VC 窗口出现白屏闪烁的解决办法

    处理一下窗口的WM_ERASEBKGND消息即可. 在messagemap里添加ON_WM_ERASEBKGND() 在窗口头文件里添加 afx_msg BOOL OnEraseBkgnd(CDC* ...

  5. VC++窗口创建过程,图形绘制,时钟程序

    创建窗口步骤: (1)注册窗口类(RegisterClassEx) (2)创建窗口(CreateWindowEx) (3)在桌面显示窗口(ShowWindow) (4)更新窗口客户区(UpdateWi ...

  6. vim 窗口操作:多tab|窗口拆分

    转 我是一个vimer,还在用着这个上古时代的编辑器,但我并不是守旧派,因为即使是 现在,vim也在不断的创新.我用vim也有一两年的光景了,但是我还是不敢我自己 精通vim,当然我使用vim基本是两 ...

  7. VC 窗口置顶并激活为当前窗体

    转载请注明来源:https://www.cnblogs.com/hookjc/ if (this != GetForegroundWindow())                           ...

  8. VC.窗口最前(置顶)

    1.Delphi7的代码 procedure TfrmMain.cbWndTopmostClick(Sender: TObject); var liExStyle :LongInt; begin // ...

  9. VC++ 窗口透明化及透明窗口上绘画、截图、轨迹

    源文件:https://files.cnblogs.com/files/MrFengD/Temp.rar

随机推荐

  1. 理解HTTP/304响应

    理解HTTP/304响应 原文:http://www.telerik.com/automated-testing-tools/blog/eric-lawrence/12-11-06/understan ...

  2. Linux命令-权限管理命令:chown

    选项:-R 处理指定目录以及其子目录下的所有文件 useradd wangyunpeng 创建一个用户名为wangyunpeng的用户 passwd wangyunpeng 给wangyunpeng这 ...

  3. SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

    SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)   SQL Server 2008提供了一个增强的SQL命令Merge,用法参看M ...

  4. mysql 用户自定义变量

    SQL中可以用变量来操作值.那么问题就来了.mysql中怎么定义一个变量呢? 一.定义变量 1.定义变量的语法: set @var_name=expr [,@var_name=expr] ... 2. ...

  5. Atitit.软件仪表盘(0)--软件的子系统体系说明

    Atitit.软件仪表盘(0)--软件的子系统体系说明 1. 温度检测报警子系统 2. Os子系统 3. Vm子系统 4. Platform,业务系统子系统 5. Db数据库子系统 6. 通讯子系统 ...

  6. Atitit. 解决unterminated string literal 缺失引号

    Atitit. 解决unterminated string literal 缺失引号 原因:::或许string没使用引号括号起来...missingMessage缺失了一个单个的引号 Error:  ...

  7. How to export Excel files in a Python/Django application

    https://assist-software.net/blog/how-export-excel-files-python-django-application CONTENTS Introduct ...

  8. HTTP协议各个参数详解

    HTTP消息是由普通ASCII文本组成.消息包括消息头和数据体部分.消息头以行为单位,每行以CRLF(回车和换行)结束,消息头结束后,额外增加一个CRLF,之后内容就是数据体部分了. http请求: ...

  9. 53. Reverse Words in a String【easy】

    Given an input string, reverse the string word by word. For example, Given s = "the sky is blue ...

  10. The difference between Severity and Priority

    The difference between Severity and Priority[1] 2015-06-24 There are two key things in defects of th ...