CPane 类

CPane 类在 CControlBar 类的基础上进行了增强。 如果要升级现有 MFC 项目,请使用 CPane 替换出现的所有 CControlBar

语法

class CPane : public CBasePane

成员

公共构造函数

名称 描述
CPane::~CPane 析构函数。

公共方法

名称 描述
CPane::AdjustSizeImmediate 立即重新计算窗格的布局。
CPane::AllocElements 分配存储以供内部使用。
CPane::AllowShowOnPaneMenu 指定应用程序的窗格是否在运行时生成的窗格列表中列出。
CPane::CalcAvailableSize 计算指定矩形与当前窗口矩形之间的大小差异。
CPane::CalcInsideRect 计算窗格的内部矩形,并考虑边框和控制手柄。
CPane::CalcRecentDockedRect 计算最近停靠的矩形。
CPane::CalcSize 计算窗格的大小。
CPane::CanBeDocked 确定窗格是否可以停靠在指定的基本窗格中。
CPane::CanBeTabbedDocument 确定是否可以将窗格转换为选项卡式文档。
CPane::ConvertToTabbedDocument 将可停靠的窗格转换为选项卡式文档。
CPane::CopyState 复制窗格的状态。 (重写 CBasePane::CopyState。)
CPane::Create 创建控件条并将其附加到 CPane 对象。
CPane::CreateDefaultMiniframe 为浮动窗格创建微型框窗口。
CPane::CreateEx 创建控件条并将其附加到 CPane 对象。
CPane::CreateObject 由框架用于创建此类类型的动态实例。
CPane::DockByMouse 使用鼠标停靠方法停靠窗格。
CPane::DockPane 将浮动窗格停靠到基本窗格。
CPane::DockPaneStandard 使用轮廓(标准)停靠来停靠窗格。
CPane::DockToFrameWindow 将可停靠窗格停靠到框架。 (替代 CBasePane::DockToFrameWindow。)
CPane::DoesAllowSiblingBars 指示是否可以将另一个窗格停靠在当前窗格停靠的同一行。
CPane::FloatPane 浮动窗格。
CPane::GetAvailableExpandSize 返回窗格可以展开的量(以像素为单位)。
CPane::GetAvailableStretchSize 返回窗格可以收缩的量(以像素为单位)。
CPane::GetBorders 返回窗格边框的宽度。
CPane::GetClientHotSpot 返回窗格的热点
CPane::GetDockSiteRow 返回窗格停靠的停靠行。
CPane::GetExclusiveRowMode 确定窗格是否处于独占行模式。
CPane::GetHotSpot 返回基础 CMFCDragFrameImpl 对象中存储的热点。
CPane::GetMinSize 检索窗格的最小允许大小。
CPane::GetPaneName 检索窗格的标题。
CPane::GetResizeStep 内部使用。
CPane::GetThisClass 由框架用于获取指向与此类类型关联的 CRuntimeClass 对象的指针。
CPane::GetVirtualRect 检索窗格的虚拟矩形
CPane::IsChangeState 移动窗格时,此方法将分析该窗格相对于其他窗格、停靠行和微型框窗口的位置,并返回相应的 AFX_CS_STATUS 值。
CPane::IsDragMode 指定是否拖动窗格。
CPane::IsInFloatingMultiPaneFrameWnd 指定窗格是否位于多窗格框架窗口中。 (替代 CBasePane::IsInFloatingMultiPaneFrameWnd。)
CPane::IsLeftOf 确定窗格是否位于指定矩形的左侧(或上方)。
CPane::IsResizable 确定窗格是否可以重设大小。 (重写 CBasePane::IsResizable。)
CPane::IsTabbed 确定是否已在选项卡式窗口的选项卡控件中插入窗格。 (重写 CBasePane::IsTabbed。)
CPane::LoadState 从注册表加载窗格的状态。 (重写 CBasePane::LoadState。)
CPane::MoveByAlignment 按指定量移动窗格和虚拟矩形。
CPane::MovePane 将窗格移动到指定的矩形。
CPane::OnAfterChangeParent 在窗格的父级发生更改时由框架调用。
CPane::OnBeforeChangeParent 在窗格的父级将要更改时由框架调用。
CPane::OnPressCloseButton 在用户选择窗格标题栏上的“关闭”按钮时,由框架调用。
CPane::OnProcessDblClk 内部使用。
CPane::OnShowControlBarMenu 当即将显示特殊窗格菜单时由框架调用。
CPane::OnShowControlBarMenu 当即将显示特殊窗格菜单时由框架调用。
CPane::PrepareToDock 内部使用。
CPane::RecalcLayout 重新计算窗格的布局信息。 (重写 CBasePane::RecalcLayout。)
CPane::SaveState 将窗格的状态保存到注册表。 (重写 CBasePane::SaveState。)
CPane::SetActiveInGroup 将窗格标记为活动。
CPane::SetBorders 设置窗格的边框值。
CPane::SetClientHotSpot 设置窗格的热点。
CPane::SetDockState 还原窗格的停靠状态信息。
CPane::SetExclusiveRowMode 启用或禁用独占行模式。
CPane::SetMiniFrameRTC 设置默认微型框窗口的运行时类信息。
CPane::SetMinSize 设置窗格的最小允许大小。
CPane::SetVirtualRect 设置窗格的虚拟矩形
CPane::StretchPaneDeferWndPos 根据停靠样式垂直或水平拉伸窗格。
CPane::ToggleAutoHide 切换自动隐藏模式。
CPane::UndockPane 从当前停靠的停靠站点、默认滑块或微型框窗口中移除窗格。 (重写 CBasePane::UndockPane。)
CPane::UpdateVirtualRect 更新虚拟矩形。

