CSplitterWnd

提供拆分窗口功能,此窗口包含多个窗格。

语法

class CSplitterWnd : public CWnd

成员

公共构造函数

名称 描述
CSplitterWnd::CSplitterWnd 调用,用于构造 CSplitterWnd 对象。

公共方法

名称 描述
CSplitterWnd::ActivateNext 执行“Next Pane”或“Previous Pane”命令。
CSplitterWnd::CanActivateNext 检查当前是否可以使用“Next Pane”或“Previous Pane”命令。
CSplitterWnd::Create 调用,用于创建动态拆分器窗口并将其附加到 CSplitterWnd 对象。
CSplitterWnd::CreateScrollBarCtrl 创建共享滚动条控件。
CSplitterWnd::CreateStatic 调用,用于创建静态拆分器窗口并将其附加到 CSplitterWnd 对象。
CSplitterWnd::CreateView 调用,用于在拆分器窗口中创建窗格。
CSplitterWnd::DeleteColumn 从拆分器窗口中删除一列。
CSplitterWnd::DeleteRow 从拆分器窗口中删除一行。
CSplitterWnd::DeleteView 从拆分器窗口中删除视图。
CSplitterWnd::DoKeyboardSplit 执行键盘拆分命令,通常为“Window Split”。
CSplitterWnd::DoScroll 执行拆分窗口的同步滚动。
CSplitterWnd::DoScrollBy 根据给定数目的像素滚动拆分窗口。
CSplitterWnd::GetActivePane 根据框架中的焦点或活动视图确定活动窗格。
CSplitterWnd::GetColumnCount 返回当前窗格列数。
CSplitterWnd::GetColumnInfo 返回指定列的信息。
CSplitterWnd::GetPane 返回指定行和列的窗格。
CSplitterWnd::GetRowCount 返回当前窗格行数。
CSplitterWnd::GetRowInfo 返回指定行的信息。
CSplitterWnd::GetScrollStyle 返回共享滚动条样式。
CSplitterWnd::IdFromRowCol 返回位于指定行和列的窗格的子窗口 ID。
CSplitterWnd::IsChildPane 调用,用于确定窗口当前是否为此拆分器窗口的子窗格。
CSplitterWnd::IsTracking 确定拆分器栏当前是否正在移动。
CSplitterWnd::RecalcLayout 调整行或列大小后调用,用于重新显示拆分器窗口。
CSplitterWnd::SetActivePane 将窗格设置为框架中的活动窗格。
CSplitterWnd::SetColumnInfo 借助调用来设置指定列信息。
CSplitterWnd::SetRowInfo 借助调用来设置指定行信息。
CSplitterWnd::SetScrollStyle 为拆分器窗口的共享滚动条支持指定新的滚动条样式。
CSplitterWnd::SplitColumn 指示框架窗口垂直拆分的位置。
CSplitterWnd::SplitRow 指示框架窗口水平拆分的位置。

受保护方法

名称 描述
CSplitterWnd::OnDraw 由框架调用以绘制拆分器窗口。
CSplitterWnd::OnDrawSplitter 呈现拆分窗口的图像。
CSplitterWnd::OnInvertTracker 呈现拆分窗口的图像,使其与框架窗口的大小和形状相同。

备注

窗格通常是派生自 CView 的特定于应用程序的对象,但它可以是具有相应子窗口 ID 的任何 CWnd 对象。

CSplitterWnd 对象通常嵌入在父 CFrameWndCMDIChildWnd 对象中。 使用以下步骤创建 CSplitterWnd 对象:

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

  2. 替代父框架的 CFrameWnd::OnCreateClient 成员函数。

  3. 从已替代的 OnCreateClient 中调用 CSplitterWndCreateCreateStatic 成员函数。

调用 Create 成员函数来创建动态拆分器窗口。 动态拆分器窗口通常用于创建和滚动同一文档的多个单独的窗格或视图。 框架会自动为拆分器创建初始窗格;然后,当用户操作拆分器窗口的控件时,框架会创建其他窗格、重设其他窗格大小和处置其他窗格。

