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
類別衍生您的窗格類別。 將衍生物件內嵌至主框架窗口物件,或內嵌至控制窗格實例的窗口物件。 然後在主框架視窗中處理 CDockablePane::Create
訊息時,呼叫 CDockablePane::CreateEx
方法或 WM_CREATE
方法。 最後,呼叫 CBasePane::EnableDocking
、CBasePane::DockPane
或 CDockablePane::AttachToTabWnd
來設定 pane 物件。
自訂秘訣
下列秘訣適用於 CDockablePane
物件:
如果您針對兩個非索引卷標式、可停駐窗格呼叫
CDockablePane::AttachToTabWnd
,則會在ppTabbedControlBar
參數中傳回索引卷標式視窗的指標。 您可以使用此參數,繼續將索引標籤新增至索引標籤視窗。CDockablePane::AttachToTabWnd
所建立的索引卷標式窗格類型是由CDockablePane
參數中的pTabControlBarAttachTo
物件所決定。 您可以呼叫CDockablePane::SetTabbedPaneRTC
,以設定CDockablePane
將建立的索引卷標式窗格種類。 當您第一次建立dwTabbedStyle
時,默認類型是由CDockablePane::Create
的CDockablePane
所決定。 如果dwTabbedStyle
AFX_CBRS_OUTLOOK_TABS
默認類型為CMFCOutlookBar
Class;如果dwTabbedStyle
AFX_CBRS_REGULAR_TABS
預設類型為CTabbedPane
Class。如果您想要將一個可停駐窗格停駐到另一個窗格,請呼叫
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
物件的指標。
傳回值
如果 TRUE
可以停駐到窗格,pMiniFrame
;否則,FALSE
。
CDockablePane::CanAcceptPane
判斷是否可以將另一個窗格停駐到目前的窗格。
virtual BOOL CanAcceptPane(const CBasePane* pBar) const;
參數
pBar
[in]指定要停駐至目前窗格的窗格。
傳回值
如果指定的窗格可以停駐到此窗格,TRUE
;否則,FALSE
。
言論
架構會在窗格停駐至目前窗格之前呼叫此方法。
覆寫衍生類別中的此函式,以啟用或停用特定窗格的停駐。
根據預設,如果 TRUE
或其父系的類型為 pBar
,則此方法會傳回 CDockablePane
。
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]指定子視窗的識別碼。 如果您想要儲存此停駐窗格的停駐狀態,此值必須是唯一的。
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]指定子視窗的識別碼。 如果您想要儲存此停駐窗格的停駐狀態,此值必須是唯一的。
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。 此行為會模擬 Word 2007 Microsoft停駐行為。
針對延遲的停駐狀態(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
Class)。
int GetLastPercentInPaneContainer() const;
傳回值
int
,指定窗格在其容器中佔用的空間百分比。
言論
當容器調整其配置時,會使用這個方法。
CDockablePane::GetTabArea
擷取窗格的索引標籤區域。
virtual void GetTabArea(
CRect& rectTabAreaTop,
CRect& rectTabAreaBottom) const;
參數
rectTabAreaTop
[in] GetTabArea
如果索引卷標位於窗格頂端,則以索引卷標區域填入此變數。 如果索引卷標位於窗格底部,此變數會填入空白矩形。
rectTabAreaBottom
[in] 如果索引標籤位於窗格底部,則 [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
。
傳回值
下列其中一個值:
如果
HTNOWHERE
不在可停駐窗格中,point
。如果
HTCLIENT
位於可停駐窗格的工作區,point
。如果
HTCAPTION
位於可停駐窗格的標題區域中,point
。如果
AFX_HTCLOSE
位於關閉按鈕上,point
。如果
HTMAXBUTTON
位於釘選按鈕上,point
。
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
值會導致 ASSERT
中的失敗 CPane::DockPane
。 請改用 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);
參數
[輸入] 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
方法,以程式設計方式從兩個可停駐窗格建立索引卷標式窗格時,就會發生這種情況。
默認運行時間類別是根據 dwTabbedStyle
和 CDockablePane::Create
的 CDockablePane::CreateEx
參數來設定。 若要自訂新的索引標籤窗格,請從下列其中一個類別衍生類別:
然後,使用運行時間類別資訊的指標呼叫這個方法。
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
未執行的任何外部作業。 例如,您必須取消停駐窗格,以程序設計方式將窗格從某個位置移至另一個位置。
架構會在終結之前自動取消停駐窗格。