CSplitter W nd
CSplitterWnd 类 提 供 一 个 分 隔 器 窗 口 的 功 能 , 分 隔 器 窗 口 是 一 个 包 含 有 多 个 窗格 的 窗 口 。 窗 格 通 常 是 应 用 程 序 特 定 的 由 CView 派 生 的 对 象 , 但 它 也 可 以 是 具有 适 当 子 窗 口 ID 的 任 何 CWnd 对 象 。
- 个 CSplitterWnd 对 象 通 常 被 嵌 入 CFrameWnd 或 CMDIChi ld Wnd 父
对 象 。 你
应 按 如 下 步 骤 创 建 一 个 CSplitterWnd 对 象 :
-
在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。
-
重 载 父 框 架 的 CFrameWnd:: OnCreateClient 成 员 函 数 。
-
从 重 载 的 OnCreateClient 函 数 中 调 用 类 CSplitterWnd 的 Create
或 CreateStatic
成 员 函 数 。
调 用 Create 成 员 函 数 可 以 创 建 一 个 动 态 的 分 隔 器 窗 口 。 动 态 的 分 隔 器 窗 口 通 常用 于 创 建 和 滚 动 同 一 文 档 的 多 个 窗 格 或 视 。 框 架 将 自 动 为 该 分 隔 器 创 建 一 个 起始 窗 格 ; 然 后 , 当 用 户 操 纵 该 分 隔 器 窗 口 的 控 件 时 , 框 架 创 建 , 调 整 大 小 , 并且 排 列 其 它 的 窗 格 。
当 你 调 用 Create 时 , 应 指 定 一 个 最 小 行 高 度 和 最 小 列 宽 度 , 这 两 个 最 小 值 被 用来 确 定 窗 格 什 么 时 候 太 小 以 致 于 不 能 被 完 全 显 示 。 在 调 用 了 Create 之 后 , 你 可以 通 过 调 用 SetColumnInfo 和 SetRowInfo 来 调 整 这 些 最 小 值 。
你 还 可 以 使 用 SetColumnInfo 和 SetRowInfo 成 员 函 数 来 给 一 列 设 置 一 个 “ 理 想的 ” 宽 度 , 以 及 给 一 行 设 置 一 个 “ 理 想 的 ” 高 度 。 当 框 架 显 示 一 个 分 隔 器 窗 口时 , 首 先 显 示 父 框 架 , 然 后 才 显 示 分 隔 器 窗 口 。 然 后 , 框 架 从 分 隔 器 窗 口 的 客户 区 左 上 角 至 右 下 角 , 根 据 窗 格 的 理 想 尺 寸 以 行 或 列 来 排 放 各 个 窗 格 。
动 态 分 隔 器 窗 口 中 的 所 有 窗 格 都 必 须 是 同 一 个 类 的 窗 格 。 读 者 熟 悉 的 支 持 动 态分 隔 器 窗 口 的 应 用 程 序 包 括 Microsoft Word 和 Microsoft Excel.
使 用 CreateStatic 成 员 函 数 可 以 创 建 一 个 静 态 分 隔 器 窗 口 。 用 户 只 能 修 改 静 态 分隔 器 窗 口 中 的 窗 格 的 尺 寸 , 但 是 不 能 改 变 其 中 的 窗 格 序 号 和 次 序 。
在 创 建 静 态 分 隔 器 时 必 须 专 门 创 建 该 静 态 分 隔 器 的 所 有 窗 格 。 你 必 须 在 父 框 架的 OnCreateClient 成 员 函 数 返 回 之 前 确 保 创 建 了 所 有 窗 格 , 否 则 , 框 架 将 不 能正 确 显 示 该 窗 口 。
CreateStatic 成 员 函 数 将 使 用 为 0 的 最 小 行 高 度 和 最 小 列 宽 度 来 自 动 初 始 化 一 个静 态 分 隔 器 。在 调 用 了 Create 之 后 ,可 以 通 过 调 用 SetColumnInfo 和 SetRowInfo 成 员 函 数 来 调 整 这 两 个 最 小 值 。 在 调 用 CreateStatic 之 后 , 你 也 可 以 使 用SetColumnInfo 和 SetRowInfo 成 员 函 数 来 指 定 你 所 希 望 的 理 想 窗 格 值 。
静 态 分 隔 器 中 的 窗 格 通 常 属 于 不 同 的 类 。 给 予 静 态 分 隔 器 窗 口 的 示 例 , 参 见 图形 编 辑 器 和 W indows 文 件 管 理 器 。 分 隔 器 窗 口 支 持 特 殊 的 滚 动 条 ( 除 窗 格 可 能带 有 的 滚 动 框 之 外 ) 。 这 些 滚 动 条 是 CSplitterWnd 对 象 的 子 对 象 并 且 被 窗 格 共享 。
当 你 创 建 这 个 分 隔 器 窗 口 时 , 你 创 建 了 这 些 特 殊 的 滚 动 条 。 例 如 , 如 果 一 个CSplitterWnd 具 有 一 行 , 两 列 , 则 WS_VSCROLL 风 格 将 显 示 两 个 窗 格 共 享 的垂 直 滚 动 条 。 当 用 户 移 动 这 个 滚 动 条 时 , WM_VSCROLL 消 息 将 被 发 送 给 两 个窗 格 。 当 窗 格 设 置 滚 动 条 位 置 时 , 这 个 共 享 滚 动 条 将 被 设 置 。
有 关 动 态 分 隔 器 窗 口 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多文 档 类 型 , 视 和 框 架 窗 口 ” 中 的 “ 分 隔 器 窗 口 ” ; 和 Visual C++ 联 机 文 档 中 的“ TN029 : 分 隔 器 窗 口 ” ; 以 及 CSplitterWnd 类 概 述 。 有 关 如 何 创 建 动 态 分 隔器 窗 口 的 更 多 信 息 , 参 见 “ Visual C++ 联 机 教 程 ” 中 的 “ 在 增 强 视 的 Scribble 中 添 加 分 隔 器 窗 口 ” ; 和 MFC 常 规 示 例 V IEWEX 。
#include <afxext.h>
请 参 阅 CView , CWnd
CSplitterWnd 类 成 员
Construction
CsplitterWnd 构 造 一 个 CSplitterWnd 对 象
Create 创 建 一 个 动 态 的 分 隔 器 窗 口 并 将 它 与 一 个
CSplitterWnd 对 象 连 接
CreateStatic 创 建 一 个 静 态 的 分 隔 器 窗 口 并 将 它 与 一 个
CSplitterWnd 对 象 连 接
CreateView 在 一 个 分 隔 器 窗 口 中 创 建 一 个 窗 格
Operation s GetRowCount 返 回 当 前 窗 格 行 的 计 数 值
GetColumnCount 返 回 当 前 窗 格 列 的 计 数 值
GetRowInfo 返 回 指 定 行 的 信 息
SetRowInfo 设 置 指 定 行 的 信 息
GetColumnInfo 返 回 指 定 列 的 信 息
SetColumnInfo 设 置 指 定 列 的 信 息
GetPane 返 回 位 于 指 定 行 和 列 处 的 窗 格
IsChildPane 确 定 窗 口 是 否 是 此 分 隔 器 窗 口 的 当 前 子 窗 格IdFromRowCol 返 回 位 于 指 定 行 和 列 处 的 窗 格 的 子 窗 口 ID RecalcLayout 在 调 整 行 或 列 尺 寸 后 调 用 此 函 数 来 重 新 显 示 该 分
隔 器 窗 口
GetScrollStyle 返 回 共 享 滚 动 条 的 风 格
SetScrollStyle 为 分 隔 器 窗 口 的 共 享 滚 动 条 指 定 新 的 滚 动 条 风 格
Overridables
OnDrawSplitter 绘 制 一 个 分 隔 器 窗 口 的 图 像
OnInvertTracker 绘 制 一 个 分 隔 器 窗 口 的 图 像 , 使 它 具 有 与 框 架 窗
口 相 同 的 大 小 和 形 状CreateScrollBarCtrl 创 建 一 个 共 享 的 滚 动 条 控 件DeleteView 从 分 隔 器 窗 口 中 删 除 一 个 视
SplitRow 表 明 一 个 框 架 窗 口 是 否 是 水 平 分 隔 的
SplitColumn 表 明 一 个 框 架 窗 口 是 否 是 垂 直 分 隔 的
DeleteRow 从 分 隔 器 窗 口 中 删 除 一 行
DeleteColumn 从 分 隔 器 窗 口 中 删 除 一 列
GetActivePane 根 据 焦 点 或 框 架 中 的 活 动 视 来 确 定 活 动 窗 格
SetActivePane 在 框 架 中 设 置 一 个 活 动 窗 格
CanActivateNext 检 查 Next Pane 或 Previous Pane 命 令 当 前 是 否 有
效
ActivateNext 执 行 Next Pane 或 Previous Pane 命 令
DoKeyboardSplit 执 行 键 盘 分 隔 命 令 , 通 常 是 “ Window S plit ”
DoScroll 执 行 分 隔 窗 口 的 同 步 滚 动
DoScrollBy 将 分 隔 窗 口 滚 动 给 定 的 像 素 数
成 员 函 数
CSplitter W nd::ActivateNext
virtual void ActivateNext( BOOL bPrev = FALSE );
参 数
bPrev
表 明 要 激 活 哪 一 个 窗 口 。 TRUE 表 示 激 活 前 一 个 窗 口 , FALSE 表 示 激 活 下一 个 窗 口 。
框 架 调 用 此 成 员 函 数 来 执 行 Next Pane 或 Previous Pane 命 令 。
这 个 成 员 函 数 是 一 个 高 级 命 令 , 它 由 CView 类 用 来 作 为 CSplitterWnd 实 现 的 代表 。
请 参 阅 CView, CSplitterWnd::CanActivateNext, CSplitterWnd::SetActivePane
CSplitter W nd::CanActivateNext
virtual BOOL CanActivateNext( BOOL bPrev = FALSE );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
bPrev
表 明 要 激 活 哪 一 个 窗 口 。 TRUE 表 示 激 活 前 一 个 窗 口 , FALSE 表 示 激 活 下一 个 窗 口 。
说 明
框 架 调 用 此 成 员 函 数 来 检 查 Next Pane 和 Previous Pane 命 令 当 前 是 否 有 效 。
这 个 成 员 函 数 是 一 个 高 级 命 令 , 它 由 CView 类 用 来 作 为 CSplitterWnd 实 现 的 代表 。
请 参 阅 CSplitterWnd::ActivateNext, CSplitterWnd::SetActivePane
CSplitter W nd::Create
BOOL Create( CWnd* pParentWnd , int nMaxRow s , 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 结 构 的 指 针 。 多 数 情 况 下 , 这 个 值 可 以 是 传 递给 父 框 架 窗 口 的 pContex t。
dwStyle
指 定 窗 口 的 风 格 。
nID
此 窗 口 的 子 窗 口 ID 。 如 果 这 个 分 隔 器 窗 口 不 是 嵌 套 在 另 一 个 分 隔 器 窗 口中 的 , 则 这 个 ID 可 以 是 AFX_IDW_PANE_FIRST 。
说 明
要 创 建 一 个 动 态 分 隔 器 窗 口 , 应 调 用 Create 成 员 函 数 。
你 可 以 通 过 如 下 步 骤 将 一 个 CSplitterWnd 嵌 入 一 个 CFrameWnd 或
C M D IChildWnd 父 对 象 :
-
在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。
-
重 载 父 框 架 的 CFrameWnd::OnCreateClient 成 员 函 数 。
-
从 重 载 的 OnCreateClient 中 调 用 Create 成 员 函 数 。
当 你 从 一 个 父 框 架 内 创 建 一 个 分 隔 器 窗 口 时 , 将 父 框 架 的 pContext 参 数 传 递 给此 分 隔 器 窗 口 。 否 则 , Create 函 数 的 pContext 可 以 是 NULL 。
- 个 动 态 分 隔 器 窗 口 的 初 始 最 小 行 高 度 和 列 宽 度 由 size
M in 参 数 设 置 。 这 些 最小 值 被 用 来 确 定 窗 格 是 否 太 小 以 至 于 不 能 将 其 完 整 地 显 示 出 来 。
有 关 动 态 分 隔 器 窗 口 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多文 档 类 型 , 视 , 和 框 架 窗 口 ” 中 的 “ 分 隔 器 窗 口 ” ; “ Visual C++ 联 机 文 档 ” 中 的 “ TN029 : 分 隔 器 窗 口 ” ; 以 及 CSplitterWnd 类 概 述 。
请 参 阅 CSplitterWnd::CreateStatic, CFrameWnd::OnCreateClient,
CSplitterWnd::SetRowInfo, CSplitterWnd::SetColumnInfo, CSplitterWnd::CreateView
CSplitter W nd::CreateScrollBarCtrl
virtual BOOL CreateScrollBarCtrl( DWORD dwStyle , UINT nID );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
dwStyle
指 定 窗 口 的 风 格 。
nID
此 窗 口 的 子 窗 口 ID 。 如 果 这 个 分 隔 器 窗 口 不 是 嵌 套 在 另 一 个 分 隔 器 窗 口中 的 , 则 这 个 ID 可 以 是 AFX_IDW_PANE_FIRST 。
说 明
框 架 调 用 此 成 员 函 数 来 创 建 一 个 共 享 的 滚 动 条 控 件 。 重 载 CreateScrollBarCtrl 来 包 括 一 个 滚 动 条 附 近 的 其 它 控 件 。 缺 省 的 行 为 是 创 建 标 准 的 Windows 滚 动 条控 件 。
请 参 阅 AfxGetInstanceHandle
CSplitter W nd::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 或
C M D IChildWnd 父 对 象 :
-
在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。
-
重 载 父 框 架 的 CFrameWnd::OnCreateClient 成 员 函 数 。
-
从 重 载 的 OnCreateClient 中 调 用 Create 成 员 函 数 。
- 个 静 态 的 分 隔 器 窗 口 包 含 了 固 定 数 目 的 窗 格 , 这 些 窗
格 是 不 同 类 的 。
当 你 创 建 一 个 静 态 分 隔 器 窗 口 时 , 你 必 须 同 时 创 建 它 的 所 有 窗 格 。 CReateView
成 员 函 数 通 常 就 是 用 于 这 个 目 的 , 但 你 也 可 以 创 建 其 它 非 视 类 。
- 个 静 态 分 隔 器 窗 口 的 初 始 最 小 行 高 度 和 列 高 度 是 0 。
这 些 最 小 值 用 来 确 定 窗格 是 否 太 小 以 至 于 不 能 将 其 完 整 地 显 示 出 来 。
要 给 静 态 分 隔 器 窗 口 添 加 滚 动 条 , 就 应 在 dwStyle 参 数 中 指 定 WS_HSCROLL
或 WS_VSCROLL 风 格 。
有 关 静 态 分 隔 器 窗 口 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多文 档 类 型 , 视 , 和 框 架 窗 口 ” 中 的 “ 分 隔 器 窗 口 ” ; “ Visual C++ 联 机 文 档 ” 中 的 “ TN029 : 分 隔 器 窗 口 ” ; 以 及 CSplitterWnd 类 概 述 。
请 参 阅 CSplitterWnd::Create, CFrameWnd::OnCreateClient,
CSplitterWnd::SetRowInfo,
CSplitterWnd::SetColumnInfo, CSplitterWnd::CreateView
CSplitter W nd::CreateView
virtual BOOL CreateView( int row , int co l, CRuntimeClass* pViewClass , SIZE
sizeInit,
CCreateContext* pContext );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
row
指 定 用 来 放 置 新 视 的 分 隔 器 窗 口 行 。
col
指 定 用 来 放 置 新 视 的 分 隔 器 窗 口 列 。
pViewClass
指 定 新 视 的 CRuntimeClass。
sizeInit
指 定 新 视 的 初 始 尺 寸 。
pContext
指 向 用 来 创 建 此 视 的 创 建 环 境 的 指 针 ( 通 常 , 该 pContext 被 传 递 给 在 其中 创 建 此 分 隔 器 窗 口 的 父 框 架 的 重 载 的 OnCreateClient 成 员 函 数 ) 。
说 明
此 成 员 函 数 用 来 为 一 个 静 态 分 隔 器 窗 口 创 建 窗 格 。 一 个 静 态 分 隔 器 窗 口 的 所 有窗 格 必 须 在 框 架 显 示 这 个 分 隔 器 之 前 被 创 建 。
当 一 个 动 态 分 隔 器 的 用 户 分 隔 一 个 窗 格 , 行 或 列 时 , 框 架 也 调 用 这 个 成 员 函 数来 创 建 新 的 窗 格 。
请 参 阅 CSplitterWnd::Create
CSplitter W nd::CSplitter W nd
CSplitterWnd( );
说 明
构 造 一 个 CSplitterWnd 分 两 步 。 首 先 调 用 这 个 构 造 函 数 , 它 创 建 一 个CSplitterWnd 对 象 , 然 后 调 用 Create 成 员 函 数 来 创 建 分 隔 器 窗 口 并 将 它 与 该CSplitterWnd 对 象 连 接 。
请 参 阅 CSplitterWnd::Create
CSplitter W nd::DeleteColumn
virtual void DeleteColumn( int colDelete );
参 数
colDelete
指 定 要 被 删 除 的 列 。
说 明
当 要 删 除 一 个 列 时 调 用 此 成 员 函 数 。
框 架 调 用 此 成 员 函 数 来 实 现 动 态 分 隔 器 窗 口 的 逻 辑 ( 如 果 此 分 隔 器 窗 口 具 有SPLS_DYNAMIC_SPLIT 风 格 ) 。 它 可 以 用 虚 函 数 CreateView 来 定 制 , 以 实 现更 高 级 的 动 态 分 隔 器 。
请 参 阅 CSplitterWnd::DeleteRow, CSplitterWnd::CreateView, CSplitterWnd::DeleteView
CSplitter W nd::DeleteRow
virtual void DeleteRow( int rowDelete );
参 数
rowDelete
指 定 要 被 删 除 的 行 。
说 明
当 要 删 除 一 个 行 时 调 用 此 成 员 函 数 。
框 架 调 用 此 成 员 函 数 来 实 现 动 态 分 隔 器 窗 口 的 逻 辑 ( 如 果 此 分 隔 器 窗 口 具 有SPLS_ DYNAMIC_SPLIT 风 格 ) 。 它 可 以 用 虚 函 数 CreateView 来 定 制 , 以 实现 更 高 级 的 动 态 分 隔 器 。
请 参 阅 CSplitterWnd::DeleteColumn, CSplitterWnd::CreateView,
CSplitterWnd::DeleteView
CSplitter W nd::DeleteView
virtual void DeleteView( int row , int col );
参 数
row
指 定 要 在 分 隔 器 窗 口 的 哪 一 行 中 删 除 视 。
col
指 定 要 在 分 隔 器 窗 口 的 哪 一 列 中 删 除 视 。
说 明
当 要 删 除 一 个 视 时 调 用 DeleteView 。 如 果 删 除 的 是 活 动 视 , 则 下 一 个 将 成 为 活动 视 。 缺 省 的 实 现 假 定 这 个 视 将 在 PostNcDestroy 中 自 动 删 除 。
框 架 调 用 此 成 员 函 数 来 实 现 动 态 分 隔 器 窗 口 的 逻 辑 ( 如 果 此 分 隔 器 窗 口 具 有SPLS_DYNAMIC_SPLIT 风 格 ) 。 它 可 以 用 虚 函 数 CreateView 来 定 制 , 以 实 现更 高 级 的 动 态 分 隔 器 。
请 参 阅 CWnd::PostNcDestroy, CSplitterWnd::CreateView,
CSplitterWnd::DeleteColumn,
CSplitterWnd::DeleteRow CSplitter W nd::DoKeyboardSplit virtual BOOL DoKeyboardSplit( ); 返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
框 架 调 用 此 成 员 函 数 来 实 现 一 个 键 盘 分 隔 命 令 , 通 常 是 W indow Split 。
这 个 成 员 函 数 是 一 个 高 级 命 令 , 被 CView 用 来 作 为 CSplitterWnd 实 现 的 代 表 。
请 参 阅 CView
CSplitter W nd::DoScroll
virtual BOOL DoScroll( CView* pViewFrom , UINT nScrollCode ,BOOL bDoScroll
= TRUE );
返 回 值
如 果 发 生 了 同 步 的 滚 动 则 返 回 非 零 值 ; 否 则 返 回 0 。
pViewFrom
- 个 指 向 视 的 指 针 , 滚 动 消 息 就 是 从 这 个 视 中 发 出 的 。
nScrollCode
一 个 滚 动 条 代 码 , 它 表 明 了 用 户 的 滚 动 要 求 。 这 个 参 数 包 括 两 个 部 分 : 一 个 是 低 字 节 , 用 来 确 定 发 生 的 水 平 滚 动 的 类 型 , 一 个 是 高 字 节 , 用 来确 定 发 生 的 垂 直 滚 动 的 类 型 :
-
SB_BOTTOM 滚 动 到 底 。
-
SB_LINEDOWN 向 下 滚 动 一 行 。
-
SB_LINEUP 向 上 滚 动 一 行 。
-
SB_PAGEDOWN 向 下 滚 动 一 页 。
-
SB_PAGEUP 向 上 滚 动 一 页 。
-
SB_TOP 滚 动 到 顶 。
bDoScroll
确 定 是 否 可 以 发 生 指 定 的 滚 动 动 作 。 如 果 bDoScroll 是 TRUE ( 就 是 说 , 如 果 一 个 子 窗 口 存 在 , 并 且 此 分 隔 窗 口 有 一 个 滚 动 范 围 ) , 则 指 定 的 滚动 动 作 可 以 发 生 ; 如 果 bDoScroll 是 FALSE ( 就 是 说 , 如 果 不 存 在 一 个子 窗 口 , 或 此 分 隔 视 没 有 滚 动 范 围 ) , 则 滚 动 将 不 会 发 生 。
说 明
当 视 接 收 到 一 个 滚 动 消 息 时 , 框 架 调 用 此 成 员 函 数 来 执 行 分 隔 窗 口 的 同 步 滚动 。
重 载 这 个 函 数 , 在 同 步 滚 动 允 许 之 前 请 求 一 个 由 用 户 指 定 的 动 作 。
请 参 阅 CSplitterWnd::DoScrollBy, CView::OnScroll
CSplitter W nd::DoScrollBy
virtual BOOL DoScrollBy( CView* pViewFrom , CSize sizeScroll,BOOL bDoScroll
= TRUE );
返 回 值
如 果 发 生 了 同 步 滚 动 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
pViewFrom
指 向 一 个 视 的 指 针 , 滚 动 消 息 就 是 从 这 个 视 发 出 的 。
sizeScroll
要 水 平 和 垂 直 滚 动 的 像 素 数 。
bDoScroll
确 定 是 否 可 以 发 生 指 定 的 滚 动 动 作 。 如 果 bDoScroll 是 TRUE ( 就 是 说 ,
如 果 一 个 子 窗 口 存 在 , 并 且 此 分 隔 窗 口 有 一 个 滚 动 范 围 ) , 则 指 定 的 滚动 动 作 可 以 发 生 ; 如 果 bDoScroll 是 FALSE ( 就 是 说 , 如 果 不 存 在 一 个子 窗 口 , 或 此 分 隔 视 没 有 滚 动 范 围 ) , 则 滚 动 将 不 会 发 生 。
说 明
在 响 应 一 个 滚 动 消 息 时 , 框 架 调 用 此 成 员 函 数 来 执 行 此 分 隔 窗 口 的 同 步 滚 动 , 滚 动 由 sizeScroll 指 定 的 像 素 数 。 正 值 表 示 向 下 和 向 右 滚 动 , 负 值 表 示 向 上 和 向左 滚 动 。
重 载 这 个 函 数 , 在 滚 动 允 许 之 前 请 求 一 个 由 用 户 指 定 的 动 作 。
请 参 阅 CSplitterWnd::DoScroll, CView::OnScroll
CSplitter W nd::GetActivePane
virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
返 回 值
返 回 指 向 活 动 窗 格 的 指 针 。 如 果 不 存 在 活 动 窗 格 则 返 回 NULL 。
参 数
pRow
指 向 一 个 用 来 接 收 此 活 动 窗 格 的 行 号 的 int 的 指 针 。
pCol
指 向 一 个 用 来 接 收 此 活 动 窗 格 的 列 号 的 int 的 指 针 。
说 明
框 架 调 用 此 成 员 函 数 来 确 定 一 个 分 隔 器 窗 口 中 的 活 动 窗 格 。
重 载 这 个 函 数 , 在 获 得 此 活 动 窗 格 之 前 请 求 一 个 由 用 户 指 定 的 动 作 。
请 参 阅 CSplitterWnd::SetActivePane, CFrameWnd::GetActiveView,CWnd::GetParentFrame,
CWnd::GetFocus CSplitter W nd::GetColumnCount int GetColumnCount( );
返 回 值
返 回 此 分 隔 器 中 的 当 前 列 数 。 对 一 个 静 态 分 隔 器 , 这 也 是 行 数 的 最 大 值 。
请 参 阅 CSplitterWnd::GetRowCount
CSplitter W nd::GetColumnInfo
void GetColumnInfo( int co l, int& cxCu r , int& cxMin );
参 数
col
指 定 一 列 。
cxCur
- 个 要 用 来 设 置 列 的 当 前 宽 度 的 int 的 引 用 。
cxMin
- 个 要 用 来 设 置 列 的 当 前 最 小 宽 度 的 int 的 引 用 。
说 明
此 成 员 函 数 用 来 获 取 指 定 列 的 信 息 。
请 参 阅 CSplitterWnd::SetColumnInfo, CSplitterWnd::GetRowInfo
CSplitter W nd::GetPane
CWnd* GetPane( int row , int col );
返 回 值
返 回 位 于 指 定 行 和 列 处 的 窗 格 。 此 返 回 窗 格 通 常 是 一 个 CView 派 生 类 。
参 数
row
指 定 一 行 。
col
指 定 一 列 。
请 参 阅 CSplitterWnd::GetActivePane, CSplitterWnd::IdFromRowCol, CSplitterWnd::IsChildPane
CSplitter W nd::GetRowCount
int GetRowCount( );
返 回 值
返 回 此 分 隔 器 窗 口 中 的 当 前 行 数 。 对 一 个 静 态 分 隔 器 窗 口 , 这 也 是 最 大 行 数 。
请 参 阅 CSplitterWnd::GetColumnCount
CSplitter W nd::GetRowInfo
void GetRowInfo( int row , int& cyCu r , int& cyMin );
参 数
row
指 定 一 行 。
cyCur
一 个 要 用 来 设 置 行 的 当 前 高 度 的 int 的 引 用 。
cyMin
一 个 要 用 来 设 置 行 的 当 前 最 小 高 度 的 int 的 引 用 。
说 明
此 成 员 函 数 用 来 获 取 指 定 行 的 信 息 。 cyCur 参 数 用 指 定 行 的 当 前 高 度 来 填 充 ,
cyWin 用 该 行 的 最 小 高 度 来 填 充 。
请 参 阅 CSplitterWnd::SetRowInfo, CSplitterWnd::GetColumnInfo
CSplitter W nd::GetScrollStyle
DWORD GetScrollStyle( ) const;
如 果 成 功 , 则 返 回 下 列 窗 口 风 格 标 志 的 一 个 或 多 个 :
-
WS_HSCROLL 如 果 分 隔 器 当 前 管 理 共 享 的 水 平 滚 动 条 。
-
WS_VSCROLL 如 果 分 隔 器 当 前 管 理 共 享 的 垂 直 滚 动 条 。如
果 分 隔 器 窗 口 当 前 不 管 理 任 何 共 享 滚 动 条 , 则 返 回 零 。
说 明
此 成 员 函 数 返 回 此 分 隔 器 窗 口 的 共 享 滚 动 条 的 风 格 。
请 参 阅 CSplitterWnd::SetScrollStyle
CSplitter W nd::IdFromRowCol
int IdFromRowCol( int row , int col );
返 回 此 窗 格 的 子 窗 口 的 ID 。
参 数
row
指 定 分 隔 器 窗 口 的 行 。
col
指 定 分 隔 器 窗 口 的 列 。
说 明
此 成 员 函 数 用 来 获 取 位 于 指 定 行 和 列 处 的 窗 格 的 子 窗 口 ID 。 这 个 成 员 函 数 用 于创 建 非 视 类 的 窗 格 , 并 且 可 以 在 该 窗 格 存 在 之 前 被 调 用 。
请 参 阅 CSplitterWnd::GetPane, CSplitterWnd::IsChildPane
CSplitter W nd::IsChild Pane
BOOL IsChildPane( CWnd* pWnd , int& row , int& col );
返 回 值
若 返 回 值 是 非 零 值 , 则 pWnd 是 此 分 隔 器 窗 口 的 子 窗 格 , 并 且 该 函 数 将 此 分 隔器 窗 口 的 窗 格 的 位 置 填 写 到 row 和 col 中 。 如 果 pWnd 不 是 此 分 隔 器 窗 口 的 子窗 口 , 则 返 回 0 。
参 数
pWnd
指 向 一 个 要 被 测 试 的 CWnd 对 象 的 指 针 。
row
是 对 一 个 将 要 被 设 置 为 行 号 的 int 的 引 用 。
col
是 对 一 个 将 要 被 设 置 为 列 号 的 int 的 引 用 。
说 明
此 成 员 函 数 用 来 确 定 pWnd 是 否 是 此 分 隔 器 窗 口 的 子 窗 口 。
请 参 阅 CSplitterWnd::GetPane
CSplitter W nd::OnDrawSplitter
virtual void OnDrawSplitter( CDC* pD C , ESplitType nType , const CRect& rect );
参 数
pDC
一 个 指 向 设 备 环 境 的 指 针 , 将 要 在 这 个 设 备 上 绘 画 。 如 果 pDC 是 NULL , 则 框 架 调 用 CWnd::RedrawWindow 并 且 没 有 分 隔 窗 口 被 绘 制 。
nType
一 个 enum ESplitType 值 , 可 以 是 下 列 值 之 一 :
-
splitBox 分 隔 器 拖 拉 框 。
-
splitBar 显 示 在 两 个 分 隔 窗 口 之 间 的 条 。
-
splitIntersection 分 隔 窗 口 的 交 。 当 在 Windows95 下 允 许 时
, 不 会 调用 这 个 元 素 。
-
splitBorder 分 隔 窗 口 边 界 。
rect
是 对 一 个 用 来 指 定 分 隔 窗 口 的 大 小 和 形 状 的 CRect 对 象 的 引 用 。
说 明
框 架 调 用 此 成 员 函 数 来 绘 制 并 指 定 一 个 分 隔 器 窗 口 的 精 确 的 特 征 。
要 对 一 个 分 隔 器 窗 口 的 各 个 图 形 部 件 的 图 像 进 行 高 级 定 制 , 可 以 重 载
OnDrawSplitter 。 缺 省 的 图 像 与 Microsoft Works for Windows 或 Microsoft W indows 95 中 的 分 隔 器 类 似 。 在 M icrosoft W orks for Windows 或 Microsoft W indows 95 中 分 隔 器 条 的 交 接 处 是 混 合 在 一 起 的 。
有 关 静 态 分 隔 器 窗 口 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多文 档 类 型 ,视 和 框 架 窗 口 ”中 的“ 分 隔 器 窗 口 ”;“ Visual C++ 文 档 ”中 的“ TN029 :分 隔 器 窗 口 ” ; 以 及 CSplitterWnd 类 概 述 。
请 参 阅 CSplitterWnd::OnInvertTracker
CSplitter W nd::OnInvertTracker
virtual void OnInvertTracker( const CRect& rect );
参 数
rect
是 对 一 个 指 定 跟 踪 矩 形 的 CRect 对 象 的 引 用 。
说 明
在 调 整 分 隔 器 大 小 期 间 , 框 架 调 用 此 成 员 函 数 。
要 对 一 个 分 隔 器 窗 口 的 图 像 进 行 高 级 定 制 , 可 以 重 载 OnInvertTracker。 缺 省 的图 像 与 Microsoft Works for Windows 或 Microsoft Windows 95 中 的 分 隔 器 类 似 。在 M icrosoft W orks for Windows 或 Microsoft Windows 95 中 分 隔 器 条 的 交 接 处是 混 合 在 一 起 的 。
有 关 静 态 分 隔 器 窗 口 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多文 档 类 型 ,视 和 框 架 窗 口 ”中 的“ 分 隔 器 窗 口 ”;“ Visual C++ 文 档 ”中 的“ TN029 :分 隔 器 窗 口 ” ; 以 及 CSplitterWnd 类 概 述 。
请 参 阅 CSplitterWnd::OnDrawSplitter
CSplitter W nd::RecalcLayout
void RecalcLayout( );
说 明
在 你 用 SetRowInfo 和 SetColumnInfo 成 员 函 数 调 整 了 行 和 列 的 大 小 之 后 , 调 用此 成 员 函 数 来 正 确 地 重 新 显 示 此 分 隔 器 窗 口 。 如 果 你 是 在 分 隔 器 窗 口 可 见 之 前改 变 行 和 列 的 大 小 作 为 创 建 过 程 的 一 部 分 , 则 不 需 要 调 用 这 个 成 员 函 数 。
无 论 什 么 时 候 用 户 调 整 此 分 隔 器 窗 口 的 大 小 或 移 动 一 个 分 隔 条 , 框 架 都 将 调 用这 个 成 员 函 数 。
请 参 阅 CSplitterWnd::SetRowInfo, CSplitterWnd::SetColumnInfo
CSplitter W nd::SetActivePane
virtual void SetActivePane( int row , int co l, CWnd* pWnd = NULL );
参 数
row
如果 pWnd 是 NULL , 则 此 参 数 指 定 将 要 被 激 活 的 窗 格 中 的 行 。
col
如果 pWnd 是 NULL , 则 此 参 数 指 定 将 要 被 激 活 的 窗 格 中 的 列 。
pWnd
- 个 指 向 CWnd 对 象 的 指 针 。 如 果 是 NULL , 则 由 row 和
col 指 定 的 窗格 被 置 为 活 动 窗 格 。 如 果 不 是 NULL , 则 它 指 定 了 要 被 激 活 的 窗 格 。
说 明
当 用 户 将 焦 点 改 变 到 框 架 窗 口 中 的 某 一 个 窗 格 时 , 框 架 调 用 此 成 员 函 数 来 设 置一 个 活 动 窗 格 。 你 可 以 显 式 地 调 用 SetActivePane 来 将 焦 点 改 变 到 指 定 的 视 。
可 以 通 过 提 供 行 和 列 , 或 pWnd 来 指 定 窗 格 。
请 参 阅 CSplitterWnd::GetActivePane, CSplitterWnd::GetPane, CFrameWnd::SetActiveView
CSplitter W nd::SetColumnInfo
void SetColumnInfo( int co l, int cxIdeal , int cxMin );
参 数
col
指 定 一 个 分 隔 器 窗 口 列 。
cxIdeal
指 定 分 隔 器 窗 口 列 的 以 像 素 表 示 的 理 想 宽 度 。
cxMin
指 定 分 隔 器 窗 口 列 以 像 素 表 示 的 最 小 宽 度 。
说 明
此 成 员 函 数 用 来 设 置 一 列 的 新 的 最 小 宽 度 和 理 想 宽 度 。 列 的 最 小 值 确 定 了 什 么时 候 列 将 太 小 以 至 于 不 能 被 完 全 显 示 。
当 框 架 显 示 分 隔 器 窗 口 时 , 它 从 分 隔 器 窗 口 的 客 户 区 的 左 上 角 至 右 下 角 , 根 据窗 格 的 理 想 尺 寸 按 行 和 列 来 排 放 各 个 窗 格 。
请 参 阅 CSplitterWnd::GetRowInfo, CSplitterWnd::RecalcLayout
CSplitter W nd::SetRowInfo
void SetRowInfo( int row, int cyIdeal , int cyMin );
参 数
row
指 定 一 个 分 隔 器 窗 口 行 。
cyIdeal
指 定 分 隔 器 窗 口 行 的 以 像 素 表 示 的 理 想 高 度 。
cyMin
指 定 分 隔 器 窗 口 行 以 像 素 表 示 的 最 小 高 度 。
说 明
此 成 员 函 数 用 来 设 置 一 行 的 新 的 最 小 高 度 和 理 想 高 度 。 行 的 最 小 值 确 定 了 什 么时 候 行 将 太 小 以 至 于 不 能 被 完 全 显 示 。
当 框 架 显 示 分 隔 器 窗 口 时 , 它 从 分 隔 器 窗 口 的 客 户 区 的 左 上 角 至 右 下 角 , 根 据窗 格 的 理 想 尺 寸 按 行 和 列 来 排 放 各 个 窗 格 。
请 参 阅 CSplitterWnd::GetRowInfo, CSplitterWnd::SetColumnInfo, CSplitterWnd::RecalcLayout
CSplitter W nd::SetScrollStyle
void SetScrollStyle( DWORD dwStyle );
参 数
dwStyle
此 分 隔 器 窗 口 的 共 享 滚 动 条 所 指 出 的 滚 动 条 风 格 , 可 以 是 下 列 值 之 一 :
-
WS_HSCROLL 创 建 /显 示 水 平 共 享 滚 动 条 。
-
WS_VSCROLL 创 建 /显 示 垂 直 共 享 滚 动 条 。
说 明
此 成 员 函 数 用 来 为 分 隔 器 窗 口 的 共 享 滚 动 条 指 定 新 的 滚 动 条 风 格 。 一 旦 创 建 了一 个 滚 动 条 , 即 使 调 用 了 没 有 这 个 风 格 的 SetScrollStyle , 此 滚 动 条 也 不 会 被 销毁 ; 而 是 隐 藏 这 些 滚 动 条 。 在 调 用 SetScrollStyle 之 后 , 为 了 使 所 有 的 改 变 见 效 ,
必 须 调 用 RecalcLayout 。
请 参 阅 CSplitterWnd::GetScrollStyle
CSplitter W nd::SplitColumn
virtual BOOL SplitColumn( int cxBefore );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
cxBefore
在 分 隔 出 现 点 前 面 的 以 像 素 表 示 的 位 置 。
当 创 建 了 一 个 垂 直 的 分 隔 器 窗 口 时 调 用 此 成 员 函 数 。 SplitColumn 指 明 分 隔 要 出现 的 缺 省 位 置 。
框 架 调 用 SplitColumn 来 实 现 动 态 分 隔 器 窗 口 ( 即 , 分 隔 器 窗 口 具 有SPLS_DYNAMIC_ SPLIT 风 格 ) 的 逻 辑 。 可 以 用 CreateView 函 数 来 定 制 它 , 以 实 现 更 为 高 级 的 动 态 分 隔 器 。
请 参 阅 CSplitterWnd::CreateView, CSplitterWnd::SplitRow, CSplitterWnd::RecalcLayout
CSplitter W nd::SplitRow
virtual BOOL SplitRow( int cyBefore );
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
cyBefore
在 分 隔 出 现 点 前 面 的 以 像 素 表 示 的 位 置 。
说 明
当 创 建 了 一 个 水 平 的 分 隔 器 窗 口 时 调 用 此 成 员 函 数 。 SplitRow 指 明 分 隔 要 出 现的 缺 省 位 置 。
框 架 调 用 SplitRow 来 实 现 动 态 分 隔 器 窗 口 ( 即 , 分 隔 器 窗 口 具 有
SPLS_DYNAMIC_SPLIT 风 格 ) 的 逻 辑 。 可 以 用 CreateView 函 数 来 定 制 它 , 以
实 现 更 为 高 级 的 动 态 分 隔 器 。
请 参 阅 CSplitterWnd::SplitColumn, CSplitterWnd::CreateView, CSplitterWnd::RecalcLayout