调用 Create 时,指定最小行高和列宽,从而确定窗格何时太小而无法完全显示。 调用 Create 后,可以通过调用 SetColumnInfoSetRowInfo 成员函数来调整这些最小值。

还可以使用 SetColumnInfoSetRowInfo 成员函数来设置列的“理想”宽度和行的“理想”高度。 当框架显示拆分器窗口时,它首先会显示父框架,然后显示拆分器窗口。 然后,框架根据窗格的理想尺寸在列和行中布局窗格,并从拆分器窗口工作区的左上角到右下角进行部署。

动态拆分器窗口中的所有窗格必须属于同一类。 支持动态拆分器窗口的常见应用程序包括 Microsoft Word 和 Microsoft Excel。

使用 CreateStatic 成员函数创建静态拆分器窗口。 用户仅能更改静态拆分器窗口中窗格的大小,而无法更改其数量或顺序。

创建静态拆分器时,必须专门创建所有静态拆分器的窗格。 请确保在父框架的 OnCreateClient 成员函数返回之前创建所有窗格,否则框架将无法正确显示窗口。

CreateStatic 成员函数自动初始化一个最小行高和列宽为 0 的静态拆分器。 调用 Create 后,通过调用 SetColumnInfoSetRowInfo 成员函数调整这些最小值。 还可以在调用 CreateStatic 后使用 SetColumnInfoSetRowInfo 来指示所需的理想窗格尺寸。

静态拆分器的各个窗格通常属于不同类。 有关静态拆分器窗口的示例,请参阅图形编辑器和 Windows 文件管理器。

拆分器窗口支持特殊的滚动条(窗格可能具有的滚动条除外)。 这些滚动条是 CSplitterWnd 对象的子级,并与窗格共享。

在创建拆分器窗口时创建这些特殊的滚动条。 例如,具有一行、两列和 WS_VSCROLL 样式的 CSplitterWnd 将显示由两个窗格共享的垂直滚动条。 当用户移动滚动条时,WM_VSCROLL 消息将发送到两个窗格。 当窗格设置滚动条位置时,将设置共享滚动条。

有关拆分器窗口的详细信息,请参阅技术说明 29

有关如何创建动态拆分器窗口的详细信息,请参阅:

继承层次结构

CObject

CCmdTarget

CWnd

CSplitterWnd

要求

标头afxext.h

CSplitterWnd::ActivateNext

由框架调用,用于执行“Next Pane”或“Previous Pane”命令。

virtual void ActivateNext(BOOL bPrev = FALSE);

参数

bPrev
指示要激活的窗口。 TRUE 针对上一个;FALSE 针对下一个。

备注

此成员函数是 CView 类用来委托给 CSplitterWnd 实现的高级命令。

CSplitterWnd::CanActivateNext

由框架调用,用于检查“Next Pane”或“Previous Pane”命令当前是否可用。

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

参数

bPrev
指示要激活的窗口。 TRUE 针对上一个;FALSE 针对下一个。

返回值

如果成功,则不为 0;否则为 0。

备注

此成员函数是 CView 类用来委托给 CSplitterWnd 实现的高级命令。

CSplitterWnd::Create

若要创建动态拆分器窗口,请调用 Create 成员函数。

virtual 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);

参数

pParentWnd
拆分器窗口的父框架窗口。

nMaxRows
拆分器窗口中的最大行数。 此值不得超过 2。

nMaxCols
拆分器窗口中的最大列数。 此值不得超过 2。

sizeMin
指定可以显示窗格的最小大小。

pContext
指向 CCreateContext 结构的指针。 在大多数情况下,这可以是传递给父框架窗口的 pContext

dwStyle
指定窗口样式。

nID
窗口的子窗口的 ID。 ID 可以是 AFX_IDW_PANE_FIRST,除非拆分器窗口嵌套在另一个拆分器窗口中。

返回值

如果成功,则不为 0;否则为 0。

注解

