CDockablePane

实现一个窗格,该窗格可以停靠在停靠站点中,也可以包含在选项卡式窗格中。

语法

class CDockablePane : public CPane

成员

公共构造函数

名字 描述
CDockablePane::CDockablePane 构造和初始化 CDockablePane 对象。

公共方法

名字 描述
CDockablePane::AttachToTabWnd 将窗格附加到另一个窗格。 这会创建选项卡式窗格。
CDockablePane::CalcFixedLayout 返回窗格矩形的大小。
CDockablePane::CanAcceptMiniFrame 确定指定的迷你帧是否可以停靠到窗格。
CDockablePane::CanAcceptPane 确定是否可以将另一个窗格停靠到当前窗格。
CDockablePane::CanAutoHide 确定窗格是否支持自动隐藏模式。 (替代 CBasePane::CanAutoHide.)
CDockablePane::CanBeAttached 确定当前窗格是否可以停靠到另一个窗格。
CDockablePane::ConvertToTabbedDocument 将一个或多个可停靠窗格转换为 MDI 选项卡式文档。
CDockablePane::CopyState 复制可停靠窗格的状态。
CDockablePane::Create 创建 Windows 控件并将其附加到 CDockablePane 对象。
CDockablePane::CreateDefaultPaneDivider 为窗格创建默认分隔符,因为它停靠在框架窗口。
CDockablePane::CreateEx 创建 Windows 控件并将其附加到 CDockablePane 对象。
CDockablePane::CreateTabbedPane 从当前窗格创建选项卡式窗格。
CDockablePane::DockPaneContainer 将容器停靠到窗格。
CDockablePane::DockPaneStandard 使用大纲(标准)停靠来停靠窗格。
CDockablePane::DockToFrameWindow 在内部使用。 若要停靠窗格,请使用 CPane::DockPaneCDockablePane::DockToWindow
CDockablePane::DockToRecentPos 将窗格停靠到其存储的最近停靠位置。
CDockablePane::DockToWindow 将一个停靠窗格停靠到另一个停靠窗格。
CDockablePane::EnableAutohideAll 启用或禁用此窗格的自动隐藏模式以及容器中的其他窗格。
CDockablePane::EnableGripper 显示或隐藏标题(控制手柄)。
CDockablePane::GetAHRestoredRect 指定在自动隐藏模式下可见时窗格的位置。
CDockablePane::GetAHSlideMode 检索窗格的自动隐藏幻灯片模式。
CDockablePane::GetAutoHideButton 在内部使用。
CDockablePane::GetAutoHideToolBar 在内部使用。
CDockablePane::GetCaptionHeight 返回当前标题的高度。
CDockablePane::GetDefaultPaneDivider 返回窗格容器的默认窗格分隔符。
CDockablePane::GetDockingStatus 确定基于提供的指针位置停靠窗格的功能。
CDockablePane::GetDragSensitivity 返回停靠窗格的拖动敏感度。
CDockablePane::GetLastPercentInPaneContainer 检索窗格在其容器中占用的空间百分比。
CDockablePane::GetTabArea 检索窗格的选项卡区域。
CDockablePane::GetTabbedPaneRTC 返回当另一个窗格停靠到当前窗格时创建的选项卡式窗口的运行时类信息。
CDockablePane::HasAutoHideMode 指定是否可以将停靠窗格切换到自动隐藏模式。
CDockablePane::HitTest 指定用户单击鼠标的窗格中的特定位置。
CDockablePane::IsAccessibilityCompatible 在内部使用。
CDockablePane::IsAutohideAllEnabled 指示是否可以将停靠窗格和容器中的所有其他窗格置于自动隐藏模式下。
CDockablePane::IsAutoHideMode 确定窗格是否处于自动隐藏模式。
CDockablePane::IsChangeState 在内部使用。
CDockablePane::IsDocked 确定当前窗格是否已停靠。
CDockablePane::IsHideInAutoHideMode 通过调用 ShowPane来确定处于自动隐藏模式的窗格的行为(或隐藏)。
CDockablePane::IsInFloatingMultiPaneFrameWnd 指定窗格是否位于多窗格框架窗口中。
CDockablePane::IsResizable 指定窗格是否可调整大小。
CDockablePane::IsTabLocationBottom 指定选项卡位于窗格的顶部还是底部。
CDockablePane::IsTracked 指定用户是否正在拖动窗格。
CDockablePane::IsVisible 确定当前窗格是否可见。
CDockablePane::LoadState 在内部使用。
CDockablePane::OnAfterChangeParent 当窗格的父级发生更改时,由框架调用。 (替代 CPane::OnAfterChangeParent.)
CDockablePane::OnAfterDockFromMiniFrame 当浮动停靠栏停靠在框架窗口时由框架调用。
CDockablePane::OnBeforeChangeParent 当窗格的父级即将更改时,由框架调用。 (替代 CPane::OnBeforeChangeParent.)
CDockablePane::OnBeforeFloat 当窗格即将浮动时,由框架调用。 (替代 CPane::OnBeforeFloat.)
CDockablePane::RemoveFromDefaultPaneDividier 框架在取消停靠窗格时调用此方法。
CDockablePane::ReplacePane 将窗格替换为指定的窗格。
CDockablePane::RestoreDefaultPaneDivider 框架将调用此方法作为窗格进行反序列化以还原默认窗格分隔符。
CDockablePane::SaveState 在内部使用。
CDockablePane::Serialize 序列化窗格。 (替代 CBasePane::Serialize.)
CDockablePane::SetAutoHideMode 在可见模式和自动隐藏模式之间切换停靠窗格。
CDockablePane::SetAutoHideParents 设置窗格的自动隐藏按钮和自动隐藏工具栏。
CDockablePane::SetDefaultPaneDivider 在内部使用。
CDockablePane::SetLastPercentInPaneContainer 设置窗格在其容器中占用的空间百分比。
CDockablePane::SetResizeMode 在内部使用。
CDockablePane::SetRestoredDefaultPaneDivider 设置还原的默认窗格分隔符。
CDockablePane::SetTabbedPaneRTC 设置两个窗格一起停靠时创建的选项卡式窗口的运行时类信息。
CDockablePane::ShowPane 显示或隐藏窗格。
CDockablePane::Slide 显示或隐藏具有滑动动画的窗格,仅当窗格处于自动隐藏模式时显示。
CDockablePane::ToggleAutoHide 切换自动隐藏模式。 (替代 CPane::ToggleAutoHide.)
CDockablePane::UndockPane 从主框架窗口或小型帧窗口容器中取消停靠窗格。
CDockablePane::UnSetAutoHideMode 在内部使用。 若要设置自动隐藏模式,请使用 CDockablePane::SetAutoHideMode