受保护方法

名称 描述
CPane::OnAfterDock 在窗格停靠后由框架调用。
CPane::OnAfterFloat 在窗格浮动后由框架调用。
CPane::OnBeforeDock 在窗格即将停靠时由框架调用。
CPane::OnBeforeFloat 在窗格即将浮动时由框架调用。

数据成员

名称 描述
CPane::m_bHandleMinSize 启用窗格最小大小一致处理。
CPane::m_recentDockInfo 包含最近的停靠信息。

注解

通常,不会直接实例化 CPane 对象。 如果需要具有停靠功能的窗格,请从 CDockablePane 派生对象。 如果需要工具栏功能,请从 CMFCToolBar 派生对象。

CPane 中派生类时,该类可以停靠在 CDockSite 中,并且可以在 CPaneFrameWnd 中浮动。

继承层次结构

CObject

CCmdTarget

CWnd

CBasePane

CPane

要求

标头:afxPane.h

CPane::AdjustSizeImmediate

立即重新计算窗格的布局。

virtual void AdjustSizeImmediate(BOOL bRecalcLayout = TRUE);

参数

bRecalcLayout
[in] 若自动重新窗格的布局,则为 TRUE;否则为 FALSE。

备注

在动态更改窗格的布局时,请调用此方法。 例如,隐藏或显示工具栏按钮时,可能需要调用此方法。

CPane::AllocElements

分配存储以供内部使用。

BOOL AllocElements(
    int nElements,
    int cbElement);

参数

nElements
[in] 要为其分配存储的元素数。

cbElement
[in] 元素的大小(以字节为单位)。

返回值

如果内存分配失败,则为 FALSE;否则为 TRUE。

CPane::AllowShowOnPaneMenu

指定应用程序的窗格是否在运行时生成的窗格列表中列出。

virtual BOOL AllowShowOnPaneMenu() const;

返回值

如果窗格在列表中显示,则为 TRUE;否则为 FALSE。 此基实现总是返回 TRUE。

注解

AppWizard 生成的应用程序包含一个菜单选项,其中列出了该应用程序包含的窗格。 此方法确定窗格是否在列表中显示。

CPane::CalcAvailableSize

计算指定矩形与当前窗口矩形之间的大小差异。

virtual CSize CalcAvailableSize(CRect rectRequired);

参数

rectRequired
[in] 所需的矩形。

返回值

rectRequired 与当前窗口矩形之间的宽度和高度差异。

CPane::CalcInsideRect

计算窗格的内部矩形,包括边框和控制手柄。

void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

参数

rect
[out] 包含窗格工作区的大小和偏移量。

bHorz
[in] 如果窗格水平排列,则为 TRUE;否则为 FALSE。

备注

框架必须重新计算窗格的布局时,会调用此方法。 窗格工作区的大小和偏移量将填充 rect 参数。 这包括其边框和控制手柄。

CPane::CalcRecentDockedRect

计算最近停靠的矩形。

void CalcRecentDockedRect();

备注

此方法会更新 CPane::m_recentDockInfo

CPane::CalcSize

计算窗格的大小。

virtual CSize CalcSize(BOOL bVertDock);

参数

bVertDock
[in] 如果窗格垂直停靠,则为 TRUE;否则为 FALSE。

返回值

此方法的默认实现返回大小 (0, 0)。

注解

派生类应重写此方法。

CPane::CanBeDocked

确定窗格是否可以停靠在指定的基本窗格中。

virtual BOOL CanBeDocked(CBasePane* pDockBar) const;

参数

pDockBar
[in] 指定要停靠此窗格的窗格。

返回值

如果此窗格可以在指定的停靠窗格中停靠,则为 TRUE;否则为 FALSE。

备注

此方法通常由框架调用,以确定窗格是否可以停靠在指定的停靠窗格中。 若要确定窗格是否可以停靠,该方法将评估窗格当前启用的停靠对齐方式。

通过调用 CBasePane::EnableDocking,可以允许停靠到框架窗口的各侧边。

CPane::CanBeTabbedDocument