可以通过以下步骤将 CSplitterWnd 嵌入到父 CFrameWndCMDIChildWnd 对象中:

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

  2. 替代父框架的 CFrameWnd::OnCreateClient 成员函数。

  3. 从已替代的 OnCreateClient 中调用 Create 成员函数。

从父框架中创建拆分器窗口时,请将父框架的 pContext 参数传递给拆分器窗口。 否则,此参数可以为 NULL

动态拆分器窗口的初始最小行高和列宽由 sizeMin 参数设置。 这些最小值用于确定窗格是否太小而无法完整显示,可以使用 SetRowInfoSetColumnInfo 成员函数进行更改。

有关动态拆分器窗口的详细信息,请参阅多种文档类型、视图和框架窗口一文、技术说明 29 以及 CSplitterWnd 类概述。

示例

// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   return m_wndSplitter.Create(this,
                               2, 2,          // TODO: adjust the number of rows, columns
                               CSize(10, 10), // TODO: adjust the minimum pane size
                               pContext);
}

CSplitterWnd::CreateScrollBarCtrl

由框架调用,用于创建共享滚动条控件。

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

参数

dwStyle
指定窗口样式。

nID
窗口的子窗口的 ID。 ID 可以是 AFX_IDW_PANE_FIRST,除非拆分器窗口嵌套在另一个拆分器窗口中。

返回值

如果成功,则不为 0;否则为 0。

注解

替代 CreateScrollBarCtrl,用于在滚动条旁边包含额外控件。 默认行为是创建常规 Windows 滚动条控件。

CSplitterWnd::CreateStatic

若要创建静态拆分器窗口,请调用 CreateStatic 成员函数。

virtual BOOL CreateStatic(
    CWnd* pParentWnd,
    int nRows,
    int nCols,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE,
    UINT nID = AFX_IDW_PANE_FIRST);

参数

pParentWnd
拆分器窗口的父框架窗口。

nRows
rows 的数量。 此值不得超过 16。

nCols
columns 的数量。 此值不得超过 16。

dwStyle
指定窗口样式。

nID
窗口的子窗口的 ID。 ID 可以是 AFX_IDW_PANE_FIRST,除非拆分器窗口嵌套在另一个拆分器窗口中。

返回值

如果成功,则不为 0;否则为 0。

注解

通常通过以下步骤将 CSplitterWnd 嵌入到父 CFrameWndCMDIChildWnd 对象中:

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

  2. 替代父框架的 OnCreateClient 成员函数。

  3. 从已替代的 CFrameWnd::OnCreateClient 中调用 CreateStatic 成员函数。

静态拆分器窗口包含固定数量的窗格,这些窗格通常来自不同类。

创建静态拆分器窗口时,必须同时创建其所有窗格。 CreateView 成员函数通常用于此用途,但也可以创建其他非视图类。

静态拆分器窗口的初始最小行高和列宽为 0。 这些最小值用于确定窗格何时太小而无法完整显示,可以使用 SetRowInfoSetColumnInfo 成员函数进行更改。

若要将滚动条添加到静态拆分器窗口,请将 WS_HSCROLLWS_VSCROLL 样式添加到 dwStyle

有关静态拆分器窗口的详细信息,请参阅多种文档类型、视图和框架窗口一文中的“拆分器窗口”、技术说明 29CSplitterWnd 类概述。

CSplitterWnd::CreateView

为静态拆分器窗口创建窗格。

virtual BOOL CreateView(
    int row,
    int col,
    CRuntimeClass* pViewClass,
    SIZE sizeInit,
    CCreateContext* pContext);

参数

row
指定要在其中放置新视图的拆分器窗口行。

col
指定要在其中放置新视图的拆分器窗口列。

pViewClass
指定新视图的 CRuntimeClass

sizeInit
指定新视图的初始大小。

pContext
指向用于创建视图的创建上下文的指针(通常是 pContext 传递到父框架的被替代的 CFrameWnd::OnCreateClient 成员函数,其中正在创建拆分器窗口)。

返回值

如果成功,则不为 0;否则为 0。

备注

必须在框架显示拆分器之前创建静态拆分器窗口的所有窗格。

