CSplitter W nd

CSplitterWnd 类 提 供 一 个 分 隔 器 窗 口 的 功 能 , 分 隔 器 窗 口 是 一 个 包 含 有 多 个 窗格 的 窗 口 。 窗 格 通 常 是 应 用 程 序 特 定 的 由 CView 派 生 的 对 象 , 但 它 也 可 以 是 具有 适 当 子 窗 口 ID 的 任 何 CWnd 对 象 。

  • 个 CSplitterWnd 对 象 通 常 被 嵌 入 CFrameWnd 或 CMDIChi ld Wnd 父

    对 象 。 你

应 按 如 下 步 骤 创 建 一 个 CSplitterWnd 对 象 :

  1. 在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。

  2. 重 载 父 框 架 的 CFrameWnd:: OnCreateClient 成 员 函 数 。

  3. 从 重 载 的 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 父 对 象 :

  1. 在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。

  2. 重 载 父 框 架 的 CFrameWnd::OnCreateClient 成 员 函 数 。

  3. 从 重 载 的 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 父 对 象 :

  1. 在 父 框 架 中 嵌 入 一 个 CSplitterWnd 成 员 变 量 。

  2. 重 载 父 框 架 的 CFrameWnd::OnCreateClient 成 员 函 数 。

  3. 从 重 载 的 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 是 此 分 隔 器 窗 口 的 子 窗 格 , 并 且 该 函 数 将 此 分 隔器 窗 口 的 窗 格 的 位 置 填 写 到 rowcol 中 。 如 果 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