使用CSplitterWnd分隔窗口,左视图控制,右视图显示
往往有这种需求:需要显示的视图为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分隔窗口,左视图控制,右视图显示相关推荐
- Python打印二叉树的左视图、右视图
先求出二叉树的最大深度,然后求出每一层的节点列表,求每一层节点列表就相当于求距离根节点指定深度的所有节点,再将每一层的节点列表中的最左或最右节点打印出来,或者添加到新列表中,就是二叉树的左视图.右视图 ...
- 解决Creo 5.0在打开stl模型后,无法查看左视图,右视图
问题 我的Creo 5.0在打开stl模型后,无法查看左视图,右视图,上视图等,现在总结一下解决办法. 解决办法 前视图的设置 导入模型,名字为bool,点击bool,创建平面 前视图,是从y方向看的 ...
- 二叉树的左视图和右视图 形象理解(附C++代码)
定义 二叉树的左(右)视图即:以从上到下的顺序,输出一颗二叉树每一层最左(右)端的节点,结果就是其左(右)视图. 步骤 采用递归的方式,将二叉树的所有节点连带其深度信息存入动态数组(若对二叉树的递归遍 ...
- 二叉树的左视图和右视图
所谓二叉树的左视图,是指打印从左方向看到的二叉树. 根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断level == len(stack)时,先遍历左子树则保证层数与数组长度相 ...
- Leetcode_NO199_二叉树的左视图,右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 ...
- Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图
阅读目录 题目描述 思路与Python实现 题目描述 输入一棵二叉树,求出树的左视图,或者右视图,如下图所示,的两种情况 思路与Python实现 如果可以用非递归的方式写出二叉树的深度遍历或者广度遍历 ...
- Leetcode-199二叉树的右视图(二叉树左视图)
题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 输 ...
- 二叉树 左视图 /右视图 [Java实现]
这是2018.12月参加头条笔试的题目.当时什么都不会,没写出来. 明天就要面试了,复盘写一下(我可真懒...) [左视图] 首先说一下什么叫二叉树的左视图. 如图所示,从左边看,输出每行第一个数. ...
- 47、打印二叉树的右视图 和 左视图
右视图思路: 层次遍历二叉树: 将每一层的最后一个节点值保存到结果数组: 左视图思路: 层次遍历二叉树: 将每一层的第一个节点值保存到结果数组: (1)右视图代码实现 /*** Definition ...
最新文章
- 必看干货:如何在 JavaScript 中实现 8 种基本图形算法
- PHP超时处理全面总结
- 0基础学python难吗-0基础学武汉Python开发课程有多难?该怎么入门?
- Freemarker模板嵌套
- aop:aspectj-autoproxy /
- mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...
- 即将举行的网络研讨会:调试生产中Java的5种最佳实践
- CSS块元素水平垂直居中的实现技巧
- iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
- S3C6410处理器介绍
- AIX LV删除后,ORACLE数据库文件全部恢复成功
- png图片 透明区域如何 让其不响应鼠标事件?
- Curve fitting C: Non-linear Iterative Curve Fitting中文翻译
- 质性数据分析软件NVivo教程:自动编码情绪如何运作?
- 【机器学习】拉普拉斯平滑
- vue后台管理做适配的最佳方案,你知道吗
- 粪斗这杆大旗下,注定只是少部分人的盛宴
- MongoDB凭什么跻身数据库排行前五?
- 北京知产局:鼓励当事人用区块链,获取、固定知识产权纠纷证据
- 大话墨香泰坦版服务端架设及客户端IP修改