确定是否可以将窗格转换为选项卡式文档。

virtual BOOL CanBeTabbedDocument() const;

返回值

如果窗格可以转换为选项卡式文档,则为 TRUE;否则为 FALSE。

备注

如果要阻止将窗格转换为选项卡式文档,请重写派生类中的此方法并返回 FALSE。 选项卡式文档不会在“窗口位置”菜单中列出。

CPane::ConvertToTabbedDocument

将可停靠的窗格转换为选项卡式文档。

virtual void ConvertToTabbedDocument(BOOL bActiveTabOnly = TRUE);

参数

bActiveTabOnly
[in] CPane::ConvertToTabbedDocument 中不使用。

备注

只能将可停靠的窗格转换为选项卡式文档。 有关信息,请参阅 CDockablePane::ConvertToTabbedDocument

CPane::CopyState

复制窗格的状态。

virtual void CopyState(CPane* pOrgBar);

参数

pOrgBar
[in] 指向窗格的指针。

备注

此方法将 pOrgBar 的状态复制到当前窗格

CPane::Create

创建控制条并将其附加到 CPane 对象。

virtual BOOL Create(
    LPCTSTR lpszClassName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    DWORD dwControlBarStyle = AFX_DEFAULT_PANE_STYLE,
    CCreateContext* pContext = NULL);

参数

lpszClassName
[in] 指定 Windows 类的名称。

dwStyle
[in] 指定窗口样式特性。 有关详细信息,请参阅窗口样式

rect
[in] 指定 pParentWnd 窗口的初始大小和位置(使用客户端坐标表示)

pParentWnd
[in, out] 指定此窗格的父窗口。

nID
[in] 指定窗格的 ID。

dwControlBarStyle
[in] 指定窗格的样式。 有关详细信息,请参阅 CBasePane::CreateEx

pContext
[in, out] 指定窗格的创建上下文。

返回值

如果成功创建窗格,则为 TRUE;否则为 FALSE。

注解

此方法可创建 Windows 窗格并将其附加到 CPane 对象。

如果在调用 Create 之前没有明确初始化 CPane::m_recentDockInfo,则在浮动或停靠窗格时,参数 rect 将用作矩形

CPane::CreateDefaultMiniframe

为浮动窗格创建微型框窗口。

virtual CPaneFrameWnd* CreateDefaultMiniframe(CRect rectInitial);

参数

rectInitial
[in] 指定要创建的微型框窗口的初始大小和位置(使用屏幕坐标表示)。

返回值

新创建的微型框窗口。

备注

在窗格浮动时,框架调用此方法创建微型框窗口。 微型框窗口可以是 CPaneFrameWnd 类型,也可以是 CMultiPaneFrameWnd 类型。 如果窗格具有 AFX_CBRS_FLOAT_MULTI 样式,则会创建一个多微型框窗口。

微型框窗口的运行时类信息存储在 CPane::m_pMiniFrameRTC 成员中。 如果你决定创建自定义微型框窗口,则可以使用派生类来设置此成员。

CPane::CreateEx

创建控制条并将其附加到 CPane 对象。

virtual BOOL CreateEx(
    DWORD dwStyleEx,
    LPCTSTR lpszClassName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    DWORD dwControlBarStyle = AFX_DEFAULT_PANE_STYLE,
    CCreateContext* pContext = NULL);

参数

dwStyleEx
[in] 指定扩展窗口样式特性。 有关详细信息,请参阅扩展窗口样式

lpszClassName
[in] 指定 Windows 类的名称。

dwStyle
[in] 指定窗口样式特性。 有关详细信息,请参阅窗口样式

rect
[in] 指定 pParentWnd 窗口的初始大小和位置(使用客户端坐标表示)

pParentWnd
[in, out] 指定此窗格的父窗口。

nID
[in] 指定窗格的 ID。

dwControlBarStyle
[in] 指定窗格的样式。 有关详细信息,请参阅 CBasePane::CreateEx

pContext
[in, out] 指定窗格的创建上下文。

返回值

如果成功创建窗格,则为 TRUE;否则为 FALSE。

注解

此方法可创建 Windows 窗格并将其附加到 CPane 对象。

如果在调用 CreateEx 之前没有明确初始化 CPane::m_recentDockInfo,则在浮动或停靠窗格时,参数 rect 将用作矩形

CPane::DockByMouse

使用鼠标停靠窗格。

virtual BOOL DockByMouse(CBasePane* pDockBar);

参数

pDockBar
[in] 指定要停靠此窗格的基本窗格。

返回值

如果窗格已成功停靠,则为 TRUE;否则为 FALSE。

CPane::DockPane

将浮动窗格停靠到基本窗格。