当动态拆分器窗口的用户拆分窗格、行或列时,框架也会调用此成员函数来创建新窗格。

示例

// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
   // CMyView and CMyOtherView are user-defined views derived from CView
   m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
                            pContext);
   m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
                            pContext);

   return (m_bSplitterCreated);
}

CSplitterWnd::CSplitterWnd

调用,用于构造 CSplitterWnd 对象。

CSplitterWnd();

备注

分两步构造 CSplitterWnd 对象。 首先,调用构造函数,该构造函数创建 CSplitterWnd 对象,然后调用 Create 成员函数,该函数创建拆分器窗口并将其附加到 CSplitterWnd 对象。

CSplitterWnd::DeleteColumn

从拆分器窗口中删除一列。

virtual void DeleteColumn(int colDelete);

参数

colDelete
指定要删除的列。

备注

此成员函数由框架调用,用于实现动态拆分器窗口的逻辑(即如果拆分器窗口具有 SPLS_DYNAMIC_SPLIT 样式)。 它可以与虚函数 CreateView 一起进行自定义,从而实现更高级的动态拆分器。

CSplitterWnd::DeleteRow

从拆分器窗口中删除一行。

virtual void DeleteRow(int rowDelete);

参数

rowDelete
指定要删除的行。

备注

此成员函数由框架调用,用于实现动态拆分器窗口的逻辑(即如果拆分器窗口具有 SPLS_DYNAMIC_SPLIT 样式)。 它可以与虚函数 CreateView 一起进行自定义,从而实现更高级的动态拆分器。

CSplitterWnd::DeleteView

从拆分器窗口中删除视图。

virtual void DeleteView(
    int row,
    int col);

参数

row
指定要删除视图的拆分器窗口行。

col
指定要删除视图的拆分器窗口列。

注解

如果正在删除活动视图,下一个视图将变为活动视图。 默认实现会假定视图将在 PostNcDestroy 中自动删除。

此成员函数由框架调用,用于实现动态拆分器窗口的逻辑(即如果拆分器窗口具有 SPLS_DYNAMIC_SPLIT 样式)。 它可以与虚函数 CreateView 一起进行自定义,从而实现更高级的动态拆分器。

CSplitterWnd::DoKeyboardSplit

执行键盘拆分命令,通常为“Window Split”。

virtual BOOL DoKeyboardSplit();

返回值

如果成功,则不为 0;否则为 0。

备注

此成员函数是 CView 类用来委托给 CSplitterWnd 实现的高级命令。

CSplitterWnd::DoScroll

执行拆分窗口的同步滚动。

virtual BOOL DoScroll(
    CView* pViewFrom,
    UINT nScrollCode,
    BOOL bDoScroll = TRUE);

参数

pViewFrom
指向视图的指针,滚动消息源自该视图。

nScrollCode
一个滚动条代码,指示用户的滚动请求。 此参数由两个部分组成:低位字节,用于确定水平滚动的类型,以及高位字节,用于确定垂直滚动的类型:

  • SB_BOTTOM 滚动至底部。

  • SB_LINEDOWN 向下滚动一行。

  • SB_LINEUP 向上滚动一行。

  • SB_PAGEDOWN 向下滚动一页。

  • SB_PAGEUP 向上滚动一页。

  • SB_TOP 滚动至顶部。

bDoScroll
确定是否发生指定的滚动操作。 如果 bDoScrollTRUE(即,如果存在子窗口,且如果拆分窗口有滚动范围),则可发生指定的滚动操作;如果 bDoScrollFALSE(即,如果不存在子窗口,或者拆分视图没有滚动范围),则不会发生滚动。

返回值

如果发生同步滚动,返回值为非零;否则返回值为 0。

备注

当视图接收到滚动消息时,框架调用此成员函数来执行拆分窗口的同步滚动。 替代,用于在支持同步滚动之前要求用户执行操作。

CSplitterWnd::DoScrollBy

根据给定数目的像素滚动拆分窗口。

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

参数

pViewFrom
指向视图的指针,滚动消息源自该视图。

sizeScroll
要水平和垂直滚动的像素数。

