静态切割窗体

创建静态切割窗体的步骤为:

1. 在父框架类中定义一个CSplitterWnd类型的成员对象。

2. 重载父框架类的CFrameWnd::OnCreateClient成员函数。

3. 在重载的CFrameWnd::OnCreateClient函数中调用CSplitterWnd成员对象的CreateStatic成员函数,然后能够调用CSplitterWnd成员对象的CreateView成员函数为每一个窗格创建视图。

       实例:在主框架窗体中的客户区创建一个两行一列的静态切割窗体:(首先创建一个名为“Example34”的MFC单文档project)

1. 在MainFrm.h文件里为CMainFrame类加入成员对象:CSplitterWnd m_wndSplitter;。

2. 在Class View类视图中找到CMainFrame类,右键点击。在右键菜单中选择Properties,就会显示属性页。然后在属性页的工具栏上点击Tip为Overrides的button,以下的列表中就列出了可以重载的函数,找到OnCreateClient生成重载函数。

3. 在MainFrm.cpp文件里找到刚重载的OnCreateClient函数进行改动。由于鸡啄米没有新建其它视图类,所以上下两个窗格的视图都是CExample34View。为了能识别CExample34View类,还需在MainFrm.cpp文件里加入#include "Example34View.h",在Example34View.h文件里加入#include "Example34Doc.h"。终于OnCreateClient函数改动例如以下:

C++代码
  1. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
  2. {
  3. // TODO: Add your specialized code here and/or call the base class
  4. CRect rc;
  5. // 获取框架窗体客户区的CRect对象
  6. GetClientRect(&rc);
  7. // 创建静态切割窗体。两行一列
  8. if (!m_wndSplitter.CreateStatic(this, 2, 1))
  9. return FALSE;
  10. // 创建上面窗格中的视图
  11. if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CExample34View), CSize(rc.Width(), rc.Height()/2), pContext))
  12. return FALSE;
  13. // 创建以下窗格中的视图
  14. if (!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CExample34View), CSize(rc.Width(), rc.Height()/2), pContext))
  15. return FALSE;
  16. return TRUE;
  17. //return CFrameWndEx::OnCreateClient(lpcs, pContext);
  18. }

4. 执行程序,在结果界面中关掉其它面板后效果例如以下:

假设大家想创建在当中某个窗格中再嵌套切割窗体,那么就须要再定义一个CSplitterWnd对象,以父窗格所在的CSplitterWnd对象为父框架窗体创建切割窗体就可以。

怎样将子窗体和对话框关联起来?

Class View,右击project名,Class Wizard,Add Class下拉菜单选择MFC Class...,填写类名CInfoView并选择基类为CFormView。此时会自己主动生成InfoView.h和InfoView.cpp并自己主动生成了一个对话框。在MainFrm.cpp文件里包括头文件InfoView.h

最后,将上面代码改动为:

  1. if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CInfoView), CSize(rc.Width(), rc.Height()/2), pContext))
  2. return FALSE;

如此一来,上面的子窗体就和对话框关联起来了。也就是说,上面的子窗体显示的是该对话框。

转载于:https://www.cnblogs.com/gccbuaa/p/7264381.html

静态切割窗体+关联对话框相关推荐

  1. C# 静态函数调用窗体控件

    C# 静态函数调用窗体控件 回调函数方法是静态函数,需要调用窗体控件,赋值或取值. 定义: public static Form1 mainFrm; mainFrm = this; public pa ...

  2. 一种用户体验-显示对话框时灰化你的主窗体

    袁永福 ( http://www.xdesigner.cn ) 2007-8-10 程序全部源代码下载(工程文件使用VS.NET2003格式):/Files/xdesigner/DisableMask ...

  3. 思科bfd静态路由切换_思科路由器与华为路由器静态路由关联双向BFD配置

    这里的思科路由器是C7609.按照官网文档,C7609配置BFD的大概步骤如下: 1.在接口下配置bfd和相关参数: interface gx/x bfd interval 400 min_rx 40 ...

  4. Qt的对话框与窗口--Qt中主要的窗体类及其用途

    Qt中主要的窗体类及其用途     常用的窗体基类是QWidget.QDialog和QMainWindow,在创建GUI应用程序时选择窗体基类就是从这3个类中选择.QWidget直接继承于QObjec ...

  5. 静态路由关联下一跳与出接口

    在华为设备上,静态路由可关联下一跳或者出接口,或者同时关联. 接下来我们探究静态路由写法不同有何区别 R1: int g0/0/0 ip add 192.168.12.1 24 ip route-st ...

  6. duilib底层机制剖析:窗体类与窗体句柄的关联

    转载请说明原出处,谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题. 这里是三篇关于thunk技术 ...

  7. [Delphi]罗技无限灵貂,驱动程序扩展补丁-Logz V3.0 (所有四向滚轮鼠标、应用窗体对话框均能通用)

    摘要:利用Delphi6自己开发的后台程序,在官方提供的SetPoint V2.40驱动程序以及笔者自行编写的扩展补丁V1.0.V2.0的基础上,再一次自定义扩展了鼠标上的众多功能键,连滚轮的功能也扩 ...

  8. C#WindowsForm常用窗体工具

    目录 1.Button(按钮):用于触发操作或执行特定的功能. 按钮通常具有以下特征和属性: 2.Label(标签):用于显示文本或提示信息. Label 控件具有以下特征和属性: Label 控件通 ...

  9. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

最新文章

  1. php导出excel(xls或xlsx)(解决长数字显示问题)
  2. React使用ES6语法重构组件代码
  3. WinForm窗体中如何在一个窗体中取到另一个窗体的值
  4. 你的密码已泄露!使用C#阻止弱密码
  5. java数据库编程——执行查询操作(二)
  6. 如何将Java应用程序置于Apache HTTP服务器之后
  7. LeetCode 1042. 不邻接植花(图的数据结构)
  8. 我们在使用计算机时,不能做什么?,11秋季学期计算机应用技术基础学习周期_01任务-在线作业[1]1...
  9. mysql表分区数量限制_MySQL分区表的局限和限制详解
  10. 《趣学JavaScript——教孩子学编程》——1.5 本章小结
  11. Zabbix 5.0使用方法探索及记录
  12. linux nmon安装
  13. [转]SQL Collation冲突解决 临时表
  14. Sublime常用快捷键
  15. 简单架设Jabber 局域网即时通讯服务器
  16. python判断_python判断与或
  17. toMap函数 java.lang.IllegalStateException: Duplicate key 123 (attempted merging values 123 and 124)
  18. 【定时任务】Springboot定时任务
  19. 多渔:赚钱是场漫长的修行
  20. centos6.3下2T以上大硬盘如何部署和使用

热门文章

  1. 我的Android进阶之旅------Java字符串格式化方法String.format()格式化float型时小数点变成逗号问题...
  2. 【GIT】Github上传本地代码详解
  3. jquery.form 和MVC4做无刷新上传DEMO
  4. 收藏:JavaScript
  5. struts 2 标签之s:tree/和s:treenode/简单实例
  6. SharePoint中修改密码的WEB Part之终极版:即可以修改AD,又可以修改本机用户密码的Web Part!!...
  7. Oracle游标学习笔记
  8. C#String.PadLeft函数,文本对齐以及填补解决方案
  9. GOOGLE域名存在漏洞,可以用来建立钓鱼站点(目前已临时被封闭)
  10. Android Fragment 解析(下)