CDockablePane
類別
實作可以停駐在固定位置或包含於索引標籤式窗格的窗格。
語法
class CDockablePane : public CPane
成員
公用建構函式
名稱 | 描述 |
---|---|
CDockablePane::CDockablePane |
建構並初始化 CDockablePane 物件。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CDockablePane::CheckAutoHideCondition |
判斷停駐窗格是否隱藏(在自動隱藏模式中)。 |
CDockablePane::CheckStopSlideCondition |
判斷自動隱藏停駐窗格何時應該停止滑動。 |
CDockablePane::DrawCaption |
繪製停駐窗格標題(移駐器)。 |
CDockablePane::OnPressButtons |
當使用者按下和 AFX_HTMAXBUTTON 按鈕以外的AFX_HTCLOSE 標題按鈕時呼叫。 |
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
索引卷標式窗格種類是由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
。
備註
架構會在窗格停駐至目前窗格之前呼叫此方法。
覆寫衍生類別中的此函式,以啟用或停用特定窗格的停駐。
根據預設,如果 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]指定子視窗的識別碼。 如果您想要儲存此停駐窗格的停駐狀態,此值必須是唯一的。
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
可以是下列任一值:
值 | Description |
---|---|
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
可以是下列任一值:
值 | Description |
---|---|
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_BOTTOM
CBRS_ALIGN_TOP
CBRS_ALIGN_RIGHT
或 CBRS_ALIGN_ANY
的CBRS_ALIGN_LEFT
其中一個。 ( 定義在 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;
傳回值
如果可停駐窗格停駐到主框架視窗,或停駐窗格未停駐,或NULL
浮動,則為有效的CPaneDivider
物件。
備註
如需窗格分隔符的詳細資訊,請參閱 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
類別)。
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
為 。
傳回值
下列其中一個值:
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
會導致 中的 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);
參數
[輸入] 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_HTMAXBUTTON
按鈕以外的AFX_HTCLOSE
標題按鈕時呼叫。
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::CreateEx
的 CDockablePane::Create
參數來設定。 若要自訂新的索引標籤窗格,請從下列其中一個類別衍生類別:
然後,使用運行時間類別資訊的指標呼叫這個方法。
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
執行的任何外部作業。 例如,您必須取消停駐窗格,以程序設計方式將窗格從某個位置移至另一個位置。
架構會在終結之前自動取消停駐窗格。