bDoScroll
确定是否发生指定的滚动操作。 如果 bDoScrollTRUE(即,如果存在子窗口,且如果拆分窗口有滚动范围),则可发生指定的滚动操作;如果 bDoScrollFALSE(即,如果不存在子窗口,或者拆分视图没有滚动范围),则不会发生滚动。

返回值

如果发生同步滚动,返回值为非零;否则返回值为 0。

备注

此成员函数由框架调用,用于响应滚动消息,从而根据 sizeScroll 指示的像素量执行拆分窗口的同步滚动。 正值表示向下和向右滚动;负值表示向上和向左滚动。

替代,用于在支持滚动之前要求用户执行操作。

CSplitterWnd::GetActivePane

根据框架中的焦点或活动视图确定活动窗格。

virtual CWnd* GetActivePane(
    int* pRow = NULL,
    int* pCol = NULL);

参数

pRow
指向 int 的指针,用于检索活动窗格的行号。

pCol
指向 int 的指针,用于检索活动窗格的列号。

返回值

指向活动窗格的指针。 如果不存在活动窗格,返回值为 NULL

注解

框架调用此成员函数,用于确定拆分器窗口中的活动窗格。 替代以在获取活动窗格之前要求用户执行操作。

CSplitterWnd::GetColumnCount

返回当前窗格列数。

int GetColumnCount() const;

返回值

返回拆分器中的当前列数。 对于静态拆分器,这也将是最大列数。

CSplitterWnd::GetColumnInfo

返回指定列的信息。

void GetColumnInfo(
    int col,
    int& cxCur,
    int& cxMin) const;

参数

col
指定列。

cxCur
对要设置为当前列宽的 int 的引用。

cxMin
对要设置为当前最小列宽的 int 的引用。

CSplitterWnd::GetPane

返回指定行和列的窗格。

CWnd* GetPane(
    int row,
    int col) const;

参数

row
指定行。

col
指定列。

返回值

返回指定行和列的窗格。 返回的窗格通常是 CView 派生类。

CSplitterWnd::GetRowCount

返回当前窗格行数。

int GetRowCount() const;

返回值

返回拆分器窗口中的当前行数。 对于静态拆分器窗口,这也将是最大行数。

CSplitterWnd::GetRowInfo

返回指定行的信息。

void GetRowInfo(
    int row,
    int& cyCur,
    int& cyMin) const;

参数

row
指定行。

cyCur
int 的引用将设置为行的当前高度(以像素为单位)。

cyMin
int 的引用将设置为行的当前最小高度(以像素为单位)。

注解

调用此成员函数可获取有关指定行的信息。 cyCur 参数填充指定行的当前高度,cyMin 填充行的最小高度。

CSplitterWnd::GetScrollStyle

返回拆分器窗口的共享滚动条样式。

DWORD GetScrollStyle() const;

返回值

如果成功,返回值为以下一个或多个窗口样式标志:

  • 如果拆分器当前管理共享水平滚动条,返回值为 WS_HSCROLL

  • 如果拆分器当前管理共享垂直滚动条,返回值为 WS_VSCROLL

如果返回值为零,拆分器窗口当前未管理任何共享滚动条。

CSplitterWnd::IdFromRowCol

获取位于指定行和列的窗格的子窗口 ID。

int IdFromRowCol(
    int row,
    int col) const;

参数

row
指定拆分器窗口行。

col
指定拆分器窗口列。

返回值

窗格的子窗口 ID。

备注

此成员函数用于将非视图创建为窗格,且可以在窗格存在之前进行调用。

示例

HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);

   if (nCtlColor == CTLCOLOR_LISTBOX &&
       pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
   {
      // Pane 1,0 is a list box. Set the color of the text to be blue.
      pDC->SetBkColor(m_BkColor);
      pDC->SetTextColor(RGB(0, 0, 255));
      return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
   }
   // TODO: Return a different brush if the default is not desired
   return hbr;
}

CSplitterWnd::IsChildPane

确定 pWnd 当前是否为此拆分器窗口的子窗格。