受保护的方法

名字 描述
CDockablePane::CheckAutoHideCondition 确定停靠窗格是否处于隐藏状态(在自动隐藏模式下)。
CDockablePane::CheckStopSlideCondition 确定自动隐藏停靠窗格何时应停止滑动。
CDockablePane::DrawCaption 绘制停靠窗格标题(控制手柄)。
CDockablePane::OnPressButtons 当用户按下除 AFX_HTCLOSEAFX_HTMAXBUTTON 按钮以外的标题按钮时调用。
CDockablePane::OnSlide 框架调用以在显示或隐藏窗格时呈现自动隐藏幻灯片效果。

数据成员

名字 描述
CDockablePane::m_bDisableAnimation 指定是否禁用可停靠窗格的自动隐藏动画。
CDockablePane::m_bHideInAutoHideMode 确定窗格处于自动隐藏模式时窗格的行为。
CDockablePane::m_nSlideSteps 指定在自动隐藏模式下显示或隐藏窗格时的动画速度。

言论

CDockablePane 实现以下功能:

  • 将窗格停靠到主框架窗口。

  • 将窗格切换为自动隐藏模式。

  • 将窗格附加到选项卡式窗口。

  • 浮动小型帧窗口中的窗格。

  • 将窗格停靠到另一个浮动在小型帧窗口中的窗格。

  • 调整窗格的大小。

  • 加载和保存停靠窗格的状态。

    注意

    状态信息将保存到 Windows 注册表。

  • 创建包含或不带标题的窗格。 标题可以具有文本标签,并且可以填充渐变颜色。

  • 在显示窗格内容时拖动窗格

  • 显示拖动矩形时拖动窗格。

若要在应用程序中使用停靠窗格,请从 CDockablePane 类派生窗格类。 将派生对象嵌入主框架窗口对象或控制窗格实例的窗口对象中。 然后在主框架窗口中处理 WM_CREATE 消息时调用 CDockablePane::Create 方法或 CDockablePane::CreateEx 方法。 最后,通过调用 CBasePane::EnableDockingCBasePane::DockPaneCDockablePane::AttachToTabWnd设置窗格对象。

自定义提示

以下提示适用于 CDockablePane 对象:

以下示例演示如何使用 CDockablePane 类中的各种方法配置 CDockablePane 对象。 该示例演示了如何为可停靠窗格启用自动隐藏所有功能、启用标题或手柄、启用自动隐藏模式、显示窗格以及对处于自动隐藏模式的窗格进行动画处理。 此代码片段是 Visual Studio 演示示例的一部分。

// GetOwner is an inherited method.
CDockablePane *pParentBar = DYNAMIC_DOWNCAST(CDockablePane, GetOwner());
pParentBar->EnableAutohideAll();
pParentBar->EnableGripper(true);
pParentBar->SetAutoHideMode(true, CBRS_ALIGN_LEFT);
pParentBar->ShowPane(true, false, true);
pParentBar->Slide(true);

继承层次结构

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

要求

标头:afxDockablePane.h

CDockablePane::AttachToTabWnd

将当前窗格附加到目标窗格,创建选项卡式窗格。

virtual CDockablePane* AttachToTabWnd(
    CDockablePane* pTabControlBarAttachTo,
    AFX_DOCK_METHOD dockMethod,
    BOOL bSetActive= TRUE,
    CDockablePane** ppTabbedControlBar = NULL);

参数

pTabControlBarAttachTo
[in, out]指定当前窗格附加到的目标窗格。 目标窗格必须是可停靠窗格。

dockMethod
[in]指定停靠方法。

bSetActive
[in] TRUE 附加操作后激活选项卡式窗格;否则,FALSE

ppTabbedControlBar
[out]包含附加操作产生的选项卡式窗格。

返回值

指向当前窗格的指针(如果不是选项卡式窗格);否则,指向附加操作产生的选项卡式窗格的指针。 如果当前窗格无法附加,或者发生错误,则返回值 NULL

言论

使用此方法将一个可停靠窗格附加到另一个窗格时,将发生以下情况:

  1. 框架检查目标窗格 pTabControlBarAttachTo 是常规停靠窗格,还是从 CBaseTabbedPane派生。

  2. 如果目标窗格是选项卡式窗格,框架会将当前窗格作为选项卡添加到其中。

  3. 如果目标窗格是常规停靠窗格,框架将创建选项卡式窗格。

    • 框架调用 pTabControlBarAttachTo->CreateTabbedPane。 新选项卡式窗格的样式取决于 m_pTabbedControlBarRTC 成员。 默认情况下,此成员设置为 CTabbedPane的运行时类。 如果将 AFX_CBRS_OUTLOOK_TABS 样式作为 dwTabbedStyle 参数传递给 CDockablePane::Create 方法,则运行时类对象将设置为 CMFCOutlookBar的运行时类。 可以随时更改此成员以更改新窗格的样式。

    • 当此方法创建选项卡式窗格时,框架会将指向 pTabControlBarAttachTo 的指针(如果窗格停靠或浮动在多小型帧窗口中)替换为指向新选项卡式窗格的指针。

    • 框架将 pTabControlBarAttachTo 窗格作为第一个选项卡添加到选项卡式窗格中。然后,框架将当前窗格添加为第二个选项卡。

  4. 如果当前窗格派生自 CBaseTabbedPane,则其所有选项卡将移动到 pTabControlBarAttachTo,并销毁当前窗格。 因此,在调用此方法时要小心,因为指向当前窗格的指针在方法返回时可能无效。

