CDockablePane
类
实现一个窗格,该窗格可以停靠在停靠站点中,也可以包含在选项卡式窗格中。
语法
class CDockablePane : public CPane
成员
公共构造函数
名字 | 描述 |
---|---|
CDockablePane::CDockablePane |
构造和初始化 CDockablePane 对象。 |
公共方法
受保护的方法
名字 | 描述 |
---|---|
CDockablePane::CheckAutoHideCondition |
确定停靠窗格是否处于隐藏状态(在自动隐藏模式下)。 |
CDockablePane::CheckStopSlideCondition |
确定自动隐藏停靠窗格何时应停止滑动。 |
CDockablePane::DrawCaption |
绘制停靠窗格标题(控制手柄)。 |
CDockablePane::OnPressButtons |
当用户按下除 AFX_HTCLOSE 和 AFX_HTMAXBUTTON 按钮以外的标题按钮时调用。 |
CDockablePane::OnSlide |
框架调用以在显示或隐藏窗格时呈现自动隐藏幻灯片效果。 |
数据成员
名字 | 描述 |
---|---|
CDockablePane::m_bDisableAnimation |
指定是否禁用可停靠窗格的自动隐藏动画。 |
CDockablePane::m_bHideInAutoHideMode |
确定窗格处于自动隐藏模式时窗格的行为。 |
CDockablePane::m_nSlideSteps |
指定在自动隐藏模式下显示或隐藏窗格时的动画速度。 |
言论
CDockablePane
实现以下功能:
将窗格停靠到主框架窗口。
将窗格切换为自动隐藏模式。
将窗格附加到选项卡式窗口。
浮动小型帧窗口中的窗格。
将窗格停靠到另一个浮动在小型帧窗口中的窗格。
调整窗格的大小。
加载和保存停靠窗格的状态。
注意
状态信息将保存到 Windows 注册表。
创建包含或不带标题的窗格。 标题可以具有文本标签,并且可以填充渐变颜色。
在显示窗格内容时拖动窗格
显示拖动矩形时拖动窗格。
若要在应用程序中使用停靠窗格,请从 CDockablePane
类派生窗格类。 将派生对象嵌入主框架窗口对象或控制窗格实例的窗口对象中。 然后在主框架窗口中处理 WM_CREATE
消息时调用 CDockablePane::Create
方法或 CDockablePane::CreateEx
方法。 最后,通过调用 CBasePane::EnableDocking
、CBasePane::DockPane
或 CDockablePane::AttachToTabWnd
设置窗格对象。
自定义提示
以下提示适用于 CDockablePane
对象:
如果为两个非选项卡式、可停靠窗格调用
CDockablePane::AttachToTabWnd
,则指向选项卡式窗口的指针将在ppTabbedControlBar
参数中返回。 可以使用此参数继续将选项卡添加到选项卡式窗口。CDockablePane::AttachToTabWnd
创建的选项卡式窗格的类型由pTabControlBarAttachTo
参数中的CDockablePane
对象确定。 可以调用CDockablePane::SetTabbedPaneRTC
来设置CDockablePane
将创建的选项卡式窗格的类型。 默认类型由首次创建CDockablePane
时CDockablePane::Create
dwTabbedStyle
确定。 如果dwTabbedStyle
AFX_CBRS_OUTLOOK_TABS
默认类型为CMFCOutlookBar
类;如果dwTabbedStyle
AFX_CBRS_REGULAR_TABS
默认类型为CTabbedPane
类。如果要将一个可停靠窗格停靠到另一个窗格,请调用
CDockablePane::DockToWindow
方法。 在调用此方法之前,原始窗格必须停靠在某个位置。成员变量
CDockablePane::m_bHideInAutoHideMode
控制调用CDockablePane::ShowPane
时可停靠窗格在自动隐藏模式下的行为方式。 如果此成员变量设置为TRUE
,可停靠窗格及其自动隐藏按钮将被隐藏。 否则,它们将滑动和退出。可以通过将
CDockablePane::m_bDisableAnimation
成员变量设置为TRUE
来禁用自动隐藏动画。
例
以下示例演示如何使用 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);
继承层次结构
要求
标头: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
。
言论
使用此方法将一个可停靠窗格附加到另一个窗格时,将发生以下情况:
框架检查目标窗格
pTabControlBarAttachTo
是常规停靠窗格,还是从CBaseTabbedPane
派生。如果目标窗格是选项卡式窗格,框架会将当前窗格作为选项卡添加到其中。
如果目标窗格是常规停靠窗格,框架将创建选项卡式窗格。
框架调用
pTabControlBarAttachTo->CreateTabbedPane
。 新选项卡式窗格的样式取决于m_pTabbedControlBarRTC
成员。 默认情况下,此成员设置为CTabbedPane
的运行时类。 如果将AFX_CBRS_OUTLOOK_TABS
样式作为dwTabbedStyle
参数传递给CDockablePane::Create
方法,则运行时类对象将设置为CMFCOutlookBar
的运行时类。 可以随时更改此成员以更改新窗格的样式。当此方法创建选项卡式窗格时,框架会将指向
pTabControlBarAttachTo
的指针(如果窗格停靠或浮动在多小型帧窗口中)替换为指向新选项卡式窗格的指针。框架将
pTabControlBarAttachTo
窗格作为第一个选项卡添加到选项卡式窗格中。然后,框架将当前窗格添加为第二个选项卡。
如果当前窗格派生自
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::Create
或 CDockablePane::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_LEFT
或 CBRS_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_LEFT
、CBRS_ALIGN_TOP
、CBRS_ALIGN_RIGHT
、CBRS_ALIGN_BOTTOM
或 CBRS_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_MOVE
或 AFX_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_DOCK
和 CS_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::GetTabArea
和 CMFCOutlookBar::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_HTCLOSE
和 AFX_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::Create
和 CDockablePane::CreateEx
的 dwTabbedStyle
参数设置。 若要自定义新的选项卡式窗格,请从以下类之一派生类:
然后,使用指向其运行时类信息的指针调用此方法。
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
未执行的任何外部操作之前,必须先取消停靠窗格。 例如,必须取消停靠窗格,以编程方式将其从一个位置移动到另一个位置。
框架会在销毁窗格之前自动取消停靠窗格。