virtual BOOL DockPane(
    CBasePane* pDockBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

参数

pDockBar
[in, out] 指定要将此窗格停靠到其中的基本窗格。

lpRect
[in] 指定要停靠此窗格的基本窗格中的矩形。

dockMethod
[in] 指定要使用的停靠方法。 可用选项如下所示:

选项 说明
DM_UNKNOWN 停靠方法未知时,框架使用此选项。 窗格不存储其最近的浮动位置。 如果没有必要存储最近的浮动位置,还可以使用此选项以编程方式停靠窗格。
DM_MOUSE 内部使用。
DM_DBL_CLICK 双击控制手柄时,将使用此选项。 窗格将重新定位在最近的停靠位置。 如果通过双击取消停靠窗格,则窗格将重新定位在最近的浮动位置。
DM_SHOW 此选项可用于以编程方式停靠窗格。 窗格存储最近的浮动位置。
DM_RECT 窗格停靠在 lpRect 指定的区域中
DM_STANDARD 使用此选项时,框架在窗格移动时将其绘制为轮廓框架。

返回值

如果窗格已成功停靠,则为 TRUE;否则为 FALSE。

注解

此方法将窗格停靠到 pDockBar 参数指定的基本窗格。 必须先通过调用 CBasePane::EnableDocking 来启用停靠。

CPane::DockPaneStandard

使用轮廓(标准)停靠来停靠窗格。

virtual CPane* DockPaneStandard(BOOL& bWasDocked);

参数

bWasDocked
[in] 如果窗格已成功停靠,则为 TRUE;否则为 FALSE。

返回值

此方法始终返回 this 指针。

备注

此方法仅用于派生自 CDockablePane 类的窗格。 有关详细信息,请参阅 CDockablePane::DockPaneStandard

CPane::DockToFrameWindow

将可停靠窗格停靠到框架。

virtual BOOL DockToFrameWindow(
    DWORD dwAlignment,
    LPCRECT lpRect = NULL,
    DWORD dwDockFlags = DT_DOCK_LAST,
    CBasePane* pRelativeBar = NULL,
    int nRelativeIndex = -1,
    BOOL bOuterEdge = FALSE);

参数

dwAlignment
[in] 要将窗格停靠到的父框架的一侧。

lpRect
[in] 指定的大小。

dwDockFlags
[in] 已忽略。

pRelativeBar
[in] 已忽略。

nRelativeIndex
[in] 已忽略。

bOuterEdge
[in] 如果为 TRUE 并且在 dwAlignment 指定的一侧有其他可停靠窗格,则该窗格停靠在其他窗格之外,更靠近父框架的边缘。 如果为 FALSE,则窗格停靠在更靠近工作区中心的位置。

返回值

如果无法创建窗格分隔符(CPaneDivider 类),则为 FALSE;否则为 TRUE。

注解

CPane::DoesAllowSiblingBars

指示是否可以将另一个窗格停靠在当前窗格停靠的同一行。

virtual BOOL DoesAllowSiblingBars() const;

返回值

如果此窗格可以停靠到其所在行上的另一个窗格,则为 TRUE;否则为 FALSE。

备注

可以通过调用 CPane::SetExclusiveRowMode 来启用或禁用此行为。

默认情况下,工具栏已禁用独占行模式,而菜单栏已启用独占行模式。

CPane::FloatPane

浮动窗格。

virtual BOOL FloatPane(
    CRect rectFloat,
    AFX_DOCK_METHOD dockMethod = DM_UNKNOWN,
    bool bShow = true);

参数

rectFloat
[in] 指定窗格浮动时放置的位置(使用屏幕坐标表示)。

dockMethod
[in] 指定窗格浮动时要使用的停靠方法。 有关可能值的列表,请参阅 CPane::DockPane

bShow
[in] 若窗格在浮动时显示,则为 TRUE;否则为 FALSE。

返回值

如果窗格已成功浮动,或者如果窗格因 CBasePane::CanFloat 返回 FALSE 而无法浮动,则为 TRUE;否则为 FALSE。

注解

调用此方法以在 rectFloat 参数指定的位置浮动窗格。 此方法会自动为窗格创建父微型框窗口。

CPane::GetAvailableExpandSize

返回窗格可以展开的量(以像素为单位)。

virtual int GetAvailableExpandSize() const;

返回值

如果窗格水平停靠,则返回值为可用宽度;否则,返回值为可用高度。

注解

CPane::GetAvailableStretchSize

返回窗格可以收缩的量(以像素为单位)。

virtual int GetAvailableStretchSize() const;

返回值

窗格可以收缩的量(以像素为单位)。 如果窗格水平停靠,则此量为可用宽度;否则,此量为可用高度。

备注

可用的拉伸大小的计算方式为从当前大小 (CWnd::GetWindowRect) 中减去窗格的最小允许大小 (CPane::GetMinSize)。

CPane::GetBorders

返回窗格边框的宽度。

CRect GetBorders() const;

返回值

包含窗格每一侧的当前宽度(以像素为单位)的 CRect 对象。 例如,CRect 对象的 left 成员的值是左边框的宽度。

注解

若要设置边框的大小,请调用 CPane::SetBorders

CPane::GetClientHotSpot

返回窗格的热点

CPoint GetClientHotSpot() const;

返回值

注解

热点是用户在窗格上选择并按住以移动窗格的点。 当窗格从停靠位置移动时,热点用于平滑动画。

CPane::GetDockSiteRow

返回窗格停靠的停靠行(CDockingPanesRow 类)。

CDockingPanesRow* GetDockSiteRow() const;

返回值

CDockingPanesRow*,指向窗格停靠的停靠行;或者如果窗格未停靠,则为 NULL。

CPane::GetExclusiveRowMode

确定窗格是否处于独占行模式。

virtual BOOL GetExclusiveRowMode() const;

返回值

如果窗格处于独占行模式,则为 TRUE;否则为 FALSE。

备注

有关独占行模式的详细信息,请参阅 CPane::SetExclusiveRowMode

CPane::GetHotSpot

返回基础 CMFCDragFrameImpl 对象中存储的热点。

CPoint GetHotSpot() const;

返回值

备注

CPane 类包含一个 CMFCDragFrameImpl 对象 m_dragFrameImpl,该对象负责绘制用户在标准停靠模式下移动窗格时显示的矩形。 当用户移动窗格时,热点用于绘制相对于当前鼠标位置的矩形。

CPane::GetMinSize

检索窗格的最小允许大小。

virtual void GetMinSize(CSize& size) const;

参数

size
[out] 一个用最小允许大小填充的 CSize 对象。

注解

CPane::GetPaneName

检索窗格的标题。

virtual void GetPaneName(CString& strName) const;

参数

strName
[out] 一个用标题名称填充的 CString 对象。

备注

当窗格停靠或浮动时,窗格标题将在标题栏区域中显示。 如果窗格是选项卡式组的一部分,标题将在选项卡区域中显示。 如果窗格处于自动隐藏模式,则标题将在 CMFCAutoHideButton 上显示。

CPane::GetVirtualRect

检索窗格的虚拟矩形

void GetVirtualRect(CRect& rectVirtual) const;

参数

rectVirtual
[out] 一个用虚拟矩形填充的 CRect 对象。

备注

窗格移动时,框架会将窗格的原始位置存储在虚拟矩形中。 框架可以使用虚拟矩形还原窗格的原始位置。

请勿调用与虚拟矩形相关的方法,除非以编程方式移动窗格。

CPane::IsChangeState

移动窗格时,此方法将分析该窗格相对于其他窗格、停靠行和微型框窗口的位置,并返回相应的 AFX_CS_STATUS 值。

virtual AFX_CS_STATUS IsChangeState(
    int nOffset,
    CBasePane** ppTargetBar) const;

参数

nOffset
[in] 指定停靠敏感度。 例如,在停靠行的 nOffset 像素内移动的窗格将停靠

ppTargetBar
[in] 该方法返回时,ppTargetBar 要么包含指向当前窗格应停靠到的对象的指针,要么在没有应进行的停靠时,包含 NULL

返回值

以下 AFX_CS_STATUS 值之一:

说明
CS_NOTHING 窗格不在停靠站点附近。 框架不会停靠窗格。
CS_DOCK_IMMEDIATELY 窗格位于一个停靠站点上,并且已启用 DT_IMMEDIATE 样式。 框架会立即停靠窗格。
CS_DELAY_DOCK 窗格位于一个停靠站点上,该停靠站点要么是另一个停靠窗格,要么是主框架边缘。 当用户释放移动时,框架会停靠窗格。
CS_DELAY_DOCK_TO_TAB 窗格位于使窗格停靠在选项卡式窗口中的停靠站点上。 当窗格位于另一个停靠窗格的标题栏上或选项卡式窗格的选项卡区域上时,会发生此情况。 当用户释放移动时,框架会停靠窗格。

CPane::IsDragMode

指定是否移动窗格。

virtual BOOL IsDragMode() const;

返回值

如果在移动窗格,则为 TRUE;否则为 FALSE。

备注

CPane::IsInFloatingMultiPaneFrameWnd

指定窗格是否位于多窗格框架窗口中(CMultiPaneFrameWnd 类)。

virtual BOOL IsInFloatingMultiPaneFrameWnd() const;

返回值

如果窗格位于多窗格框架窗口中,则为 TRUE;否则为 FALSE。

备注

只有可停靠窗格可以浮动在多窗格框架窗口中。 因此,CPane::IsInFloatingMultiPaneFrameWnd 始终返回 FALSE。

CPane::IsLeftOf

确定窗格是否位于指定矩形的左侧(或上方)。

bool IsLeftOf(
    CRect rect,
    bool bWindowRect = true) const;

参数

rect
[in] 一个用于进行比较的 CRect 对象。

bWindowRect
[in] 如果为 TRUE,则假定 rect 包含屏幕坐标;如果为 FALSE,则假定 rect 包含客户端坐标

返回值

备注

如果窗格水平停靠,此方法将检查其位置是否在 rect 左侧。 否则,此方法会检查位置是否高于 rect

CPane::IsResizable

指定窗格是否可重设大小。

virtual BOOL IsResizable() const;

返回值

如果窗格可重设大小,则为 TRUE;否则为 FALSE。

注解

CPane 对象不可调整大小。

停靠管理器使用可调整大小的标志来确定窗格布局。 不可调整大小的窗格始终位于父框架的外部边缘。

不可调整大小的窗格不能驻留在停靠容器中。

CPane::IsTabbed

确定是否已在选项卡式窗口的选项卡控件中插入窗格。

virtual BOOL IsTabbed() const;

返回值

如果窗格为选项卡式,则为 TRUE;否则为 FALSE。

备注

选项卡式状态与浮动状态、停靠状态和自动隐藏状态分开处理。

CPane::LoadState

从注册表加载窗格的状态。

virtual BOOL LoadState(
    LPCTSTR lpszProfileName = NULL,
    int nIndex = -1,
    UINT uiID = (UINT) -1);

参数

lpszProfileName
[in] 配置文件名称。

nIndex
[in] 配置文件索引。

uiID
[in] 窗格 ID。

返回值

如果已成功加载窗格状态,则为 TRUE;否则为 FALSE。

备注

框架调用此方法从注册表加载窗格状态。 在派生类中重写此方法以加载由 CPane::SaveState 保存的其他信息。

重写此方法时,还会调用基方法,并在基方法返回 FALSE 时返回 FALSE。

CPane::m_bHandleMinSize

启用最小窗格大小一致处理。

AFX_IMPORT_DATA static BOOL m_bHandleMinSize;

备注

如果应用程序中的一个或多个停靠窗格重写 GetMinSize,或者如果应用程序调用 SetMinSize,则可能需要将此静态成员设置为 TRUE,以便使框架能够一致地处理窗格大小。

如果此值设置为 TRUE,则大小应缩小到最小大小以下的所有窗格都会被剪裁,而不是拉伸。 由于框架使用窗口区域进行窗格大小调整,因此如果此值设置为 TRUE,则不要更改停靠窗格的窗口区域的大小。

CPane::m_recentDockInfo

包含最近的停靠信息。

CRecentDockSiteInfo m_recentDockInfo;

备注

框架在此成员中存储窗格的最新停靠状态信息。

CPane::MoveByAlignment

按指定量移动窗格和虚拟矩形。

BOOL MoveByAlignment(
    DWORD dwAlignment,
    int nOffset);

参数

dwAlignment
[in] 指定窗格对齐方式。

nOffset
[in] 窗格和虚拟矩形的移动量(以像素为单位)。

返回值

备注

dwAlignment 可以是以下任一值

说明
CBRS_ALIGN_TOP 允许窗格停靠在框架窗口工作区的顶部。
CBRS_ALIGN_BOTTOM 允许窗格停靠在框架窗口工作区的底部。
CBRS_ALIGN_LEFT 允许窗格停靠在框架窗口工作区的左侧。
CBRS_ALIGN_RIGHT 允许窗格停靠在框架窗口工作区的右侧。
CBRS_ALIGN_ANY 允许窗格停靠在框架窗口工作区的任一侧。

如果 dwAlignment 包含 CBRS_ALIGN_LEFT 或 CBRS_ALIGN_RIGHT 标志,则窗格和虚拟矩形水平移动;否则,如果 dwAlignment 包含 CBRS_ALIGN_TOP 或 CBRS_ALIGN_BOTTOM 标志,则窗格和虚拟矩形垂直移动

CPane::MovePane

将窗格移动到指定的矩形。

virtual CSize MovePane(
    CRect rectNew,
    BOOL bForceMove,
    HDWP& hdwp);

参数

rectNew
[in] 指定窗格的新矩形。

bForceMove
[in] 如果为 TRUE,此方法将忽略允许的最小窗格大小 (CPane::GetMinSize);否则,如有必要,将调整窗格以确保其至少为允许的最小大小。

hdwp
[in] 未使用。

返回值

一个 CSize 包含新旧矩形之间的宽度和高度差异的对象(旧矩形 - rectNew)

备注

此方法仅用于可停靠窗格。

CPane::OnAfterChangeParent

在窗格的父级发生更改时由框架调用。

virtual void OnAfterChangeParent(CWnd* pWndOldParent);

参数

pWndOldParent
[in, out] 窗格的上一个父窗口。

注解

当窗格的父窗口因停靠或浮动操作而改变时,框架将调用此方法。

CPane::OnAfterDock

在窗格停靠后由框架调用。

virtual void OnAfterDock(
    CBasePane* pBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

参数

pBar
[in] 未使用此参数。

lpRect
[in] 未使用此参数。

dockMethod
[in] 未使用此参数。

CPane::OnAfterFloat

由框架在窗格浮动后调用。

virtual void OnAfterFloat();

备注

如果要在窗格浮动之后进行任何处理,则可在派生类中重写此方法。

CPane::OnBeforeChangeParent

在窗格的父级将要更改时由框架调用。

virtual void OnBeforeChangeParent(
    CWnd* pWndNewParent,
    BOOL bDelay = FALSE);

参数

pWndNewParent
[in, out] 指定新的父窗口。

bDelay
[in] 若要延迟全局停靠布局调整,则为 TRUE;否则为 FALSE。

备注

当窗格的父窗口因窗格正在停靠或浮动即将改变时,框架将调用此方法。

默认情况下,该窗格通过调用 CDockSite::RemovePane 向停靠窗格注销。

CPane::OnBeforeDock

在窗格即将停靠时由框架调用。

virtual BOOL OnBeforeDock(
    CBasePane** ppDockBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

参数

ppDockBar
[in, out] 指定此窗格停将靠到的窗格。

lpRect
[in] 指定停靠矩形。

dockMethod
[in] 指定停靠方法。

返回值

如果窗格可以停靠,则为 TRUE。 如果函数返回 FALSE,则停靠操作将中止。

注解

此方法在窗格即将停靠时由框架调用。 如果要在窗格最终停靠之前进行任何处理,则可在派生类中重写此方法。

CPane::OnBeforeFloat

在窗格即将悬浮时由框架调用。

virtual BOOL OnBeforeFloat(
    CRect& rectFloat,
    AFX_DOCK_METHOD dockMethod);

参数

rectFloat
[in] 指定窗格在处于浮动状态时的位置和大小。

dockMethod
[in] 指定窗格的停靠方法。

返回值

如果窗格可浮动,则为 TRUE;否则为 FALSE。

注解

此方法在窗格即将浮动时由框架调用。 如果要在窗格最终浮动之前进行任何处理,则可在派生类中重写此方法。

CPane::OnPressCloseButton

在用户按下窗格标题栏上的“关闭”按钮时,由框架调用。

virtual void OnPressCloseButton();

备注

当用户按下窗格标题栏上的“关闭”按钮时,框架将调用此方法。 若要接收有关“关闭”事件的通知,可以在派生类中重写此方法

CPane::OnShowControlBarMenu

当即将显示特殊窗格菜单时由框架调用。

virtual BOOL OnShowControlBarMenu(CPoint point);

参数

point
[in] 指定菜单位置。

返回值

如果菜单可显示,则为 TRUE;否则为 FALSE。

备注

菜单包含多个项,可用于指定窗格的行为,即:浮动、停靠、自动隐藏和隐藏。 可以通过调用 CDockingManager::EnableDockSiteMenu 为所有窗格启用此菜单。

CPane::RecalcLayout

重新计算窗格的布局信息。

virtual void RecalcLayout();

备注

如果窗格停靠,此方法会通过将窗格的大小设置为窗格的当前大小来更新窗格的虚拟矩形。

如果窗格浮动,此方法会通知父微型框将窗格的大小调整为微型框的大小。 框架可确保微型框至少是窗格的最小允许大小 (CPane::GetMinSize),并在必要时调整微型框的大小。

CPane::SaveState

将窗格的状态保存到注册表。

virtual BOOL SaveState(
    LPCTSTR lpszProfileName = NULL,
    int nIndex = -1,
    UINT uiID = (UINT) -1);

参数

lpszProfileName
[in] 配置文件名称。

nIndex
[in] 配置文件索引。

uiID
[in] 窗格 ID。

返回值

如果已成功保存状态,则为 TRUE;否则为 FALSE。

备注

框架在将窗格状态保存到注册表时调用此方法。 在派生类中重写 SaveState 以存储其他信息。

重写此方法时,还会调用基方法,并在基方法返回 FALSE 时返回 FALSE。

CPane::SetActiveInGroup

将窗格标记为活动。

virtual void SetActiveInGroup(BOOL bActive);

参数

bActive
[in] 指定窗格是否标记为活动的 BOOL。

注解

显示可停靠窗格或选择“自动隐藏”按钮时,相应的自动隐藏窗格将标记为活动。

与窗格关联的“自动隐藏”按钮的外观基于两个因素。 如果窗格处于活动状态,且 static BOOL CMFCAutoHideButton::m_bOverlappingTabs 为 TRUE,则框架会将“自动隐藏”按钮显示为图标和标签。 对于非活动窗格,框架仅显示“自动隐藏”图标。

如果 CMFCAutoHideButton::m_bOverlappingTabs 为 FALSE,或者如果窗格没有位于组中,框架会将关联的“自动隐藏”按钮显示为图标和标签。

CPane::SetBorders

设置窗格的边框值。

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

参数

cxLeft
[in] 指定窗格左边框的宽度(以像素为单位)。

cyTop
[in] 指定窗格上边框的宽度(以像素为单位)。

cxRight
[in] 指定窗格右边框的宽度(以像素为单位)。

cyBottom
[in] 指定窗格下边框的宽度(以像素为单位)。

lpRect
[in] 一个包含窗格每个边框的宽度(以像素为单位)的 CRect 对象。

备注

调用此函数可设置窗格边框的大小。

CPane::SetClientHotSpot

设置窗格的热点

void SetClientHotSpot(const CPoint& ptNew);

参数

ptNew
[in] 一个指定新热点的 CPoint 对象。

备注

热点是用户在窗格上选择并按住以移动窗格的点。 当窗格从停靠位置拖动时,热点用于平滑动画。

CPane::SetDockState

还原窗格的停靠状态信息。

virtual void SetDockState(CDockingManager* pDockManager);

参数

pDockManager
[in] 指向主框架窗口的停靠管理器的指针。

备注

框架可调用此方法来还原窗格的最近停靠状态信息。 窗格将最近的停靠状态信息存储在 CPane::m_recentDockInfo 中。 有关详细信息,请参阅 CRecentDockSiteInfo 类

从外部源加载窗格信息时,还可以调用此方法来设置停靠状态。

CPane::SetExclusiveRowMode

启用或禁用独占行模式。

virtual void SetExclusiveRowMode(BOOL bExclusive = TRUE);

参数

bExclusive
[in] 若要启用独占行模式,则为 TRUE;否则为 FALSE。

注解

调用此方法可启用或禁用独占行模式。 窗格处于独占行模式时,无法与其他任何工具栏共享同一行。

默认情况下,所有工具栏已禁用独占行模式,而菜单栏已启用独占行模式。

CPane::SetMinSize

设置窗格的最小允许大小。

void SetMinSize(const CSize& size);

参数

size
[in] 一个包含窗格的最小允许大小的 CSize 对象。

注解

CPane::SetVirtualRect

设置窗格的虚拟矩形

void SetVirtualRect(
    const CRect& rect,
    BOOL bMapToParent = TRUE);

参数

rect
[in] 一个指定要设置的虚拟矩形的 CRect 对象。

bMapToParent
[in] 如果 rect 包含相对于父窗口的点,则指定 TRUE

备注

虚拟矩形在移动窗格时存储窗格的原始位置。 框架可以使用虚拟矩形还原原始位置。

请勿调用与虚拟矩形相关的方法,除非以编程方式移动窗格。

CPane::SetMiniFrameRTC

设置默认微型框窗口的运行时类信息。

void SetMiniFrameRTC(CRuntimeClass* pClass);

参数

pClass
[in, out] 指定微型框窗口的运行时类信息。

注解

在窗格浮动时,它将放在 CPaneFrameWnd(微型框)窗口中。 可以提供在调用 CPane::CreateDefaultMiniframe 时将使用的自定义 CPaneFrameWnd 派生类。

CPane::StretchPaneDeferWndPos

根据停靠样式垂直或水平拉伸窗格。

virtual int StretchPaneDeferWndPos(
    int nStretchSize,
    HDWP& hdwp);

参数

nStretchSize
[in] 要拉伸窗格的量(以像素为单位)。 使用负值收缩窗格。

hdwp
[in] 未使用。

返回值

窗格拉伸的实际量(以像素为单位)。

注解

如有必要,此方法会修改 nStretchSize 以确保窗格不超过大小限制。 这些限制是通过调用 CPane::GetAvailableStretchSizeCPane::GetAvailableExpandSize 获得的。

CPane::ToggleAutoHide

切换自动隐藏模式。

virtual void ToggleAutoHide();

备注

调用此方法可切换自动隐藏模式。 窗格必须停靠在主框架窗口中才能切换到自动隐藏模式。

CPane::UndockPane

从当前停靠的停靠站点、默认滑块或微型框窗口中移除窗格。

virtual void UndockPane(BOOL bDelay = FALSE);

参数

bDelay
[in] 如果为 FALSE,则框架调用 CBasePane::AdjustDockingLayout 以调整停靠布局。

注解

使用此方法可以编程方式取消停靠窗格。

CPane::UpdateVirtualRect

更新虚拟矩形。

void UpdateVirtualRect();
void UpdateVirtualRect(CPoint ptOffset);
void UpdateVirtualRect(CSize sizeNew);

参数

ptOffset
[in] 一个指定窗格移动的偏移量的 CPoint 对象。

sizeNew
[in] 一个指定窗格的新大小的 CSize 对象。

备注

第一个重载使用窗格的当前位置和大小设置虚拟矩形。

第二个重载按 ptOffset 指定的量移动虚拟矩形

第三个重载使用窗格的当前位置和 sizeNew 指定的大小来设置虚拟矩形

另请参阅

层次结构图

CBasePane 类