CDockablePane是一個通用視窗容器,它主要有兩個用途:在一個框架中懸浮或者停靠視窗。
在複雜布局的應用程式中,它可以顯示或隱藏所裝載的視窗,為應用程式視窗提供額外的空間。
基本介紹
- 中文名:CDockablePane
- 屬性:通用視窗容器
- 用途:在一個框架中懸浮或者停靠視窗
- 性質:停靠一個窗格等
定義,性質,套用,
定義
實現在一個選項卡式窗格可以在停靠站點停靠或包含的一個窗格。
class CDockablePane : public CPane
性質
- 停靠一個窗格。主框架視窗。
- 切換窗格自動隱藏模式。
- 附加一個窗格到一個選項卡式視窗。
- 浮動在袖珍框架視窗的一個窗格。
- 停靠窗格將在袖珍框架視窗浮動另一個窗格。
- 調整窗格。
- 停靠窗格的載入和保存狀態。
說明 |
---|
狀態信息保存到Windows註冊表。 |
- 創建有或沒有聲明的一個窗格。該聲明可以具有文本標籤,並且可以用漸變顏色。
- 拖動窗格,同時顯示窗格的內容時
- 拖動窗格,同時顯示拖動矩形時。
套用
基本套用:
要使用CDockablePane,首先從CDockablePane派生出你自己的類,然後必須處理它的OnCreate() 和 OnSize()事件,最後添加一個子視窗成員變數。使用步驟如下:
一:派生你自己的類
classCMyPane:publicCDockablePane{DECLARE_MESSAGE_MAP()DECLARE_DYNAMIC(CMyPane)protected:afx_msgintOnCreate(LPCREATESTRUCTlp);afx_msgvoidOnSize(UINTnType,intcx,intcy);private:CTestDlgm_TestDlg;//子視窗\};
二:重寫OnCreate() 和 OnSize() 函式,並且要調用基類的實現:
intCMyPane::OnCreate(LPCREATESTRUCTlp){if(CDockablePane::OnCreate(lp)==-1)//基類的實現return-1;if(!m_TestDlg.Create(IDD_DIALOG1,this)){return-1;}m_TestDlg.ShowWindow(SW_SHOW);return0;}voidCMyPane::OnSize(UINTnType,intcx,intcy){m_TestDlg.SetWindowPos(this,-1,-1,cx,cy,SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);m_TestDlg.ShowWindow(SW_SHOW);//使子空間占滿整個容器空間}
//為了使視窗可停靠,你的frame類必須繼承自擴展的基類(如:CFrameWndEx,CMDIFrameWndEx,..)。然後在//你的Frame類中的OnCreate()中添加:intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){CRectrectDummy;rectDummy.SetRectEmpty();//m_MyPane是CMyPane類型成員變數if(!m_MyPane.Create(_T("MyPane"),this,rectDummy,TRUE,IDD_DIALOG1,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CBRS_LEFT|CBRS_FLOAT_MULTI)){returnFALSE;}m_MyPane.SetMinSize(CSize(400,400));//設定視窗最小大小m_MyPane.EnableDocking(CBRS_ALIGN_ANY);DockPane(&m_MyPane);}
備註
可以通過CDockablePane::SetMinSize()設定容器的最小大小,但是如果容器停靠在一個標籤式的視窗中(如:visual studio 中的類視圖、資源視圖所在的容器),將不會起到作用。
- 如果調用非選項卡式兩個CDockablePane::AttachToTabWnd,可停靠窗格,指針到一個選項卡式視窗在ppTabbedControlBar參數將返回。通過使用此參數,可以繼續添加選項。選項卡式視窗。
- 由CDockablePane::AttachToTabWnd創建的此選項卡式窗格取決於pTabControlBarAttachTo參數的CDockablePane對象。可以調用CDockablePane::SetTabbedPaneRTC設定CDockablePane將創建一個選項卡式窗格。首次創建CDockablePane時,默認類型取決於CDockablePane::CreatedwTabbedStyle。如果dwTabbedStyle是AFX_CBRS_OUTLOOK_TABS默認類型為CMFCOutlookBar選件類;如果dwTabbedStyle是AFX_CBRS_REGULAR_TABS默認類型為CTabbedPane選件類。
- 如果要停靠一個停靠窗格到另一個,請調用CDockablePane::DockToWindow方法。在調用此方法之前,必須停靠窗格原始位置。
- 成員變數的CDockablePane::m_bHideInAutoHideMode控制項停靠窗格如何在自動隱藏模式的行為,當您調用CDockablePane::ShowPane。如果該成員變數設定為TRUE,可停靠窗格及其自動隱藏"按鈕被隱藏。否則,它們將滑動進出(在自動隱藏模式時)。
- 可以通過設定CDockablePane::m_bDisableAnimation成員變數禁用自動隱藏動畫。TRUE。