CPaneFrameWnd 類別
如需更多詳細資料,請參閱 Visual Studio 安裝位置下之 VC\atlmfc\src\mfc 資料夾中的原始程式碼。
實作包含一個窗格的迷你框架視窗。 窗格會填滿視窗的工作區。
語法
class CPaneFrameWnd : public CWnd
成員
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CPaneFrameWnd::OnCheckRollState | 決定應縮合還是展開迷你框架視窗。 |
CPaneFrameWnd::OnDrawBorder | 繪製迷你框架視窗的框線。 |
資料成員
名稱 | 描述 |
---|---|
CPaneFrameWnd::m_bUseSaveBits | 指定是否要向CS_SAVEBITS類別樣式註冊窗口類別。 |
備註
當窗格從固定狀態切換至浮動狀態時,此架構會自動建立 CPaneFrameWnd
物件。
迷你框架視窗可在其內容可見的情況下進行拖曳 (即時固定),或使用拖曳矩形 (標準固定)。 迷你框架容器窗格的固定模式會決定迷你框架的拖曳行為。 如需詳細資訊,請參閱 CBasePane::GetDockingMode。
迷你框架視窗會根據包含的窗格樣式顯示標題的按鈕。 如果窗格可以關閉 ( CBasePane::CanBeClosed),它會顯示 [關閉] 按鈕。 如果窗格具有AFX_CBRS_AUTO_ROLLUP樣式,則會顯示釘選。
如果您從 CPaneFrameWnd
衍生類別,您必須向架構指出如何建立該類別。 您可以覆寫 CPane::CreateDefaultMiniframe 來建立類別,或設定 CPane::m_pMiniFrameRTC
成員,使其指向類別的運行時間類別資訊。
繼承階層架構
CPaneFrameWnd
需求
標頭: afxPaneFrameWnd.h
CPaneFrameWnd::AddPane
加入窗格。
virtual void AddPane(CBasePane* pWnd);
參數
pWnd
[in]要新增的窗格。
CPaneFrameWnd::AddRemovePaneFromGlobalList
從全域清單中加入或移除窗格。
static BOOL __stdcall AddRemovePaneFromGlobalList(
CBasePane* pWnd,
BOOL bAdd);
參數
pWnd
[in]要新增或移除的窗格。
bAdd
[in]如果非零,請新增窗格。 如果為 0,請移除窗格。
傳回值
如果方法成功,則為非零;否則為 0。
CPaneFrameWnd::AdjustLayout
調整迷你框架視窗的配置。
virtual void AdjustLayout();
CPaneFrameWnd::AdjustPaneFrames
virtual void AdjustPaneFrames();
備註
CPaneFrameWnd::CalcBorderSize
計算迷你框架視窗的框線大小。
virtual void CalcBorderSize(CRect& rectBorderSize) const;
參數
rectBorderSize
[out]包含小型框架視窗框線的大小,以像素為單位。
備註
架構會呼叫這個方法,以計算迷你框架視窗的框線大小。 傳回的大小取決於小型框架視窗是否包含工具列或 CDockablePane。
CPaneFrameWnd::CalcExpectedDockedRect
計算預期的固定視窗矩形。
virtual void CalcExpectedDockedRect(
CWnd* pWndToDock,
CPoint ptMouse,
CRect& rectResult,
BOOL& bDrawTab,
CDockablePane** ppTargetBar);
參數
pWndToDock
[in]要停駐之視窗的指標。
ptMouse
[in]滑鼠位置。
rectResult
[out]計算矩形。
bDrawTab
[out]如果為TRUE,請繪製索引標籤。如果為 FALSE,請勿繪製索引標籤。
ppTargetBar
[out]目標窗格的指標。
備註
如果使用者將視窗拖曳到 ptMouse 所指定的點,並將視窗停駐在該處,這個方法會計算視窗佔用的矩形。
CPaneFrameWnd::CanBeAttached
決定目前的窗格是否可以固定到另一個窗格或框架視窗。
virtual BOOL CanBeAttached() const;
傳回值
如果窗格可以停駐到另一個窗格或框架視窗,則為TRUE;否則為 FALSE。
CPaneFrameWnd::CanBeDockedToPane
決定迷你框架視窗是否可以固定到窗格。
virtual BOOL CanBeDockedToPane(const CDockablePane* pDockingBar) const;
參數
pDockingBar
[in]窗格。
傳回值
如果迷你框架可以停駐到 pDockingBar,則為非零;否則為 0。
CPaneFrameWnd::CheckGripperVisibility
virtual void CheckGripperVisibility();
備註
CPaneFrameWnd::ConvertToTabbedDocument
將窗格轉換為索引標籤式文件。
virtual void ConvertToTabbedDocument();
CPaneFrameWnd::Create
建立小型框架視窗,並將它附加至 CPaneFrameWnd 物件。
virtual BOOL Create(
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
CCreateContext* pContext = NULL);
參數
lpszWindowName
[in]指定要顯示在迷你畫面視窗上的文字。
dwStyle
[in]指定窗口樣式。 如需詳細資訊,請參閱 窗口樣式。
rect
[in]指定迷你畫面視窗的初始大小和位置。
pParentWnd
[in, out]指定迷你框架視窗的父框架。 此值不得為 NULL。
pContext
[in, out]指定使用者定義的內容。
傳回值
如果已成功建立視窗,則為TRUE;否則為 FALSE。
備註
小型框架視窗會以兩個步驟建立。 首先,架構會 CPaneFrameWnd
建立物件。 其次,它會呼叫 Create
來建立 Windows 迷你框架視窗,並將它附加至 CPaneFrameWnd
物件。
CPaneFrameWnd::CreateEx
建立小型框架視窗,並將它附加至 CPaneFrameWnd 物件。
virtual BOOL CreateEx(
DWORD dwStyleEx,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
CCreateContext* pContext=NULL);
參數
dwStyleEx
[in]指定延伸視窗樣式。 如需詳細資訊,請參閱 擴充窗口樣式
lpszWindowName
[in]指定要顯示在迷你畫面視窗上的文字。
dwStyle
[in]指定窗口樣式。 如需詳細資訊,請參閱 窗口樣式。
rect
[in]指定迷你畫面視窗的初始大小和位置。
pParentWnd
[in, out]指定迷你框架視窗的父框架。 此值不得為 NULL。
pContext
[in, out]指定使用者定義的內容。
傳回值
如果已成功建立視窗,則為TRUE;否則為 FALSE。
備註
小型框架視窗會以兩個步驟建立。 首先,架構會 CPaneFrameWnd
建立物件。 其次,它會呼叫 Create
來建立 Windows 迷你框架視窗,並將它附加至 CPaneFrameWnd
物件。
CPaneFrameWnd::D ockPane
固定窗格。
virtual CDockablePane* DockPane(BOOL& bWasDocked);
參數
bWasDocked
[out]如果窗格已停駐,則為TRUE;否則為 FALSE。
傳回值
如果作業成功, CDockablePane
則表示窗格停駐,否則為 NULL。
CPaneFrameWnd::FindFloatingPaneByID
在浮動窗格的全域清單中尋找具有指定控制項 ID 的窗格。
static CBasePane* FindFloatingPaneByID(UINT nID);
參數
nID
[in]表示要尋找之窗格的控件標識碼。
傳回值
具有指定控件識別碼的窗格;否則,如果沒有窗格具有指定的控件標識符,則為 NULL。
CPaneFrameWnd::FrameFromPoint
尋找包含指定點的迷你框架視窗。
static CPaneFrameWnd* __stdcall FrameFromPoint(
CPoint pt,
int nSensitivity,
CPaneFrameWnd* pFrameToExclude = NULL,
BOOL bFloatMultiOnly = FALSE);
參數
pt
[in]以螢幕座標表示的點。
nSensitivity
[in]依此大小增加迷你框架視窗的搜尋區域。 如果指定的點落在增加的區域,迷你框架視窗就會滿足搜尋準則。
pFrameToExclude
[in]指定要從搜尋中排除的迷你框架視窗。
bFloatMultiOnly
[in]如果為 TRUE,則只會搜尋具有CBRS_FLOAT_MULTI樣式的迷你框架視窗。 如果為 FALSE,請搜尋所有迷你框架視窗。
傳回值
包含 pt 的迷你框架視窗指標,否則為 NULL。
CPaneFrameWnd::GetCaptionHeight
傳回迷你框架視窗標題的高度。
virtual int GetCaptionHeight() const;
傳回值
迷你框架視窗的高度,以像素為單位。
備註
呼叫此方法以判斷迷你框架視窗的高度。 根據預設,高度會設定為 SM_CYSMCAPTION。 如需詳細資訊,請參閱 GetSystemMetrics 函式。
CPaneFrameWnd::GetCaptionRect
傳回迷你框架視窗標題的週框。
virtual void GetCaptionRect(CRect& rectCaption) const;
參數
rectCaption
[out]包含螢幕座標中迷你框架視窗標題的大小和位置。
備註
架構會呼叫這個方法,以計算迷你框架窗口標題的周框。
CPaneFrameWnd::GetCaptionText
傳回標題文字。
virtual CString GetCaptionText();
傳回值
迷你框架視窗的標題文字。
備註
當架構顯示標題文字時,會呼叫此方法。
CPaneFrameWnd::GetDockingManager
CDockingManager* GetDockingManager() const;
傳回值
備註
CPaneFrameWnd::GetDockingMode
傳回固定模式。
virtual AFX_DOCK_TYPE GetDockingMode() const;
傳回值
停駐模式。 下列其中一個值:
DT_STANDARD
DT_IMMEDIATE
DT_SMART
CPaneFrameWnd::GetFirstVisiblePane
傳回包含在迷你框架視窗中的第一個可見窗格。
virtual CWnd* GetFirstVisiblePane() const;
傳回值
迷你框架視窗中的第一個窗格,如果迷你框架視窗不包含任何窗格,則為 NULL。
CPaneFrameWnd::GetHotPoint
CPoint GetHotPoint() const;
傳回值
備註
CPaneFrameWnd::GetPane
傳回包含在迷你框架視窗中的窗格。
virtual CWnd* GetPane() const;
傳回值
迷你框架中包含的窗格,如果迷你框架視窗不包含任何窗格,則為 NULL。
備註
CPaneFrameWnd::GetPaneCount
傳回包含在迷你框架視窗中的窗格數目。
virtual int GetPaneCount() const;
傳回值
迷你框架視窗中的窗格數目。 這個值可以是零。
備註
CPaneFrameWnd::GetParent
CWnd* GetParent();
傳回值
備註
CPaneFrameWnd::GetPinState
BOOL GetPinState() const;
傳回值
備註
CPaneFrameWnd::GetRecentFloatingRect
CRect GetRecentFloatingRect() const;
傳回值
備註
CPaneFrameWnd::GetVisiblePaneCount
傳回包含在迷你框架視窗中的可見窗格數目。
virtual int GetVisiblePaneCount() const;
傳回值
可見窗格的數目。
備註
CPaneFrameWnd::HitTest
判斷迷你框架視窗的哪個部分位於給定的點上。
virtual LRESULT HitTest(
CPoint point,
BOOL bDetectCaption);
參數
point
[in] 要測試的點。
bDetectCaption
[in]如果為 TRUE,請檢查標題的點。 如果為 FALSE,請忽略標題。
傳回值
下列其中一個值:
值 | 意義 |
---|---|
HTNOWHERE | 點位於迷你框架視窗外。 |
TCLIENT | 點位於工作區中。 |
TCAPTION | 點位於標題上。 |
HTTOP | 點位於頂端。 |
HTTOPLEFT | 此點位於左上方。 |
HTTOPRIGHT | 此點位於右上方。 |
HTLEFT | 此點位於左邊。 |
HTRIGHT | 此點位於右側。 |
HTBOTTOM | 點位於底部。 |
HTBOTTOMLEFT | 此點位於左下角。 |
HTBOTTOMRIGHT | 此點位於右下角。 |
CPaneFrameWnd::IsCaptured
BOOL IsCaptured() const;
傳回值
備註
CPaneFrameWnd::IsDelayShow
BOOL IsDelayShow() const;
傳回值
備註
CPaneFrameWnd::IsRollDown
決定是否應展開迷你框架視窗。
virtual BOOL IsRollDown() const;
傳回值
如果迷你框架窗口必須向下捲動,則為TRUE;否則為 FALSE。
備註
架構會呼叫這個方法,以判斷是否應該向下復原迷你框架視窗。 如果迷你框架視窗包含至少一個具有AFX_CBRS_AUTO_ROLLUP旗標的窗格,則會啟用匯總/匯總功能。 建立窗格時會設定此旗標。 如需詳細資訊,請參閱 CBasePane::CreateEx。
根據預設,架構會檢查滑鼠指標是否位於迷你框架視窗周框矩形內,以判斷視窗是否必須向下捲動。 您可以在衍生類別中覆寫此行為。
CPaneFrameWnd::IsRollUp
決定是否應縮合迷你框架視窗。
virtual BOOL IsRollUp() const;
傳回值
如果必須匯總迷你框架視窗,則為TRUE;否則為 FALSE。
備註
架構會呼叫這個方法,以判斷是否應該匯總迷你框架視窗。 如果迷你框架視窗包含至少一個具有AFX_CBRS_AUTO_ROLLUP旗標的窗格,則會啟用匯總/匯總功能。 建立窗格時會設定此旗標。 如需詳細資訊,請參閱 CBasePane::CreateEx。
根據預設,架構會檢查滑鼠指標是否位於迷你框架視窗周框矩形內,以判斷視窗是否必須積存。 您可以在衍生類別中覆寫此行為。
CPaneFrameWnd::KillDockingTimer
停止固定計時器。
void KillDockingTimer();
CPaneFrameWnd::LoadState
從登錄載入窗格的狀態。
virtual BOOL LoadState(
LPCTSTR lpszProfileName = NULL,
UINT uiID = (UINT) -1);
參數
lpszProfileName
[in]配置檔名稱。
uiID
[in]窗格標識碼。
傳回值
如果已成功載入窗格狀態,則為TRUE;否則為 FALSE。
CPaneFrameWnd::m_bUseSaveBits
指定是否註冊具有CS_SAVEBITS類別樣式的窗口類別。
AFX_IMPORT_DATA static BOOL m_bUseSaveBits;
備註
將此靜態成員設定為TRUE,以註冊具有CS_SAVEBITS樣式的迷你框架窗口類別。 當使用者拖曳迷你框架視窗時,這有助於減少閃爍。
CPaneFrameWnd::OnBeforeDock
判斷是否可固定。
virtual BOOL OnBeforeDock();
傳回值
如果可以停駐,則為TRUE;否則為 FALSE。
CPaneFrameWnd::OnCheckRollState
決定應縮合還是展開迷你框架視窗。
virtual void OnCheckRollState();
備註
架構會呼叫這個方法,以判斷小型框架視窗是否應該向上或向下復原。
根據預設,架構會呼叫 CPaneFrameWnd::IsRollUp 和 CPaneFrameWnd::IsRollDown ,並只會延展或還原迷你框架視窗。 您可以在衍生類別中覆寫這個方法,以使用不同的視覺效果。
CPaneFrameWnd::OnDockToRecentPos
將迷你框架視窗固定在其最近的位置上。
virtual void OnDockToRecentPos();
CPaneFrameWnd::OnDrawBorder
繪製迷你框架視窗的框線。
virtual void OnDrawBorder(CDC* pDC);
參數
pDC
[in]用來繪製框線的裝置內容。
備註
這個方法是由架構呼叫,以繪製迷你框架視窗的框線。
CPaneFrameWnd::OnKillRollUpTimer
停止彙總計時器。
virtual void OnKillRollUpTimer();
CPaneFrameWnd::OnMovePane
以指定的位移移動迷你框架視窗。
virtual void OnMovePane(
CPane* pBar,
CPoint ptOffset);
參數
pBar
[in]窗格的指標(已忽略)。
ptOffset
[in]要移動窗格所依據的位移。
CPaneFrameWnd::OnPaneRecalcLayout
調整迷你框架視窗內窗格的配置。
virtual void OnPaneRecalcLayout();
備註
架構必須在迷你框架視窗內調整窗格的版面配置時,會呼叫此方法。
根據預設,窗格會定位為涵蓋迷你框架視窗的完整工作區。
CPaneFrameWnd::OnSetRollUpTimer
設定彙總計時器。
virtual void OnSetRollUpTimer();
CPaneFrameWnd::OnShowPane
在隱藏或顯示迷你框架視窗中的窗格時,由架構呼叫。
virtual void OnShowPane(
CDockablePane* pBar,
BOOL bShow);
參數
pBar
[in]正在顯示或隱藏的窗格。
bShow
[in]如果顯示窗格,則為TRUE;如果窗格正在隱藏,則為 FALSE。
備註
當迷你框架視窗中的窗格顯示或隱藏時,由架構呼叫。 預設實作不做任何動作。
CPaneFrameWnd::P in
void Pin(BOOL bPin = TRUE);
參數
[in] bPin
備註
CPaneFrameWnd::P aneFromPoint
如果在迷你框架視窗內包含使用者提供的點,則會傳回一個窗格。
virtual CBasePane* PaneFromPoint(
CPoint point,
int nSensitivity,
BOOL bCheckVisibility);
參數
point
[in]用戶在螢幕座標中按兩下的點。
nSensitivity
[in]不使用此參數。
bCheckVisibility
[in]TRUE 表示只應傳回可見窗格;否則為 FALSE。
傳回值
用戶按兩下的窗格,如果沒有該位置的窗格,則為NULL。
備註
呼叫這個方法以取得包含指定點的窗格。
CPaneFrameWnd::RedrawAll
重新繪製所有的迷你框架視窗。
static void RedrawAll();
備註
此方法會針對每個視窗呼叫 CWnd::RedrawWindow ,以更新所有迷你框架視窗。
CPaneFrameWnd::RemoveNonValidPanes
由架構呼叫以移除無效窗格。
virtual void RemoveNonValidPanes();
CPaneFrameWnd::RemovePane
從迷你框架視窗中移除窗格。
virtual void RemovePane(
CBasePane* pWnd,
BOOL bDestroy = FALSE,
BOOL bNoDelayedDestroy = FALSE);
參數
pWnd
[in]要移除之窗格的指標。
bDestroy
[in]指定迷你框架視窗會發生什麼事。 如果 bDestroy 為 TRUE,此方法會立即終結迷你框架視窗。 如果為 FALSE,此方法會在特定延遲之後終結迷你框架視窗。
bNoDelayedDestroy
[in]如果為 TRUE,則會停用延遲解構。 如果為 FALSE,則會啟用延遲解構。
備註
架構可以立即或在特定延遲之後終結迷你框架視窗。 如果您想要延遲破壞迷你框架視窗,請在 bNoDelayedDestroy 參數中傳遞 FALSE。 架構處理AFX_WM_CHECKEMPTYMINIFRAME訊息時,會發生延遲解構。
CPaneFrameWnd::ReplacePane
以一個窗格取代另一個。
virtual void ReplacePane(
CBasePane* pBarOrg,
CBasePane* pBarReplaceWith);
參數
pBarOrg
[in]原始窗格的指標。
pBarReplaceWith
[in]取代原始窗格之窗格的指標。
CPaneFrameWnd::SaveState
將窗格的狀態儲存至登錄。
virtual BOOL SaveState(
LPCTSTR lpszProfileName = NULL,
UINT uiID = (UINT) -1);
參數
lpszProfileName
[in]配置檔名稱。
uiID
[in]窗格標識碼。
傳回值
如果已成功儲存窗格狀態,則為TRUE;否則為 FALSE。
CPaneFrameWnd::SetCaptionButtons
動作標題按鈕。
virtual void SetCaptionButtons(DWORD dwButtons);
參數
dwButtons
[in]下列值的位 OR 組合:
AFX_CAPTION_BTN_CLOSE
AFX_CAPTION_BTN_PIN
AFX_CAPTION_BTN_MENU
AFX_CAPTION_BTN_CUSTOMIZE
CPaneFrameWnd::SetDelayShow
void SetDelayShow(BOOL bDelayShow);
參數
[in] bDelayShow
備註
CPaneFrameWnd::SetDockingManager
void SetDockingManager(CDockingManager* pManager);
參數
[in] pManager
備註
CPaneFrameWnd::SetDockingTimer
設定固定計時器。
void SetDockingTimer(UINT nTimeOut);
參數
nTimeOut
[in]以毫秒為單位的逾時值。
CPaneFrameWnd::SetDockState
設定固定狀態。
virtual void SetDockState(CDockingManager* pDockManager);
參數
pDockManager
[in]停駐管理員的指標。
CPaneFrameWnd::SetHotPoint
void SetHotPoint(CPoint& ptNew);
參數
[in] ptNew
備註
CPaneFrameWnd::SetPreDockState
由架構呼叫以設定預先固定狀態。
virtual BOOL SetPreDockState(
AFX_PREDOCK_STATE preDockState,
CBasePane* pBarToDock = NULL,
AFX_DOCK_METHOD dockMethod = DM_MOUSE);
參數
preDockState
[in]可能的值:
PDS_NOTHING,
PDS_DOCK_REGULAR,
PDS_DOCK_TO_TAB
pBarToDock
[in]要停駐之窗格的指標。
dockMethod
[in]停駐方法。 (忽略此參數。
傳回值
如果取消停駐迷你框架視窗,則為TRUE;如果停駐,則為 FALSE。
CPaneFrameWnd::SizeToContent
調整迷你框架視窗的大小,使其相當於包含的窗格。
virtual void SizeToContent();
備註
呼叫這個方法,將迷你框架視窗的大小調整為包含窗格的大小。
CPaneFrameWnd::StartTearOff
清除功能表。
BOOL StartTearOff(CMFCPopu* pMenu);
參數
pMenu
[in]功能表的指標。
傳回值
如果方法成功,則為TRUE;否則為 FALSE。
CPaneFrameWnd::StoreRecentDockSiteInfo
virtual void StoreRecentDockSiteInfo(CPane* pBar);
參數
[in] pBar
備註
CPaneFrameWnd::StoreRecentTabRelatedInfo
virtual void StoreRecentTabRelatedInfo(
CDockablePane* pDockingBar,
CDockablePane* pTabbedBar);
參數
[in] pDockingBar
[in] pTabbedBar