如果在生成停靠布局时将一个窗格附加到另一个窗格,请将 dockMethod 设置为 DM_SHOW

应先停靠第一个窗格,然后再将另一个窗格附加到该窗格。

CDockablePane::CalcFixedLayout

返回窗格矩形的大小。

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

参数

bStretch
[in]未使用。

bHorz
[in]未使用。

返回值

包含窗格矩形大小的 CSize 对象。

CDockablePane::CanAcceptMiniFrame

确定指定的微型帧是否可以停靠到窗格。

virtual BOOL CanAcceptMiniFrame(CPaneFrameWnd* pMiniFrame) const;

参数

pMiniFrame
[in]指向 CPaneFrameWnd 对象的指针。

返回值

如果 pMiniFrame 可停靠到窗格,则 TRUE;否则,FALSE

CDockablePane::CanAcceptPane

确定是否可以将另一个窗格停靠到当前窗格。

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

参数

pBar
[in]指定要停靠到当前窗格的窗格。

返回值

如果指定的窗格可以停靠到此窗格,则 TRUE;否则,FALSE

言论

框架在将窗格停靠到当前窗格之前调用此方法。

重写派生类中的此函数,以启用或禁用对特定窗格的停靠。

默认情况下,如果 pBar 或其父类型为 CDockablePane,此方法将返回 TRUE

CDockablePane::CanAutoHide

确定窗格是否可以自动隐藏。

virtual BOOL CanAutoHide() const;

返回值

如果窗格可以自动隐藏,则 TRUE;否则,FALSE

言论

在以下任何情况下,CDockablePane::CanAutoHide 返回 FALSE

  • 窗格没有父级。

  • 停靠管理器不允许窗格自动隐藏。

  • 窗格未停靠。

CDockablePane::CanBeAttached

确定当前窗格是否可以停靠到另一个窗格。

virtual BOOL CanBeAttached() const;

返回值

如果可停靠窗格可以停靠到另一个窗格或主框架窗口,则 TRUE;否则,FALSE

言论

默认情况下,此方法始终返回 TRUE。 在派生类中重写此方法,以便在不调用 CBasePane::EnableDocking的情况下启用或禁用停靠。

CDockablePane::CDockablePane

构造和初始化 CDockablePane 对象。

CDockablePane();

言论

构造可停靠窗格对象后,调用 CDockablePane::CreateCDockablePane::CreateEx 来创建它。

CDockablePane::ConvertToTabbedDocument

将一个或多个可停靠窗格转换为 MDI 选项卡式文档。

virtual void ConvertToTabbedDocument(BOOL bActiveTabOnly = TRUE);

参数

bActiveTabOnly
[in]转换 CTabbedPane时,请指定 TRUE 以仅转换活动选项卡。指定 FALSE 转换窗格中的所有选项卡。

CDockablePane::CheckAutoHideCondition

确定停靠窗格是否隐藏(也称为自动隐藏模式)。

virtual BOOL CheckAutoHideCondition();

返回值

如果满足隐藏条件,TRUE;否则,FALSE

言论

框架使用计时器定期检查是否隐藏自动隐藏可停靠窗格。 当窗格未处于活动状态、窗格未调整大小且鼠标指针不在窗格上方时,该方法将返回 TRUE

如果满足上述所有条件,框架将调用 CDockablePane::Slide 隐藏窗格。

CDockablePane::CheckStopSlideCondition

确定自动隐藏停靠窗格何时应停止滑动。

virtual BOOL CheckStopSlideCondition(BOOL bDirection);

参数

bDirection
[in] 如果窗格可见,TRUE;如果窗格处于隐藏状态,则 FALSE

返回值

如果满足停止条件,TRUE;否则,FALSE

言论

当可停靠窗格设置为自动隐藏模式时,框架使用滑动效果显示或隐藏窗格。 当窗格滑动时,框架将调用此函数。 当窗格完全可见或完全隐藏时,CheckStopSlideCondition 返回 TRUE

重写派生类中的此方法以实现自定义自动隐藏效果。

CDockablePane::CopyState

复制可停靠窗格的状态。

virtual void CopyState(CDockablePane* pOrgBar);

参数

pOrgBar
[in]指向可停靠窗格的指针。

言论

CDockablePane::CopyState 通过调用以下方法将 pOrgBar 状态复制到当前窗格:

CDockablePane::Create

创建 Windows 控件并将其附加到 CDockablePane 对象。

virtual BOOL Create(
    LPCTSTR lpszCaption,
    CWnd* pParentWnd,
    const RECT& rect,
    BOOL bHasGripper,
    UINT nID,
    DWORD dwStyle,
    DWORD dwTabbedStyle = AFX_CBRS_REGULAR_TABS,
    DWORD dwControlBarStyle = AFX_DEFAULT_DOCKING_PANE_STYLE,
    CCreateContext* pContext = NULL);

virtual BOOL Create(
    LPCTSTR lpszWindowName,
    CWnd* pParentWnd,
    CSize sizeDefault,
    BOOL bHasGripper,
    UINT nID,
    DWORD dwStyle = WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_HIDE_INPLACE,
    DWORD dwTabbedStyle = AFX_CBRS_REGULAR_TABS,
    DWORD dwControlBarStyle = AFX_DEFAULT_DOCKING_PANE_STYLE);

参数

lpszCaption
[in]指定窗口名称。

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

rect
[in]指定窗口的大小和位置,以 pParentWnd的客户端坐标表示。

bHasGripper
[in] TRUE 使用标题创建窗格;否则,FALSE

nID
[in]指定子窗口的 ID。 如果要保存此停靠窗格的停靠状态,此值必须是唯一的。

dwStyle
[in]指定窗口样式属性。

