mfc 单文档分拆窗口
2013-05-29 20:14
232 查看
在CMainFrame中定义CSplitterWnd类型的成员变量:
class CMainFrame : public CFrameWnd
{
protected: // 仅从序列化创建
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 属性
public:
CSplitterWnd m_wndSplitter;
……
}
2 . 重载CMainFrame的OnCreateClient函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
CRect rect;
GetClientRect(&rect);
m_wndSplitter.CreateStatic(this, 1, 2);
m_wndSplitter.CreateView(0, 0, pContext->m_pNewViewClass, CSize(1000, 0), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CNewView), CSize(0, 0), pContext);
m_wndSplitter.SetActivePane(0, 0);
return TRUE;
}
CNewView是拆分出来的新窗口中的视图类。
2009-05-19 09:52:47| 分类: vc开发资料整理|字号 订阅
文件1
class CMainFrame : public CFrameWnd 添加如下代码
public:
CSplitterWnd m_splMainCols;
CSplitterWnd m_splRightRows;
BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
cpp文件添加函数
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if(!m_splMainCols.CreateStatic(this, 1, 3))
{
return FALSE;
}
if(!m_splMainCols.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 0), pContext))
{
return FALSE;
}
/*
if(!m_splMainCols.CreateView(0, 1, RUNTIME_CLASS(CLeftView), CSize(500, 0),pContext))
{
return FALSE;
}
*/
if(!m_splMainCols.CreateView(0, 2, RUNTIME_CLASS(CLeftView), CSize(0, 0),pContext))
{
return FALSE;
}
if(!m_splRightRows.CreateStatic(&m_splMainCols, 2, 1, WS_CHILD|WS_VISIBLE, m_splMainCols.IdFromRowCol(0,1) ))
{
return FALSE;
}
if(!m_splRightRows.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(0, 300), pContext))
{
return FALSE;
}
if(!m_splRightRows.CreateView(1, 0, RUNTIME_CLASS(CLeftView), CSize(0, 0), pContext))
{
return FALSE;
}
//m_splMainCols.SetRowInfo(0, 350, 0); //重新设置行宽
//m_splMainCols.RecalcLayout();
//m_splMainCols.SetColumnInfo(2,100,50);
return TRUE;
}
界面预览:
class CMainFrame : public CFrameWnd
{
protected: // 仅从序列化创建
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 属性
public:
CSplitterWnd m_wndSplitter;
……
}
2 . 重载CMainFrame的OnCreateClient函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
CRect rect;
GetClientRect(&rect);
m_wndSplitter.CreateStatic(this, 1, 2);
m_wndSplitter.CreateView(0, 0, pContext->m_pNewViewClass, CSize(1000, 0), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CNewView), CSize(0, 0), pContext);
m_wndSplitter.SetActivePane(0, 0);
return TRUE;
}
CNewView是拆分出来的新窗口中的视图类。
MFC单文档 窗口分割(二次分割)
2009-05-19 09:52:47| 分类: vc开发资料整理|字号 订阅文件1
class CMainFrame : public CFrameWnd 添加如下代码
public:
CSplitterWnd m_splMainCols;
CSplitterWnd m_splRightRows;
BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
cpp文件添加函数
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if(!m_splMainCols.CreateStatic(this, 1, 3))
{
return FALSE;
}
if(!m_splMainCols.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 0), pContext))
{
return FALSE;
}
/*
if(!m_splMainCols.CreateView(0, 1, RUNTIME_CLASS(CLeftView), CSize(500, 0),pContext))
{
return FALSE;
}
*/
if(!m_splMainCols.CreateView(0, 2, RUNTIME_CLASS(CLeftView), CSize(0, 0),pContext))
{
return FALSE;
}
if(!m_splRightRows.CreateStatic(&m_splMainCols, 2, 1, WS_CHILD|WS_VISIBLE, m_splMainCols.IdFromRowCol(0,1) ))
{
return FALSE;
}
if(!m_splRightRows.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(0, 300), pContext))
{
return FALSE;
}
if(!m_splRightRows.CreateView(1, 0, RUNTIME_CLASS(CLeftView), CSize(0, 0), pContext))
{
return FALSE;
}
//m_splMainCols.SetRowInfo(0, 350, 0); //重新设置行宽
//m_splMainCols.RecalcLayout();
//m_splMainCols.SetColumnInfo(2,100,50);
return TRUE;
}
界面预览:
![](http://img.bimg.126.net/photo/KtLbBHE7e9E39jQMuJFlWQ==/5792192070752198803.jpg)
相关文章推荐
- 在MFC单文档对话框实现窗口分拆
- VS2013MFC单文档工程学习笔记七 - 创建新的一个窗口并让窗口2透明
- MFC 多文档打开多个窗口错误解决方案(缩小以后会出现窗口叠加,放大以后工具条错乱等现象)
- MFC----文档 视图 框架窗口间的关系 和消息传送规律
- MFC单文档视图拆分窗口
- MFC多文档修改主窗口和子窗口名字
- 如何禁用窗口关闭按钮在一个 MFC 多文档界面 (MDI) 应用程序
- VS2013/MFC编程入门之三十八(文档、视图和框架:分割窗口)
- VS2013MFC单文档工程学习笔记八 - 为窗口添加一张背景图片
- 【框架-MFC】设置单文档和多文档窗口标题
- 如何禁用MFC单文档主窗口的最大化按钮?
- vc6.0 MFC 单文档 静态分割窗口
- MFC 文档 视图 框架窗口间的关系 和消息传送规律
- MFC MDI项目如何一个文档显示多个不同视图类(比如文字和图表,各自拥有单独的框架窗口)
- 在MFC单文档程序中,怎样由子窗口控件调用父窗口中的控件
- 详解MFC框架窗口、文档和视图
- VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)
- VC2010 MFC多文档项目中在带滚动条的窗口中显示图像
- 如何修改MFC单文档的“无标题”、中间的横线、后面的窗口标题
- MFC单文档分割窗口