BOOL IsChildPane(
    CWnd* pWnd,
    int* pRow,
    int* pCol);

参数

pWnd
指向要测试的 CWnd 对象的指针。

pRow
指向要在其中存储行号的 int 的指针。

pCol
指向用于存储列号的 int 的指针。

返回值

如果返回值为非零,pWnd 当前是此拆分器窗口的子窗格,pRowpCol 填充拆分器窗口中窗格的位置。 如果 pWnd 不是此拆分器窗口的子窗格,返回 0。

注解

在 6.0 之前的 Visual C++ 版本中,此函数定义为

BOOL IsChildPane(CWnd* pWnd, int& row, int& col);

此版本现已过时且不应使用。

CSplitterWnd::IsTracking

调用此成员函数以确定窗口中的拆分器栏当前是否正在移动。

BOOL IsTracking();

返回值

如果拆分器操作正在进行中,则为非零值;否则为 0。

CSplitterWnd::OnDrawSplitter

呈现拆分窗口的图像。

virtual void OnDrawSplitter(
    CDC* pDC,
    ESplitType nType,
    const CRect& rect);

参数

pDC
指向要在其中进行绘制的设备上下文的指针。 如果 pDCNULL,框架会调用 CWnd::RedrawWindow,且不绘制拆分窗口。

nType
enum ESplitType 的值,可以是以下值之一:

  • splitBox 拆分器拖动框。

  • splitBar 显示在两个拆分窗口之间的栏。

  • splitIntersection 拆分窗口的交集。 在 Windows 95/98 上运行时,不会调用此元素。

  • splitBorder 拆分窗口边界。

rect
对指定拆分窗口大小和形状的 CRect 对象的引用。

注解

框架调用此成员函数来绘制和指定拆分器窗口的精确特征。 替代 OnDrawSplitter,可用于对拆分器窗口的各种图形组件的图像进行高级自定义。 默认图像类似于 Microsoft Works for Windows 或 Microsoft Windows 95/98 中的拆分器,因为拆分条的交集部分混合在一起。

有关动态拆分器窗口的详细信息,请参阅多种文档类型、视图和框架窗口一文、技术说明 29 以及 CSplitterWnd 类概述。

CSplitterWnd::OnInvertTracker

呈现拆分窗口的图像,使其与框架窗口的大小和形状相同。

virtual void OnInvertTracker(const CRect& rect);

参数

rect
对指定跟踪矩形的 CRect 对象的引用。

备注

此重设拆分器大小期间,此成员函数由框架调用。 替代 OnInvertTracker,可用于对拆分器窗口的图像进行高级自定义。 默认图像类似于 Microsoft Works for Windows 或 Microsoft Windows 95/98 中的拆分器,因为拆分条的交集部分混合在一起。

有关动态拆分器窗口的详细信息,请参阅多种文档类型、视图和框架窗口一文、技术说明 29 以及 CSplitterWnd 类概述。

CSplitterWnd::RecalcLayout

调整行或列大小后调用,用于重新显示拆分器窗口。

virtual void RecalcLayout();

备注

使用 SetRowInfoSetColumnInfo 成员函数调整行和列大小后,调用此成员函数方可正确重新显示拆分器窗口。 如果在拆分器窗口可见之前更改行和列大小作为创建过程的一部分,无需调用此成员函数。

每当用户重设拆分器窗口大小或移动拆分时,框架都会调用此成员函数。

示例

请参阅 CSplitterWnd::SetColumnInfo 的示例。

CSplitterWnd::SetActivePane

将窗格设置为框架中的活动窗格。

virtual void SetActivePane(
    int row,
    int col,
    CWnd* pWnd = NULL);

参数

row
如果 pWndNULL,指定窗格中将处于活动状态的行。

col
如果 pWndNULL,指定窗格中将处于活动状态的列。

pWnd
一个指向 CWnd 对象的指针。 如果是 NULL,由 rowcol 指定的窗格会设置为活动状态。 如果不是 NULL,指定设置为活动状态的窗格。

备注