dwTabbedStyle
[in]指定当用户在此窗格标题上拖动窗格时创建的选项卡式窗口的制表样式。

dwControlBarStyle
[in]指定其他样式属性。

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

lpszWindowName
[in]指定窗口名称。

sizeDefault
[in]指定窗口的大小。

返回值

如果成功创建可停靠窗格,TRUE;否则,FALSE

言论

创建 Windows 窗格并将其附加到 CDockablePane 对象。

如果 dwStyle 窗口样式具有 CBRS_FLOAT_MULTI 标志,则小型帧窗口可以随小型帧窗口中的其他窗格一起浮动。 默认情况下,停靠窗格只能单独浮动。

如果 dwTabbedStyle 参数指定了 AFX_CBRS_OUTLOOK_TABS 标志,则当使用 CDockablePane::AttachToTabWnd 方法将另一个窗格附加到此窗格时,窗格将创建 Outlook 样式的选项卡式窗格。 默认情况下,可停靠窗格创建 CTabbedPane类型的常规选项卡式窗格。

CDockablePane::CreateDefaultPaneDivider

为窗格创建默认分隔符,因为它停靠在框架窗口。

static CPaneDivider* __stdcall CreateDefaultPaneDivider(
    DWORD dwAlignment,
    CWnd* pParent,
    CRuntimeClass* pSliderRTC = NULL);

参数

dwAlignment
[in]指定窗格停靠到的主框架的一侧。 如果 dwAlignment 包含 CBRS_ALIGN_LEFTCBRS_ALIGN_RIGHT 标志,此方法将创建一个垂直(CPaneDivider::SS_VERT)分隔线;否则,此方法将创建一个水平分隔线(CPaneDivider::SS_HORZ)。

pParent
[in]指向父帧的指针。

pSliderRTC
[in]未使用。

返回值

此方法返回指向新创建的分隔线的指针;如果分隔符创建失败,则返回 NULL

言论

dwAlignment 可以是以下任一值:

价值 描述
CBRS_ALIGN_TOP 窗格停靠在框架窗口的工作区顶部。
CBRS_ALIGN_BOTTOM 窗格停靠在框架窗口的工作区底部。
CBRS_ALIGN_LEFT 窗格停靠在框架窗口的工作区左侧。
CBRS_ALIGN_RIGHT 窗格停靠在框架窗口的工作区右侧。

CDockablePane::CreateEx

创建 Windows 控件并将其附加到 CDockablePane 对象。

virtual BOOL CreateEx(
    DWORD dwStyleEx,
    LPCTSTR lpszCaption,
    CWnd* pParentWnd,
    const RECT& rect,
    BOOL bHasGripper,
    UINT nID,
    DWORD dwStyle,
    DWORD dwTabbedStyle = AFX_CBRS_REGULAR_TABS,
    DWORD dwControlBarStyle = AFX_DEFAULT_DOCKING_PANE_STYLE,
    CCreateContext* pContext = NULL);

参数

dwStyleEx
[in]指定新窗口的扩展样式属性。

lpszCaption
[in]指定窗口名称。

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

rect
[in]指定窗口的大小和位置,以 pParentWnd的客户端坐标表示。

bHasGripper
[in] TRUE 使用标题创建窗格;否则,FALSE

nID
[in]指定子窗口的 ID。 如果要保存此停靠窗格的停靠状态,此值必须是唯一的。

dwStyle
[in]指定窗口样式属性。

dwTabbedStyle
[in]指定当用户在此窗格标题上拖动窗格时创建的选项卡式窗口的制表样式。

dwControlBarStyle
[in]指定其他样式属性。

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

返回值

如果成功创建可停靠窗格,TRUE;否则,FALSE

言论

创建 Windows 窗格并将其附加到 CDockablePane 对象。

如果 dwStyle 窗口样式具有 CBRS_FLOAT_MULTI 标志,则小型帧窗口可以随小型帧窗口中的其他窗格一起浮动。 默认情况下,停靠窗格只能单独浮动。

如果 dwTabbedStyle 参数指定了 AFX_CBRS_OUTLOOK_TABS 标志,则当使用 CDockablePane::AttachToTabWnd 方法将另一个窗格附加到此窗格时,窗格将创建 Outlook 样式的选项卡式窗格。 默认情况下,可停靠窗格创建 CTabbedPane类型的常规选项卡式窗格。

CDockablePane::CreateTabbedPane

从当前窗格创建选项卡式窗格。

virtual CTabbedPane* CreateTabbedPane();

返回值

新的选项卡式窗格;如果创建操作失败,则 NULL

言论

框架在创建选项卡式窗格以替换此窗格时调用此方法。 有关详细信息,请参阅 CDockablePane::AttachToTabWnd

重写派生类中的此方法,以自定义如何创建和初始化选项卡式窗格。

选项卡式窗格是根据存储在 m_pTabbedControlBarRTC 成员中的运行时类信息创建的,该信息由 CDockablePane::CreateEx 方法初始化。

CDockablePane::DockPaneContainer

将容器停靠到窗格。

virtual BOOL DockPaneContainer(
    CPaneContainerManager& barContainerManager,
    DWORD dwAlignment,
    AFX_DOCK_METHOD dockMethod);

参数

barContainerManager
[in]对停靠容器的容器管理器的引用。

dwAlignment
[in] DWORD,指定容器停靠到的窗格的一侧。

dockMethod
[in]未使用。

返回值

如果容器已成功停靠到窗格,则 TRUE;否则,FALSE

言论

dwAlignment 可以是以下任一值:

价值 描述
CBRS_ALIGN_TOP 容器停靠在窗格顶部。
CBRS_ALIGN_BOTTOM 容器停靠在窗格底部。
CBRS_ALIGN_LEFT 容器停靠在窗格左侧。
CBRS_ALIGN_RIGHT 容器停靠在窗格右侧。

CDockablePane::DockPaneStandard

使用大纲(标准)停靠来停靠窗格。

virtual CPane* DockPaneStandard(BOOL& bWasDocked);

