MFC基于单文档分割窗口
来源:互联网 发布:网络服务器租用业务员 编辑:程序博客网 时间:2024/05/21 17:06
创建一个MFC单文档应用程序命名为test
打开资源管理器Dialog,右击鼠标,插入两个对话框选择基于CFormView类
属性style改为child,broad改为none
在对话框中插入类,分别命名为cDialogData,cDialogA.
打开类视图,右击CMainFrm类,选择属性,重写OnCreateClient函数。
在MainFrm.h中加入CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter2;的定义
在MainFrm.cpp中加入头文件DialogData.h和DialogA.h
在OnCreateClient函数中添加以下代码
// 创建静态分割窗口,一行两列if(!m_wndSplitter.CreateStatic(this, 1, 2))return FALSE; //再把左边窗口分为两行一列 if(m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_VISIBLE|WS_CHILD, m_wndSplitter.IdFromRowCol(0, 0))==NULL) return FALSE; //将第0行0列再分开2行1列 // 创建右面窗格中的视图if(!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CDialogA),CSize(200,1000), pContext))return FALSE; // 创建左上面窗格中的视图 if(!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CyyyView),CSize(800, 800), pContext)) return FALSE; // 创建左下面窗格中的视图 if(!m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(cDialogData),CSize(800, 200), pContext)) return FALSE; /* if(!m_wndSplitter.CreateView(1, 1, RUNTIME_CLASS(CDialogA),CSize(200, 800), pContext)) return FALSE;*/就分好了,但是为什么不加入CRect r; GetClientRect(&r); m_wndSplitter.SetColumnInfo( 0, r.Width()/3, 0 ); //m_wndSplitter.SetColumnInfo( 0, r.Width()/3, 1 ); m_wndSplitter.RecalcLayout(); m_wndSplitter2.SetRowInfo(0,r.Height()/2,0); m_wndSplitter2.SetRowInfo(1,r.Height()/2,0); m_wndSplitter2.RecalcLayout();
CRect r; GetClientRect(&r); m_wndSplitter.SetColumnInfo( 0, r.Width()/3, 0 ); //m_wndSplitter.SetColumnInfo( 0, r.Width()/3, 1 ); m_wndSplitter.RecalcLayout(); m_wndSplitter2.SetRowInfo(0,r.Height()/2,0); m_wndSplitter2.SetRowInfo(1,r.Height()/2,0); m_wndSplitter2.RecalcLayout();
这些设置窗口大小的函数时总是报错,而且运行不出来view区域。
这样运行出来的效果如图所示。
如果想要设置每个窗口的大小随意变动,则要
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){// TODO: 在此添加专用代码和/或调用基类//CRect rc;//// 获取框架窗口客户区的CRect 对象//GetClientRect(&rc);// 创建静态分割窗口,一行两列if(!m_wndSplitter.CreateStatic(this, 1, 2))return FALSE;//窗口的再分割 if(m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_VISIBLE|WS_CHILD, m_wndSplitter.IdFromRowCol(0, 0))==NULL) return FALSE; //将第0行0列再分开2行1列 if(m_wndSplitter3.CreateStatic(&m_wndSplitter,2,1,WS_VISIBLE|WS_CHILD, m_wndSplitter.IdFromRowCol(0, 1))==NULL) return FALSE; //将第0行0列再分开2行1列 // 创建右下面窗格中的视图if(!m_wndSplitter3.CreateView(1, 0, RUNTIME_CLASS(CDialogStatus),CSize(200,200), pContext))return FALSE; // 创建右上面窗格中的视图 if(!m_wndSplitter3.CreateView(0, 0, RUNTIME_CLASS(CyyyView),CSize(800, 800), pContext)) return FALSE; // 创建左下面窗格中的视图 if(!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(cDialogData),CSize(800, 200), pContext)) return FALSE; if(!m_wndSplitter2.CreateView(1,0, RUNTIME_CLASS(CDialogA),CSize(200, 800), pContext)) return FALSE; //CRect r; //GetClientRect(&r); m_wndSplitter.SetColumnInfo(0,800, 100); m_wndSplitter2.SetRowInfo(0, 400, 100); m_wndSplitter3.SetRowInfo(0, 200, 100); m_wndSplitter.RecalcLayout(); m_wndSplitter2.RecalcLayout(); m_wndSplitter3.RecalcLayout();return TRUE;}运行出来就如第二张图所示了。
设置的思路图在最后一张图上。
阅读全文
0 0
- MFC基于单文档分割窗口
- MFC单文档-窗口分割
- MFC单文档分割窗口
- 单文档mfc窗口分割
- MFC单文档的窗口分割
- MFC对单文档进行窗口分割。
- MFC基于单文档分割视图后子窗口点击编辑框获得相应的操作
- 单文档分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- 【数字图像处理】 二.MFC单文档分割窗口显示图片
- vc6.0 MFC 单文档 静态分割窗口 --learn 3
- CSplitterWnd类分割MFC单文档应用程序窗口
- MFC 单文档视图分割
- MFC单文档窗口分隔
- 在线等:使用MFC单文档将窗口分割成一行两列
- 基于 Beaglebone Black嵌入式linux系统u-boot编译 启动
- go语言之结构体数组转为string字符串
- ffmpeg解码实时流出错"non-existing PPS 0 referenced,decode_slice_header error,no frame!"
- 行业软件运行时报MDAC故障的问题解决办法
- SimpleAdapter的学习理解
- MFC基于单文档分割窗口
- samba
- linux环境下(ubuntu)搜狗输入法出错了
- 2017.06.05回顾 dataframe找到喊缺失值的column list组成dataframe
- 欢迎使用CSDN-markdown编辑器
- 表单校验
- mysql 左连接 右连接
- Ubuntu 16.04上安装mysql详细教程
- 日志中如何输出完整的堆栈异常