當前位置:文檔之家 > 靜態分割窗口與多視圖實例

靜態分割窗口與多視圖實例

靜態分割窗口與多視圖實例

所謂多視,是指在同一個框架窗口下同時顯示多個視圖。通過運用這種技術,可以在框架的有限的空間內同時提供給用戶更大的信息量,并且使得用戶界面更加的友好,增強了軟件的可操作性。

窗口分割的基本概念

按照分割的時機的不同,窗口分割可以分為兩類:動態分割和靜態分割。

動態分割是指用戶可以動態的分割和合并窗口。動態分割最多可以有2行2列個窗口,并且所有的窗格只能使用同一種視圖類。

靜態分割是指窗口在創建時,分割窗格窗口的窗格已經創建好了,且窗格的數量和順序不會改變了,窗格為一個分隔條所分割,用戶可以拖動分割條調整相應的窗格的大小。靜態分割窗口最多可以有16行16列的窗格,但是各個窗格可以使用不同的視圖類。

無論創建那一種分割,都必須在創建時指定最大的行數和列數,這些值是有CSplitterWnd 對象進行管理。對于靜態分割,必須創建指定數目的所有窗格以填滿行和列。而對于動態分割,第一個窗格將在框架創建CSplitterWnd對象時自動創建。

窗口分割支持類CSplitterWnd

CSplitterWnd類主要為窗口的風格提供了封裝,窗口被分廠各個窗格后,又該類的對象負責管理。對于windows而言,CSplitterWnd

是一個真正的窗口,它完全占據了框架窗口的用戶區域,而視圖則占據了分割窗口的床片區域。CSplitterWnd窗口不參與命令傳遞機制。

使用時,CSplitterWnd對象通常為其父框架窗口CFrameWnd或CMDIChildWnd(MID應用中)對象的內嵌成員。CSplitterWnd對象創建過程如下。

在父框架窗口中嵌入CSplitterWnd類的對象成員;

重載父框架窗口的CFrameWnd::OnCreateClient成員函數;

從上一步重載的函數內部調用Create創建動態分割窗口或者調用CreateStatic創建靜態的分割窗口。

下面介紹CsplitterWnd類的幾個常用的函數

創建動態分割窗口函數Create

該函數用于動態創建分割窗口,同時將該窗口與類CSplitterWnd相關聯,其生聲明如下:

BOOL Create(CWnd* pParentWnd, int nMaxRows, int MaxCol, SIZE sizeMin, CcreateContext* pContext, DOWRD dwStyle = WS_CHILD |

WS_VISIBLE | WS_HSCROLL | WSVSCROLL | SPLS_DYNAMIC_SPLIT,

UINT nID=AFX_IDW_PANE_FIRST);

各主要參數的含義如下:

pParentWnd:分割窗口的父框架窗口的指針

nMaxRows和你MaxCols:行與列的最大值,二者均不大于二

sizeMin:指定窗格被顯示時的最小值。例如拖動分割框的幅度小于相應的值時,窗格將不會顯示,但是可以調用該類的另外兩個成員對此值進行改變。

BOOL CMainFrame::onCreateClient(LPCREATESTRUCT lpcs,CcreateConText* pContext) {

return m_wndSplitter.Create(this ,2,2, /*設置行與列的數目*/Csize(10,10), /*窗格顯示時最小值*/ pContext);

今日头条体育新闻