参数

bWasDocked
[in]方法返回时,如果窗格已成功停靠,则此值包含 TRUE;否则,它包含 FALSE

返回值

如果窗格停靠到选项卡式窗口,或者由于停靠而创建了选项卡式窗口,则此方法将返回指向选项卡式窗口的指针。 如果窗格已成功停靠,此方法将返回 this 指针。 如果停靠失败,此方法将返回 NULL

CDockablePane::DockToRecentPos

将窗格停靠到其存储的停靠位置。

BOOL CDockablePane::DockToRecentPos();

返回值

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

言论

可停靠窗格将最近的停靠信息存储在 CRecentDockSiteInfo 对象中。

CDockablePane::DockToWindow

将一个停靠窗格停靠到另一个停靠窗格。

virtual BOOL DockToWindow(
    CDockablePane* pTargetWindow,
    DWORD dwAlignment,
    LPCRECT lpRect = NULL);

参数

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

dwAlignment
[in]指定窗格的停靠对齐方式。 可以是 CBRS_ALIGN_LEFTCBRS_ALIGN_TOPCBRS_ALIGN_RIGHTCBRS_ALIGN_BOTTOMCBRS_ALIGN_ANY之一。 (afxres.h中定义)

lpRect
[in]指定窗格的停靠矩形。

返回值

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

言论

调用此方法,将一个窗格停靠到另一个窗格,其对齐方式由 dwAlignment指定。

CDockablePane::DrawCaption

绘制停靠窗格的标题(也称为控制手柄)。

virtual void DrawCaption(
    CDC* pDC,
    CRect rectCaption);

参数

pDC
[in]表示用于绘图的设备上下文。

rectCaption
[in]指定窗格标题的边界矩形。

言论

框架调用此方法来绘制可停靠窗格的标题。

重写派生类中的此方法以自定义标题的外观。

CDockablePane::EnableAutohideAll

启用或禁用此窗格和容器中的其他窗格的自动隐藏模式。

void EnableAutohideAll(BOOL bEnable = TRUE);

参数

bEnable
[in] TRUE 为可停靠窗格启用自动隐藏所有功能;否则,FALSE

言论

当用户按住 Ctrl 键并单击固定按钮以将窗格切换为自动隐藏模式时,同一容器中的所有其他窗格也会切换到自动隐藏模式。

调用此方法,将 bEnable 设置为 FALSE 以禁用特定窗格的此功能。

CDockablePane::EnableGripper

显示或隐藏标题(也称为控制手柄)。

virtual void EnableGripper(BOOL bEnable);

参数

bEnable
[in] TRUE 启用标题;否则,FALSE

言论

框架创建可停靠窗格时,即使已指定,它们也没有 WS_STYLE 窗口样式。 这意味着窗格的标题是框架控制的非工作区,但该区域不同于标准窗口标题。

可以随时显示或隐藏标题。 当将窗格作为选项卡添加到选项卡窗口或在小型帧窗口中浮动窗格时,框架将隐藏标题。

CDockablePane::GetAHRestoredRect

指定处于自动隐藏模式时窗格的位置。

CRect GetAHRestoredRect() const;

返回值

一个 CRect 对象,该对象包含窗格处于自动隐藏模式时的位置。

言论

CDockablePane::GetAHSlideMode

检索窗格的自动隐藏幻灯片模式。

virtual UINT GetAHSlideMode() const;

返回值

指定窗格的自动隐藏幻灯片模式的 UINT。 返回值可以是 AFX_AHSM_MOVEAFX_AHSM_STRETCH,但实现仅使用 AFX_AHSM_MOVE

言论

CDockablePane::GetCaptionHeight

返回当前标题的高度(以像素为单位)。

virtual int GetCaptionHeight() const;

返回值

标题的高度(以像素为单位)。

言论

如果标题由 CDockablePane::EnableGripper 方法隐藏,或者窗格没有标题,则标题高度为 0。

CDockablePane::GetDefaultPaneDivider

返回窗格容器的默认窗格分隔符。

CPaneDivider* GetDefaultPaneDivider() const;

返回值

如果可停靠窗格停靠到主框架窗口,则为有效的 CPaneDivider 对象;如果停靠窗格未停靠或浮动,则 NULL

言论

有关窗格分隔符的详细信息,请参阅 CPaneDivider

CDockablePane::GetDockingStatus

确定基于提供的指针位置停靠窗格的功能。

virtual AFX_CS_STATUS GetDockingStatus(
    CPoint pt,
    int nSensitivity);

参数

pt
[in]指针在屏幕坐标中的位置。

nSensitivity
[in]距离矩形边缘的距离(以像素为单位),指针必须启用停靠。

返回值

以下状态值之一:

AFX_CS_STATUS 意义
CS_NOTHING 指针不在停靠站点上。 框架不会停靠窗格。
CS_DOCK_IMMEDIATELY 指针位于停靠站点上(窗格使用 DT_IMMEDIATE 停靠模式)。 框架会立即停靠窗格。
CS_DELAY_DOCK 指针位于停靠站点上,该站点是另一个停靠窗格或主框架的边缘。 框架在延迟后停靠窗格。 有关此延迟的详细信息,请参阅“备注”部分。
CS_DELAY_DOCK_TO_TAB 指针位于停靠站点上,该站点导致窗格停靠在选项卡式窗口中。 当指针位于另一个停靠窗格的标题或选项卡窗格的选项卡区域上时,将发生这种情况。

言论

框架调用此方法来处理浮动窗格的停靠。

对于使用 DT_IMMEDIATE 停靠模式的浮动工具栏或停靠窗格,框架会延迟停靠命令,使用户能够在停靠发生前将窗口移出父帧的工作区。 延迟的长度以毫秒为单位,并由 CDockingManager::m_nTimeOutBeforeToolBarDock 数据成员控制。 CDockingManager::m_nTimeOutBeforeToolBarDock 的默认值为 200。 此行为模拟 Microsoft Word 2007 的停靠行为。

