往往有这种需求:需要显示的视图为ClistView,但这个View的显示数据是有条件的,需要根据用户的输入来显示,如查询历史记录所需的条件。这时有3种方案:

1. 使用CFormView/Dialog来控制,显示使用CListCtrl控件。

  使用该方法的好处在于我们对其比较熟悉,一般都只需鼠标点点即可,再加入相应的代码。缺点就在于窗口大小的改变不会使控件的大小变化,当窗口最大化时显示的效果不佳,当然也可以修改OnSize函数,使得这些控件随窗口的改变而改变。

2. 使用ToolBar来控制视图,如CListView

  该方法的好处在于简洁,方便。难点在于工具栏要随视图的变化而变化,这一点在“动态改变工具栏”中已经介绍过。至于工具栏中的控件加入,可以参照MS给的示例代码。

3. 使用CSplitterWnd分隔窗口,左视图为CFormView,右视图为显示的View

  他们之间通过Doc来通信,当用户操作CFormView中的设置,来改变Doc,再调用Doc的UpdateAllViews来更新右视图。

个人认为这3中方案都可行,数方案1技术含量低,工作繁琐,计算窗口的大小不是程序员喜欢干的事,方案2呢,还可以,但控件不能太多。个人认为方案3有点新意,方法比较通用。下面说说如何实现。

我们在ChildFrame中增加变量:

CSplitterWnd m_wndSplitter;

重写ChildFrame中OnCreateClient函数:

BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext){/*return m_wndSplitter.Create(this,        2, 2,       // TODO: 调整行数和列数        CSize(10, 10),  // TODO: 调整最小窗格大小        pContext);*/    m_wndSplitter.CreateStatic(this,1,2);    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CChildContorlView),CSize(200,0),pContext);    m_wndSplitter.CreateView(0,1,pContext->m_pNewViewClass,CSize(0,0),pContext);    SetActiveView((CView*)m_wndSplitter.GetPane(0,1));return true;}

这里是新建了2个视图,左视图的类为CChildContorlView,它是一个CFormView。第二个view为DocTemplate中的view类。

这样左视图中可以用按钮控件这么来控制:

    CMyDoc* pDoc = DYNAMIC_DOWNCAST(CMyDoc,GetDocument());if(pDoc != NULL)    {        pDoc->itsName = strName;        pDoc->UpdateAllViews(this);    }

而右视图可以用OnUpdate来读取Doc的参数信息,从而更新数据。

转载于:https://www.cnblogs.com/zhangyonghugo/archive/2011/12/31/2308478.html

使用CSplitterWnd分隔窗口,左视图控制,右视图显示相关推荐

  1. Python打印二叉树的左视图、右视图

    先求出二叉树的最大深度,然后求出每一层的节点列表,求每一层节点列表就相当于求距离根节点指定深度的所有节点,再将每一层的节点列表中的最左或最右节点打印出来,或者添加到新列表中,就是二叉树的左视图.右视图 ...

  2. 解决Creo 5.0在打开stl模型后,无法查看左视图,右视图

    问题 我的Creo 5.0在打开stl模型后,无法查看左视图,右视图,上视图等,现在总结一下解决办法. 解决办法 前视图的设置 导入模型,名字为bool,点击bool,创建平面 前视图,是从y方向看的 ...

  3. 二叉树的左视图和右视图 形象理解(附C++代码)

    定义 二叉树的左(右)视图即:以从上到下的顺序,输出一颗二叉树每一层最左(右)端的节点,结果就是其左(右)视图. 步骤 采用递归的方式,将二叉树的所有节点连带其深度信息存入动态数组(若对二叉树的递归遍 ...

  4. 二叉树的左视图和右视图

    所谓二叉树的左视图,是指打印从左方向看到的二叉树. 根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断level == len(stack)时,先遍历左子树则保证层数与数组长度相 ...

  5. Leetcode_NO199_二叉树的左视图,右视图

    给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1     ...

  6. Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图

    阅读目录 题目描述 思路与Python实现 题目描述 输入一棵二叉树,求出树的左视图,或者右视图,如下图所示,的两种情况 思路与Python实现 如果可以用非递归的方式写出二叉树的深度遍历或者广度遍历 ...

  7. Leetcode-199二叉树的右视图(二叉树左视图)

    题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 输 ...

  8. 二叉树 左视图 /右视图 [Java实现]

    这是2018.12月参加头条笔试的题目.当时什么都不会,没写出来. 明天就要面试了,复盘写一下(我可真懒...) [左视图] 首先说一下什么叫二叉树的左视图. 如图所示,从左边看,输出每行第一个数. ...

  9. 47、打印二叉树的右视图 和 左视图

    右视图思路: 层次遍历二叉树: 将每一层的最后一个节点值保存到结果数组: 左视图思路: 层次遍历二叉树: 将每一层的第一个节点值保存到结果数组: (1)右视图代码实现 /*** Definition ...

最新文章

  1. 必看干货:如何在 JavaScript 中实现 8 种基本图形算法
  2. PHP超时处理全面总结
  3. 0基础学python难吗-0基础学武汉Python开发课程有多难?该怎么入门?
  4. Freemarker模板嵌套
  5. aop:aspectj-autoproxy /
  6. mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...
  7. 即将举行的网络研讨会:调试生产中Java的5种最佳实践
  8. CSS块元素水平垂直居中的实现技巧
  9. iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
  10. S3C6410处理器介绍
  11. AIX LV删除后,ORACLE数据库文件全部恢复成功
  12. png图片 透明区域如何 让其不响应鼠标事件?
  13. Curve fitting C: Non-linear Iterative Curve Fitting中文翻译
  14. 质性数据分析软件NVivo教程:自动编码情绪如何运作?
  15. 【机器学习】拉普拉斯平滑
  16. vue后台管理做适配的最佳方案,你知道吗
  17. 粪斗这杆大旗下,注定只是少部分人的盛宴
  18. MongoDB凭什么跻身数据库排行前五?
  19. 北京知产局:鼓励当事人用区块链,获取、固定知识产权纠纷证据
  20. 大话墨香泰坦版服务端架设及客户端IP修改

热门文章

  1. 华三模拟器HCL文件打开/导入失败解决方法
  2. 为什么我推荐你使用中国移动的九天 · 毕昇云GPU平台
  3. 第二章 SQL命令参考-REASSIGN OWNED
  4. NRF52832-QFAA、NRF52840-QIAA性能区别-蓝牙智能手环穿戴
  5. libusb win32简介以及应用
  6. 官方发布!PMP证书正式纳入【北京市工作居住证】办理范围!
  7. Mysql的问题 Row size too large
  8. 10分钟学会go module
  9. CAS配置数据库,实现数据库用户认证
  10. eNSP第五篇扩展1:vrrp over nqa,nqa探测,双重vrrp监听方法1,vrrp与nqa结合