1. 在SDI窗口中添加Splitter
(1)在stdafx.h中添加:
#include <afxcview.h>
#include <afxrich.h>
(2)在MainFrm.h中添加
protected:
CSplitterWnd m_wndSplitterLR;
CSplitterWnd m_wndSplitterLTB;
(3)在MainFrm.cpp中重载OnCreateClient
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
//return CFrameWnd::OnCreateClient(lpcs, pContext);
CRect rect;
GetClientRect(&rect);
int x = rect.Width();
int y = rect.Height();
int rx = rect.Width()/3;
int lx = x - rx;
int lyb = rect.Height()/3;
int lyt = y - lyb;
int ry = rect.Height()/2;
m_wndSplitterLR.CreateStatic(this, 1, 2, WS_CHILD|WS_VISIBLE|WS_BORDER);    //分隔为左右两列
m_wndSplitterLR.CreateView(0, 1, RUNTIME_CLASS(CFileConfigView),                //右边一列添加视图: CFileConfigView
CSize(rx, ry), pContext);
m_wndSplitterLTB.CreateStatic(&m_wndSplitterLR, 2, 1,                                        //把左边一列分隔为上下两行
WS_CHILD|WS_VISIBLE, m_wndSplitterLR.IdFromRowCol(0, 0));
m_wndSplitterLTB.CreateView(0, 0, RUNTIME_CLASS(CBrdListView),                    //左上窗格添加视图: CBrdListView
CSize(lx, lyt), pContext);
m_wndSplitterLTB.CreateView(1, 0, RUNTIME_CLASS(CBrdInfoView),                    //左下窗格添加视图: CBrdInfoView
CSize(lx, lyb), pContext);
return TRUE;
}
(4) 在类视图中添加类CBrdListView,父类为CListView
重载OnInitialUpdate函数,以初始化视图类CBrdListView。在本例中只初始化列表头
void CBrdListView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//添加列表的标头
const int columNumber = 7;
CString m_ColumnLabelStr[] = {_T("状态"),_T("设备名称"),  _T("MAC"), _T("IP"), 
_T("固件版本"), _T("所在位置"), _T("设备型号")};
CListCtrl& listCtrl = GetListCtrl();//获取列表控件
DWORD dwStyle = listCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
dwStyle |= LVS_EX_GRIDLINES;
dwStyle |= LVS_EX_UNDERLINEHOT;
listCtrl.SetExtendedStyle(dwStyle);
CRect rect;
GetClientRect(rect); 
for(int i = 0; i < columNumber; i++)
{
listCtrl.InsertColumn(i, m_ColumnLabelStr[i], LVCFMT_LEFT, rect.Width()/8);
}
}
(5) CFileConfigView是一个窗体视图
创建一个窗口,为窗口添加类:CFileConfigView,其父类为CFormView。
(6) CBrdInfoView的父类为CEditView,创建方法同CBrdListView
(7) 窗口拖动,重载CMainFrm的OnSize函数,重新设置分隔条比例
void CMainFrame::setSplitLayout()    //OnSize调用该私有函数
{
CRect rect;
GetClientRect(&rect);
int x = rect.Width();
int y = rect.Height();
int rx = rect.Width()/3;
int lx = x - rx;
int lyb = rect.Height()/3;
int lyt = y - lyb;
int ry = rect.Height()/2;
m_wndSplitterLR.SetColumnInfo(0, lx, 0);    //给一列设置一个“理想的”宽度
m_wndSplitterLR.SetColumnInfo(1, rx, 0);    //第1列,宽度xr,最小宽度0
m_wndSplitterLTB.SetRowInfo(0, lyt, 0);//给一行设置一个“理想的”高度
m_wndSplitterLTB.SetRowInfo(1, lyb, 0);//第1行,高度yb,最小高度0
RecalcLayout();
}
(7)窗口效果

MFC单文档框架编程(一): 分隔窗口的实现相关推荐

  1. MFC单文档框架编程(二): SDI框架下的消息处理

    MFC单文档框架编程(一) ...................................................................................... ...

  2. MFC单文档框架编程(三): CTabView的使用

    1. 重载CTabView类,实现CConfBrdView. class CConfBrdView : public CTabView 2. 添加选项卡 void CConfBrdView::OnIn ...

  3. MFC单文档及其简介

    MFC单文档及其简介 MFC 是一个编程框架 MFC 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来 建立Windows 下的应用程序.MFC 框架定义了应用程序的轮廓,并 ...

  4. 【数字图像处理】 二.MFC单文档分割窗口显示图片

    本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程 ...

  5. MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结

    MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...

  6. 【整理】MFC单文档程序窗口大小的设置

    有时候根据实际需要,比如MFC单文档程序视图里内容少.空白一大半,需要调整MFC单文档程序窗口大小.限制单文档的最大最小尺寸. 1.  要控制一个框架的的最大最小尺寸,需要做两件事情,在CFrameW ...

  7. VC6.0 MFC 单文档 机器人巡检

    机器人巡检 一.整体框架 主要包括三个类:场景类(CChangJing):机器人类(小车(CCar).无人机(CWuRenJi)):煤气泄露类(CMeiQiXieLou). 二.场景类 目标主要是数据 ...

  8. MFC单文档的背景上绘制一个可以自动显示文字的长方形

    我在mfc单文档里设置了一个绘图区,并在上面(用pDC->Rectangle()函数)绘制了一个很小的长方形(注意:这个长方形很小,直接在上面写字无法看到),请问如何在绘制出长方形的时候让这个长 ...

  9. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

最新文章

  1. [C#] enum 枚举
  2. 关于职业目标规划的一点讨论
  3. Java论坛系统 JForum
  4. 数学符号正三角形△和倒三角形▽的意思
  5. bzoj5090[lydsy11月赛]组题
  6. 基础知识—数据类型-常量及符号
  7. js sdk 一键分享 微信_微信朋友圈分享自己拍的视频,一键开启这个设置,自带文字和音乐...
  8. employees mysql_「employees」mysql示例employees数据库 - seo实验室
  9. c语言选题分析,c语言方面毕业设计选题.doc
  10. 完整版商城PHP源码小程序,前后端+后台+小程序;访问地址在文末
  11. 【iOS】使用 otool 命令查看 App 所使用的动态库
  12. 中国石油大学(北京)-《钻井液工艺原理》第三阶段在线作业
  13. python下载慢怎么办?
  14. 如何去掉word文档右侧的竖线
  15. esir openwrt x86_惠普 小欧S01 伪开箱及爱快 虚拟机+openwrt 软路由安装教程
  16. Altium Designer原理图与PCB设计学习笔记6——AD如何在多个原理图中查找相同的网络标号
  17. 前端HTML+CSS之网页排版(三)
  18. flink kafka addSource(comsumer ) 源码学习笔记
  19. andriod手机信号显示G、E、H、T是什么意思?
  20. C++:亲戚(relation)

热门文章

  1. 从脸部识别到火星机器人,正在改变世界的计算机视觉
  2. Java NIO学习系列一:Buffer
  3. 通过踩坑带你读透虚拟机的“锁粗化”
  4. To Java程序员:切勿用普通for循环遍历LinkedList
  5. Python计算机视觉:第八章 图像类容分类
  6. 使用docker安装部署Spark集群来训练CNN(含Python实例)
  7. Mathtype写分段函数的方法
  8. Python基础教程(五):数字、字符串
  9. Ubuntu安装后无法连接无线网络
  10. 20_集合_第20天(Map、可变参数、Collections)