对于延迟停靠状态(CS_DELAY_DOCKCS_DELAY_DOCK_TO_TAB),框架在用户释放鼠标按钮之前不会执行停靠。 如果窗格使用 DT_STANDARD 停靠模式,框架将在投影停靠位置显示一个矩形。 如果窗格使用 DT_SMART 停靠模式,框架将在投影停靠位置显示智能停靠标记和半透明矩形。 若要为窗格指定停靠模式,请调用 CBasePane::SetDockingMode 方法。 有关智能对接的详细信息,请参阅 CDockingManager::GetSmartDockingParams

CDockablePane::GetDragSensitivity

返回停靠窗格的拖动敏感度。

static const CSize& GetDragSensitivity();

返回值

一个 CSize 对象,该对象包含以拖动点为中心的矩形的宽度和高度(以像素为单位)。 拖动操作直到鼠标指针移动到此矩形之外,才开始。

CDockablePane::GetLastPercentInPaneContainer

检索窗格在其容器中占用的空间百分比(CPaneContainer)。

int GetLastPercentInPaneContainer() const;

返回值

一个 int,指定窗格在其容器中占用的空间百分比。

言论

当容器调整其布局时,将使用此方法。

CDockablePane::GetTabArea

检索窗格的选项卡区域。

virtual void GetTabArea(
    CRect& rectTabAreaTop,
    CRect& rectTabAreaBottom) const;

参数

rectTabAreaTop
[in] 如果选项卡位于窗格顶部,则 GetTabArea 用选项卡区域填充此变量。 如果选项卡位于窗格底部,则此变量将填充一个空矩形。

rectTabAreaBottom
[in] 如果选项卡位于窗格底部,则 GetTabArea 用选项卡区域填充此变量。 如果选项卡位于窗格顶部,则此变量将填充一个空矩形。

言论

此方法仅在派生自 CDockablePane 且具有选项卡的类中使用。 有关详细信息,请参阅 CTabbedPane::GetTabAreaCMFCOutlookBar::GetTabArea

CDockablePane::GetTabbedPaneRTC

返回当另一个窗格停靠到当前窗格时创建的选项卡式窗口的运行时类信息。

CRuntimeClass* GetTabbedPaneRTC() const;

返回值

可停靠窗格的运行时类信息。

言论

调用此方法可检索动态创建的选项卡式窗格的运行时类信息。 当用户将一个窗格拖到另一个窗格的标题时,或者调用 CDockablePane::AttachToTabWnd 方法以编程方式从两个可停靠窗格创建选项卡式窗格时,可能会发生这种情况。

可以通过调用 CDockablePane::SetTabbedPaneRTC 方法来设置运行时类信息。

CDockablePane::HasAutoHideMode

指定是否可以将停靠窗格切换到自动隐藏模式。

virtual BOOL HasAutoHideMode() const;

返回值

如果可停靠窗格可以切换到自动隐藏模式,TRUE;否则,FALSE

言论

在派生类中重写此方法以禁用特定可停靠窗格的自动隐藏模式。

CDockablePane::HitTest

指定用户单击鼠标的窗格中的位置。

virtual int HitTest(
    CPoint point,
    BOOL bDetectCaption = FALSE);

参数

point
[in]指定要测试的点。

bDetectCaption
[in] 如果点位于窗格标题上,则 TRUE 是否应返回 HTCAPTION;否则,FALSE

返回值

以下值之一:

  • 如果 point 不在可停靠窗格中,HTNOWHERE

  • 如果 point 位于可停靠窗格的工作区中,HTCLIENT

  • 如果 point 位于可停靠窗格的标题区域中,HTCAPTION

  • 如果 point 位于关闭按钮上,AFX_HTCLOSE

  • 如果 point 位于固定按钮上,HTMAXBUTTON

CDockablePane::IsAutohideAllEnabled

指示是否可以将容器中的停靠窗格和所有其他窗格切换到自动隐藏模式。

virtual BOOL IsAutohideAllEnabled() const;

返回值

如果可停靠窗格和容器中的所有其他窗格都可以切换到自动隐藏模式,则 TRUE;否则,FALSE

言论

用户通过在按住 ctrl 键的同时单击停靠引脚按钮来启用自动隐藏模式

若要启用或禁用此行为,请调用 CDockablePane::EnableAutohideAll 方法。

CDockablePane::IsAutoHideMode

确定窗格是否处于自动隐藏模式。

virtual BOOL IsAutoHideMode() const;

返回值

如果可停靠窗格处于自动隐藏模式,TRUE;否则,FALSE

CDockablePane::IsDocked

确定当前窗格是否已停靠。

virtual BOOL IsDocked() const;

返回值

如果可停靠窗格不属于小型帧窗口,或者它浮动在另一个窗格的小型帧窗口中,则 TRUE。 如果窗格是小型帧窗口的子级,并且没有属于小型帧窗口的其他窗格,则 FALSE

言论

若要确定窗格是否停靠到主框架窗口,请调用 CDockablePane::GetDefaultPaneDivider。 如果该方法返回非NULL 指针,则窗格停靠在主框架窗口中。

CDockablePane::IsHideInAutoHideMode

通过调用 CDockablePane::ShowPane确定处于自动隐藏模式的窗格的行为(或隐藏)。

virtual BOOL IsHideInAutoHideMode() const;

返回值

如果在自动隐藏模式下应隐藏可停靠窗格,TRUE;否则,FALSE

言论

当可停靠窗格处于自动隐藏模式时,调用 ShowPane 隐藏或显示窗格时,其行为方式不同。 此行为由静态成员 CDockablePane::m_bHideInAutoHideMode控制。 如果此成员 TRUE,则调用 ShowPane时,可停靠窗格及其相关的自动隐藏工具栏或自动隐藏按钮将隐藏或显示。 否则,可停靠窗格将激活或停用,并且其相关的自动隐藏工具栏或自动隐藏按钮始终可见。

重写派生类中的此方法以更改各个窗格的默认行为。

