分割視圖

分割視圖

分割視窗將視窗分成幾個部分,每個部分通常代表一個視圖(但也可以是具有子視窗標識的CWnd對象),又稱窗格。

基本介紹

  • 中文名:分割視圖
  • 簡介:將視窗分成幾個部分
  • 特點:每個部分通常代表一個視圖
  • 分為兩類:動態分割視窗和靜態分割視窗
分割視圖簡介,CSplitterWnd類,動態分割視窗,靜態分割視窗,

分割視圖簡介

如圖所示。如果想在一個視窗裡面觀察文檔的不同部分,或者是在一個視窗里用不同類型的視圖(比如用圖表和表格)觀察同一個文檔,那么採用分割視窗是非常方便的。許多優秀的軟體都採用了分割視窗技術,因此我們有必要掌握分割視窗的用法。
分割視窗分為兩類:動態分割視窗和靜態分割視窗。
動態分割視窗是指:用戶可以動態的分割和除去分割視窗,分割視窗會創建和刪除相應的窗格。Microsoft Word就是使用動態分割視窗的例子,這是一種最常用的分割視窗。動態分割視窗最多可以有2行´ 2列個格。
靜態分割視窗是指:在視窗創建時,分割視窗的窗格就已經創建好了,且窗格的數量和順序不會改變。窗格為一個分割條所分割,用戶可以拖動分割條調整相應的窗格的大小。

CSplitterWnd類

MFC中的分割視窗類-CSplitterWnd類提供了分割視窗的功能。CSplitterWnd類中包含一個分割器視窗,該分割器視窗就是一個包含多個窗格的視窗。我們分割視窗時就是直接在此分割器視窗中分割的。
下面介紹三個最常用的成員函式:
virtual BOOL Create(
CWnd* pParentWnd,
int nMaxRows,
int nMaxCols,
SIZE sizeMin,
CCreateContext* pContext,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
UINT nID = AFX_IDW_PANE_FIRST
);
創建動態分割視窗。參數pParentWnd為分割器視窗的父框架視窗;參數nMaxRows為分割器視窗的最大行數,不能超過2;參數nMaxCols為分割器視窗的最大列數,也不能超過2;參數sizeMin為窗格能顯示的最小尺寸,如果窗格尺寸小於sizeMin則不顯示;參數pContext為指向CCreateContext結構的指針,大多數情況下可以賦值為父框架視窗的pContext;參數dwStyle指定視窗風格;參數nID為分割視窗的ID,除非分割器視窗嵌入到另一個分割器視窗中,否則可以取值AFX_IDW_PANE_FIRST。
virtual BOOL CreateStatic(
CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST
);
創建靜態分割視窗。參數pParentWnd、dwStyle和nID同上;參數nRows為行數,不能超過16;參數nCols為列數,同樣不能超過16。
virtual BOOL CreateView(
int row,
int col,
CRuntimeClass* pViewClass,
SIZE sizeInit,
CCreateContext* pContext
);
為靜態分割視窗創建窗格視圖。參數row指定分割器視窗中放置新視圖的行;參數col指定放置新視圖的列;參數pViewClass指定新視圖的CRuntimeClass對象;參數sizeInit指定新視圖的初始大小;參數pContext為指向CCreateContext結構的指針,通常可以賦值為傳遞給父框架視窗的重載函式CFrameWnd::OnCreateClient的pContext參數值。

動態分割視窗

創建動態分割視窗的步驟為:
1. 在父框架類中定義一個CSplitterWnd類型的成員對象。
2. 重載父框架類的CFrameWnd::OnCreateClient成員函式。
3. 在重載的CFrameWnd::OnCreateClient函式中調用CSplitterWnd成員對象的Create函式。

靜態分割視窗

創建靜態分割視窗的步驟為:
1. 在父框架類中定義一個CSplitterWnd類型的成員對象。
2. 重載父框架類的CFrameWnd::OnCreateClient成員函式。
3. 在重載的CFrameWnd::OnCreateClient函式中調用CSplitterWnd成員對象的CreateStatic成員函式,然後可以調用CSplitterWnd成員對象的CreateView成員函式為每個窗格創建視圖。

相關詞條

熱門詞條

聯絡我們