当用户将焦点更改为框架窗口内的窗格时,框架会调用此成员函数,用于将窗格设置为活动状态。 可以显式调用 SetActivePane 以将焦点更改为指定视图。

通过提供行和列来指定窗格,或通过提供 pWnd 来指定窗格

CSplitterWnd::SetColumnInfo

借助调用来设置指定列信息。

void SetColumnInfo(
    int col,
    int cxIdeal,
    int cxMin);

参数

col
指定拆分器窗口列。

cxIdeal
指定拆分器窗口列的理想宽度(以像素为单位)。

cxMin
指定拆分器窗口列的最小宽度(以像素为单位)。

备注

调用此成员函数为列设置新的最小宽度和理想宽度。 列最小值决定了列何时太小而无法完全显示。

当框架显示拆分器窗口时,它会根据窗格的理想尺寸在列和行中部署窗格,从拆分器窗口工作区的左上角到右下角部署。

示例

void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
   CMDIChildWnd::OnSize(nType, cx, cy);

   CRect rect;
   GetWindowRect(&rect);
   if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
   {
      m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
      m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
      m_wndSplitter.RecalcLayout();
   }
}

CSplitterWnd::SetRowInfo

借助调用来设置指定行信息。

void SetRowInfo(
    int row,
    int cyIdeal,
    int cyMin);

参数

row
指定拆分器窗口行。

cyIdeal
指定拆分器窗口行的理想高度(以像素为单位)。

cyMin
指定拆分器窗口行的最小高度(以像素为单位)。

备注

调用此成员函数为行设置新的最小高度和理想高度。 行最小值决定了行何时太小而无法完全显示。

当框架显示拆分器窗口时,它会根据窗格的理想尺寸在列和行中部署窗格,从拆分器窗口工作区的左上角到右下角部署。

CSplitterWnd::SetScrollStyle

为拆分器窗口的共享滚动条支持指定新的滚动样式。

void SetScrollStyle(DWORD dwStyle);

参数

dwStyle
拆分器窗口的共享滚动条支持的新滚动样式,可以是以下值之一:

  • WS_HSCROLL 创建/显示水平共享滚动条。

  • WS_VSCROLL 创建/显示垂直共享滚动条。

备注

滚动条创建后,即使调用 SetScrollStyle 时没有此样式,它也不会被销毁;相反,会隐藏这些滚动条。 这支持滚动条保留其状态,即使它们被隐藏。 调用 SetScrollStyle 后,必须调用 RecalcLayout 才能使所有更改生效。

CSplitterWnd::SplitColumn

指示框架窗口垂直拆分的位置。

virtual BOOL SplitColumn(int cxBefore);

参数

cxBefore
拆分发生前的位置(以像素为单位)。

返回值

如果成功,则不为 0;否则为 0。

注解

在创建垂直拆分器窗口时会调用此成员函数。 SplitColumn 指示发生拆分的默认位置。

SplitColumn 由框架调用,用于实现动态拆分器窗口的逻辑(即如果拆分器窗口具有 SPLS_DYNAMIC_SPLIT 样式)。 它可以与虚函数 CreateView 一起进行自定义,从而实现更高级的动态拆分器。

CSplitterWnd::SplitRow

指示框架窗口水平拆分的位置。

virtual BOOL SplitRow(int cyBefore);

参数

cyBefore
拆分发生前的位置(以像素为单位)。

返回值

如果成功,则不为 0;否则为 0。

备注

在创建水平拆分器窗口时会调用此成员函数。 SplitRow 指示发生拆分的默认位置。

SplitRow 由框架调用,用于实现动态拆分器窗口的逻辑(即如果拆分器窗口具有 SPLS_DYNAMIC_SPLIT 样式)。 它可以与虚函数 CreateView 一起进行自定义,从而实现更高级的动态拆分器。

CSplitterWnd::OnDraw

由框架调用以绘制拆分器窗口。

virtual void OnDraw(CDC* pDC);

参数

pDC
一个指向设备上下文的指针。

备注

另请参阅

MFC 示例 VIEWEX
CWnd
层次结构图
CView