m_bHideInAutoHideMode 的默认值为 FALSE

CDockablePane::IsInFloatingMultiPaneFrameWnd

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

virtual BOOL IsInFloatingMultiPaneFrameWnd() const;

返回值

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

言论

CDockablePane::IsResizable

指定窗格是否可调整大小。

virtual BOOL IsResizable() const;

返回值

如果窗格可调整大小,则 TRUE;否则,FALSE

言论

默认情况下,可停靠窗格的大小可调整。 若要防止重设大小,请重写派生类中的此方法并返回 FALSE。 请注意,FALSE 值会导致 CPane::DockPane中失败的 ASSERT。 请改用 CDockingManager::AddPane 在父框架中停靠窗格。

无法调整大小的窗格既不能浮动,也不能进入自动隐藏模式,并且始终位于父帧的外部边缘。

CDockablePane::IsTabLocationBottom

指定选项卡位于窗格的顶部还是底部。

virtual BOOL IsTabLocationBottom() const;

返回值

如果选项卡位于窗格底部,则 TRUE;如果选项卡位于窗格顶部,则 FALSE

言论

有关详细信息,请参阅 CTabbedPane::IsTabLocationBottom

CDockablePane::IsTracked

指定用户是否移动窗格。

BOOL IsTracked() const;

返回值

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

CDockablePane::IsVisible

确定当前窗格是否可见。

virtual BOOL IsVisible() const;

返回值

如果可停靠窗格可见,TRUE;否则,FALSE

言论

调用此方法以确定可停靠窗格是否可见。 可以使用此方法,而不是调用 CWnd::IsWindowVisible 或测试 WS_VISIBLE 样式。 返回的可见性状态取决于是启用或禁用自动隐藏模式,还是取决于 CDockablePane::IsHideInAutoHideMode 属性的值。

如果可停靠窗格处于自动隐藏模式,IsHideInAutoHideMode 返回 FALSE 可见性状态始终 FALSE

如果可停靠窗格处于自动隐藏模式并且 IsHideInAutoHideMode 返回 TRUE 可见性状态取决于相关自动隐藏工具栏的可见性状态。

如果可停靠窗格不在自动隐藏模式下,则可见性状态由 CBasePane::IsVisible 方法确定。

## CDockablePane::LoadState

仅供内部使用。 有关详细信息,请参阅 Visual Studio 安装 mfc 文件夹中的源代码。 例如,%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc

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

CDockablePane::m_bDisableAnimation

指定是否禁用可停靠窗格的自动隐藏动画。

AFX_IMPORT_DATA static BOOL m_bDisableAnimation;

CDockablePane::m_bHideInAutoHideMode

确定窗格处于自动隐藏模式时窗格的行为。

AFX_IMPORT_DATA static BOOL m_bHideInAutoHideMode;

言论

此值会影响应用程序中的所有停靠窗格。

如果将此成员设置为 TRUE,则调用 CDockablePane::ShowPane时,可停靠窗格将隐藏或显示其相关的自动隐藏工具栏和按钮。

如果将此成员设置为 FALSE,则调用 CDockablePane::ShowPane时将激活或停用可停靠窗格。

CDockablePane::m_nSlideSteps

指定处于自动隐藏模式时窗格的动画速度。

AFX_IMPORT_DATA static int m_nSlideSteps;

言论

若要获得更快的动画效果,请降低此值。 对于较慢的动画效果,请增加此值。

CDockablePane::OnAfterChangeParent

有关详细信息,请参阅 Visual Studio 安装 mfc 文件夹中的源代码。 例如,%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc

virtual void OnAfterChangeParent(CWnd* pWndOldParent);

参数

[in] pWndOldParent\

言论

CDockablePane::OnAfterDockFromMiniFrame

当浮动停靠栏停靠在框架窗口时由框架调用。

virtual void OnAfterDockFromMiniFrame();

言论

默认情况下,此方法不执行任何操作。

CDockablePane::OnBeforeChangeParent

框架在更改窗格的父级之前调用此方法。

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

参数

pWndNewParent
[in]指向新父窗口的指针。

bDelay
[in]BOOL,指定在取消停靠窗格时是否延迟重新计算停靠布局。 有关详细信息,请参阅 CDockablePane::UndockPane

言论

如果窗格已停靠,并且新父级不允许停靠,此方法将取消停靠窗格。

如果窗格正在转换为选项卡式文档,此方法将存储其最近的停靠位置。 框架使用最近的停靠位置在将窗格转换为停靠状态时还原窗格的位置。

CDockablePane::OnBeforeFloat

框架在窗格转换为浮动状态之前调用此方法。

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

参数

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

dockMethod
[in]指定停靠方法。 有关可能值的列表,请参阅 CPane::DockPane

返回值

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

言论

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

CDockablePane::OnPressButtons

当用户按下除 AFX_HTCLOSEAFX_HTMAXBUTTON 按钮以外的标题按钮时调用。

virtual void OnPressButtons(UINT nHit);

参数

nHit
[in]不使用此参数。

言论

如果将自定义按钮添加到可停靠窗格的标题,请重写此方法,以在用户按下按钮时接收通知。

CDockablePane::OnSlide

由框架调用,以在处于自动隐藏模式时对窗格进行动画处理。

virtual void OnSlide(BOOL bSlideOut);

参数

bSlideOut
[in] TRUE 显示窗格;FALSE 隐藏窗格。

言论

重写派生类中的此方法以实现自定义自动隐藏效果。

CDockablePane::RemoveFromDefaultPaneDividier

框架在取消停靠窗格时调用此方法。

void RemoveFromDefaultPaneDividier();

言论

此方法将默认窗格分隔符设置为 NULL 并从其容器中删除窗格。

CDockablePane::ReplacePane

将窗格替换为指定的窗格。

BOOL ReplacePane(
    CDockablePane* pBarToReplaceWith,
    AFX_DOCK_METHOD dockMethod,
    BOOL bRegisterWithFrame = FALSE);

参数

