单文档静态分割窗口总结
来源:互联网 发布:下载外国软件 编辑:程序博客网 时间:2024/05/22 04:45
单文档静态分割窗口总结
一、关于CSplitterWnd类
***********************
CObject
└CCmdTarget
└CWnd
└CSplitterWnd
***********************
CSplitterWnd类提供一个分隔器窗口的功能,分隔器窗口是一个包含有多个窗格的窗口。窗格通常是应用程序特定的由CView派生的对象,但它也可以是具有适当子窗口ID的任何CWnd对象。
***********************
CSplitterWnd类成员
/////////////////////////////////////////////////////////////////////////////////
构造
CSplitterWnd 构造一个CSplitterWnd对象
Create 创建一个动态的分隔器窗口并将它与一个CSplitterWnd对象连接
CreateStatic 创建一个静态的分隔器窗口并将它与一个CSplitterWnd对象连接
CreateView 在一个分隔器窗口中创建一个窗格
/////////////////////////////////////////////////////////////////////////////////
操作符
GetRowCount 返回当前窗格行的计数值
GetColumnCount 返回当前窗格列的计数值
GetRowInfo 返回指定行的信息
SetRowInfo 设置指定行的信息
GetColumnInfo 返回指定列的信息
SetColumnInfo 设置指定列的信息
GetPane 返回位于指定行和列处的窗格
IsChildPane 确定窗口是否是此分隔器窗口的当前子窗格
IdFromRowCol 返回位于指定行和列处的窗格的子窗口ID
RecalcLayout 在调整行或列尺寸后调用此函数来重新显示该分隔器窗口
GetScrollStyle 返回共享滚动条的风格
SetScrollStyle 为分隔器窗口的共享滚动条指定新的滚动条风格
/////////////////////////////////////////////////////////////////////////////////
可重载
OnDrawSplitter 绘制一个分隔器窗口的图像
OnInvertTracker 绘制一个分隔器窗口的图像,使它具有与框架窗口相同的大小和形状
CreateScrollBarCtrl 创建一个共享的滚动条控件
DeleteView 从分隔器窗口中删除一个视图
SplitRow 表明一个框架窗口是否是水平分隔的
SplitColumn 表明一个框架窗口是否是垂直分隔的
DeleteRow 从分隔器窗口中删除一行
DeleteColumn 从分隔器窗口中删除一列
GetActivePane 根据焦点或框架中的活动视来确定活动窗格
SetActivePane 在框架中设置一个活动窗格
CanActivateNext 检查Next Pane或Previous Pane命令当前是否有效
ActivateNext 执行Next Pane或Previous Pane命令
DoKeyboardSplit 执行键盘分隔命令,通常是“Window Split”
DoScroll 执行分隔窗口的同步滚动
DoScrollBy 将分隔窗口滚动给定的像素数
/////////////////////////////////////////////////////////////////////////////////
CSplitterWnd::Create
BOOL Create( CWnd* pParentWnd,
int nMaxRows,
int nMaxCols,
SIZE sizeMin,
CCreateContext* pContext,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
UINT nID = AFX_IDW_PANE_FIRST
);
返回值:如果成功则返回非零值;否则返回0。
参数: pParentWnd 分隔器窗口的父框架窗口。
nMaxRows 分隔器窗口中的最大行数。这个值不能超过2。
nMaxCols 分隔器窗口中的最大列数。这个值不能超过2。
sizeMin 指出显示一个窗格所需的最小尺寸。
pContext 指向一个CCreateContext结构的指针。多数情况下,这个值可以是传递给父框架窗口的pContext。
dwStyle 指定窗口的风格。
nID 此窗口的子窗口ID。如果这个分隔器窗口不是嵌套在另一个分隔器窗口中的,则这个ID可以是AFX_IDW_PANE_FIRST。
说明:
要创建一个动态分隔器窗口,应调用Create成员函数。
你可以通过如下步骤将一个CSplitterWnd嵌入一个CFrameWnd或CMDIChildWnd父对象: 1. 在父框架中嵌入一个CSplitterWnd成员变量。
2. 重载父框架的CFrameWnd::OnCreateClient成员函数。
3. 从重载的OnCreateClient中调用Create成员函数。
当你从一个父框架内创建一个分隔器窗口时,将父框架的pContext参数传递给此分隔器窗口。否则,Create函数的pContext可以是NULL。
一个动态分隔器窗口的初始最小行高度和列宽度由sizeMin参数设置。这些最小值被用来确定窗格是否太小以至于不能将其完整地显示出来。
有关动态分隔器窗口的更多信息,参见“Visual C++程序员指南”中的文章“多文档类型,视,和框架窗口”中的“分隔器窗口”;“Visual C++联机文档”中的“TN029:分隔器窗口”;以及CSplitterWnd类概述。
/////////////////////////////////////////////////////////////////////////////////
CSplitterWnd::CreateStatic
BOOL CreateStatic( CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST
);
返回值:如果成功则返回非零值;否则返回0。
参数: pParentWnd 分隔器窗口的父框架窗口。
nRows 行数。这个值必须不超过16。
nCols 列数。这个值必须不超过16。
dwStyle 指定窗口的风格。
nID 此窗口的子窗口ID。如果这个分隔器窗口不是嵌套在另一个分隔器窗口中的,则这个ID可以是AFX_IDW_PANE_FIRSH。
说明:
要创建一个静态的分隔器窗口,应调用CReateStatic成员函数。
你可以通过如下步骤将一个CSplitterWnd嵌入一个CFrameWnd或CMDIChildWnd父对象: 1. 在父框架中嵌入一个CSplitterWnd成员变量。
2. 重载父框架的CFrameWnd::OnCreateClient成员函数。
3. 从重载的OnCreateClient中调用Create成员函数。
一个静态的分隔器窗口包含了固定数目的窗格,这些窗格是不同类的。
当你创建一个静态分隔器窗口时,你必须同时创建它的所有窗格。CReateView成员函数通常就是用于这个目的,但你也可以创建其它非视类。
一个静态分隔器窗口的初始最小行高度和列高度是0。这些最小值用来确定窗格是否太小以至于不能将其完整地显示出来。
要给静态分隔器窗口添加滚动条,就应在dwStyle参数中指定WS_HSCROLL或WS_VSCROLL风格。
有关静态分隔器窗口的更多信息,参见“Visual C++程序员指南”中的文章“多文档类型,视,和框架窗口”中的“分隔器窗口”;“Visual C++联机文档”中的“TN029:分隔器窗口”;以及CSplitterWnd类概述。
/////////////////////////////////////////////////////////////////////////////////
CSplitterWnd::CreateView
virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );
返回值:如果成功则返回非零值;否则返回0。
参数: row 指定用来放置新视的分隔器窗口行。
col 指定用来放置新视的分隔器窗口列。
pViewClass 指定新视的CRuntimeClass。
sizeInit 指定新视的初始尺寸。
pContext 指向用来创建此视的创建环境的指针(通常,该pContext被传递给在其中创建此分隔器窗口的父框架的重载的OnCreateClient成员函数)。
说明:
此成员函数用来为一个静态分隔器窗口创建窗格。一个静态分隔器窗口的所有窗格必须在框架显示这个分隔器之前被创建。
当一个动态分隔器的用户分隔一个窗格,行或列时,框架也调用这个成员函数来创建新的窗格。
/////////////////////////////////////////////////////////////////////////////////
二、创建静态分割窗口
实现步骤:
1、利用AppWizard创建一个单文档SDI应用程序,项目名为Test
由AppWizard自动生成的类有:
CAboutDlg
CTestApp
CTestDoc
CTestView
CMainFrame
2、添加新特视图类: CImageView, CResultView
在类视图中右键点击test -> 添加 -> 类 -> MFC类
3、在框架窗口类CMainFrame中声明一个CsplitterWnd类的成员变量m_spliterwnd
4、在MainFrame.cpp中重载OnCreateClient函数
在类视图中单击CMainFrame -> 在属性窗口中选择重写 -> 添加OnCreateClient
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_spliterwnd.CreateStatic(this,1, 2)==NULL)
{return FALSE;}
if (m_spliterwnd.CreateView(0, 0, RUNTIME_CLASS(CImageView), CSize(100, 100), pContext))
{return FALSE;}
if (m_spliterwnd.CreateView(0, 1, RUNTIME_CLASS(CResultView), CSize(100, 100), pContext))
{return FALSE;}
return TRUE;
//return CFrameWndEx::OnCreateClient(lpcs, pContext);
}
5、在MainFrame.cpp中添加头文件
#include "ImageView.h"
#include "ResultView.h"
6、和文档类相连
在OnDraw下修改
CtestDoc* pDoc =(CtestDoc*)CImageView:: GetDocument();
CtestDoc* pDoc =(CtestDoc*)CResultView:: GetDocument();
- 单文档静态分割窗口总结
- 可切换视图的单文档静态分割窗口总结
- 可切换视图的单文档静态分割窗口总结
- 可切换视图的单文档静态分割窗口总结
- 单文档分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- VC++单文档程序窗口的静态分割
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口 --learn 3
- MFC单文档-窗口分割
- MFC单文档分割窗口
- 单文档mfc窗口分割
- 单文档多视图(分割窗口)
- VC单文档分割窗口1
- 单文档多视图(分割窗口)
- MFC单文档的窗口分割
- 插入排序
- 设计模式-strategy
- 程序员的迷思
- 简单工厂模式代码(有点粗糙)
- VB计算一维数组的最值问题
- 单文档静态分割窗口总结
- vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
- TPTP Agent Controller使用说明
- JIRA如何发送延期Issue到邮箱
- SQL操作全集
- HTML+Javascript复制表格行并清空form表单input/select值.
- NetBeans创建可拖拽到桌面的Applet
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
- asp.net Table控件收藏