pBarToReplaceWith
[in]指向可停靠窗格的指针。

dockMethod
[in]未使用。

bRegisterWithFrame
[in]如果 TRUE,新窗格将注册到旧窗格父级的停靠管理器。 新窗格将插入到停靠管理器维护的窗格列表中的旧窗格的索引处。

返回值

如果替换成功,TRUE;否则,FALSE

CDockablePane::RestoreDefaultPaneDivider

反序列化窗格时,框架将调用此方法来还原默认窗格分隔符。

void RestoreDefaultPaneDivider();

言论

还原的默认窗格分隔符替换当前默认窗格分隔符(如果存在)。

CDockablePane::SetAutoHideMode

在可见模式和自动隐藏模式之间切换停靠窗格。

virtual CMFCAutoHideBar* SetAutoHideMode(
    BOOL bMode,
    DWORD dwAlignment,
    CMFCAutoHideBar* pCurrAutoHideBar = NULL,
    BOOL bUseTimer = TRUE);

参数

bMode
[in] TRUE 启用自动隐藏模式;FALSE 启用常规停靠模式。

dwAlignment
[in]指定要创建的自动隐藏窗格的对齐方式。

pCurrAutoHideBar
[in, out]指向当前自动隐藏工具栏的指针。 可以 NULL

bUseTimer
[in]指定当用户将窗格切换到自动隐藏模式或立即隐藏窗格时,是使用自动隐藏效果。

返回值

由于切换到自动隐藏模式或 NULL而创建的自动隐藏工具栏。

言论

当用户单击固定按钮将可停靠窗格切换为自动隐藏模式或常规停靠模式时,框架将调用此方法。

调用此方法以编程方式将可停靠窗格切换到自动隐藏模式。 窗格必须停靠到主框架窗口(CDockablePane::GetDefaultPaneDivider 必须返回指向 CPaneDivider的有效指针)。

CDockablePane::SetAutoHideParents

设置窗格的自动隐藏按钮和自动隐藏工具栏。

void SetAutoHideParents(
    CMFCAutoHideBar* pToolBar,
    CMFCAutoHideButton* pBtn);

参数

pToolBar
[in]指向自动隐藏工具栏的指针。

pBtn
[in]指向自动隐藏按钮的指针。

CDockablePane::SetLastPercentInPaneContainer

设置窗格在其容器中占用的空间百分比。

void SetLastPercentInPaneContainer(int n);

参数

n
[in]一个 int,指定窗格在其容器中占用的空间百分比。

言论

框架调整窗格,以在重新计算布局时使用新值。

CDockablePane::SetRestoredDefaultPaneDivider

设置还原的默认窗格分隔符。

void SetRestoredDefaultPaneDivider(HWND hRestoredSlider);

参数

hRestoredSlider
[in]窗格分隔符(滑块)的句柄。

言论

反序列化窗格时,会获取还原的默认窗格分隔符。 有关详细信息,请参阅 CDockablePane::RestoreDefaultPaneDivider

CDockablePane::SetTabbedPaneRTC

设置两个窗格一起停靠时创建的选项卡式窗口的运行时类信息。

void SetTabbedPaneRTC(CRuntimeClass* pRTC);

参数

pRTC
[in]选项卡式窗格的运行时类信息。

言论

调用此方法可设置动态创建的选项卡式窗格的运行时类信息。 当用户将一个窗格拖到另一个窗格的标题时,或者调用 CDockablePane::AttachToTabWnd 方法以编程方式从两个可停靠窗格创建选项卡式窗格时,可能会发生这种情况。

默认运行时类根据 CDockablePane::CreateCDockablePane::CreateExdwTabbedStyle 参数设置。 若要自定义新的选项卡式窗格,请从以下类之一派生类:

然后,使用指向其运行时类信息的指针调用此方法。

CDockablePane::ShowPane

显示或隐藏窗格。

virtual void ShowPane(
    BOOL bShow,
    BOOL bDelay,
    BOOL bActivate);

参数

bShow
[in] TRUE 显示窗格;FALSE 隐藏窗格。

bDelay
[in] TRUE 延迟调整停靠布局;FALSE 立即调整停靠布局。

bActivate
[in] TRUE 显示时激活窗格;否则,FALSE

言论

显示或隐藏可停靠窗格时,调用此方法而不是 CWnd::ShowWindow

CDockablePane::Slide

对处于自动隐藏模式的窗格进行动画处理。

virtual void Slide(
    BOOL bSlideOut,
    BOOL bUseTimer = TRUE);

参数

bSlideOut
[in] TRUE 显示窗格;FALSE 隐藏窗格。

bUseTimer
[in] TRUE 显示或隐藏具有自动隐藏效果的窗格;FALSE 立即显示或隐藏窗格。

言论

框架调用此方法以对处于自动隐藏模式的窗格进行动画处理。

此方法使用 CDockablePane::m_nSlideDefaultTimeOut 值来确定幻灯片效果的超时。 超时的默认值为 1。 如果自定义自动隐藏算法,请修改此成员以更改超时。

CDockablePane::ToggleAutoHide

在始终可见和自动隐藏模式之间切换窗格。

virtual void ToggleAutoHide();

言论

此方法通过调用 CDockablePane::SetAutoHideMode切换窗格的自动隐藏模式。

CDockablePane::UndockPane

从主框架窗口或小型帧窗口容器中取消停靠窗格。

virtual void UndockPane(BOOL bDelay = FALSE);

参数

bDelay
[in] TRUE 延迟计算停靠布局;FALSE 立即重新计算停靠布局。

言论

调用此方法可从主框架窗口或多小型帧窗口容器中撤消窗格(包含其他窗格的单个小型帧窗口中浮动的窗格)。

在执行 CDockingManager未执行的任何外部操作之前,必须先取消停靠窗格。 例如,必须取消停靠窗格,以编程方式将其从一个位置移动到另一个位置。

框架会在销毁窗格之前自动取消停靠窗格。

另请参阅

层次结构图表

CPane