共用方式為


CSplitterWnd 類別

提供分割視窗 (這是包含多個窗格的視窗) 的功能。

語法

class CSplitterWnd : public CWnd

成員

公用建構函式

名稱 描述
CSplitterWnd::CSplitterWnd 呼叫 以建構 CSplitterWnd 物件。

公用方法

名稱 描述
CSplitterWnd::ActivateNext 執行 [下一個窗格] 或 [上一個窗格] 命令。
CSplitterWnd::CanActivateNext 檢查下一個窗格或上一個窗格命令目前是否可行。
CSplitterWnd::Create 呼叫 以建立動態分隔器視窗,並將它附加至 CSplitterWnd 物件。
CSplitterWnd::CreateScrollBarCtrl 建立共用滾動條控件。
CSplitterWnd::CreateStatic 呼叫 以建立靜態分隔器視窗,並將它附加至 CSplitterWnd 物件。
CSplitterWnd::CreateView 呼叫 以在分隔器視窗中建立窗格。
CSplitterWnd::DeleteColumn 從分割器視窗刪除資料行。
CSplitterWnd::DeleteRow 從分割器視窗刪除資料列。
CSplitterWnd::DeleteView 從分隔器視窗刪除檢視。
CSplitterWnd::DoKeyboardSplit 執行鍵盤分割命令,通常是「視窗分割」。
CSplitterWnd::DoScroll 執行分割視窗的同步捲動。
CSplitterWnd::DoScrollBy 捲動以指定數目的像素分割視窗。
CSplitterWnd::GetActivePane 會從框架中的焦點或使用中檢視中決定使用中的窗格。
CSplitterWnd::GetColumnCount 傳回目前的窗格數據行計數。
CSplitterWnd::GetColumnInfo 傳回指定數據行的資訊。
CSplitterWnd::GetPane 傳回指定數據列和數據行的窗格。
CSplitterWnd::GetRowCount 傳回目前的窗格數據列計數。
CSplitterWnd::GetRowInfo 傳回指定數據列的資訊。
CSplitterWnd::GetScrollStyle 傳回共用滾動條樣式。
CSplitterWnd::IdFromRowCol 傳回位於指定數據列和數據行之窗格的子視窗標識碼。
CSplitterWnd::IsChildPane 呼叫 以判斷視窗目前是否為此分割器視窗的子窗格。
CSplitterWnd::IsTracking 判斷分割器列目前是否正在移動。
CSplitterWnd::RecalcLayout 在調整數據列或數據行大小之後,呼叫 以重新顯示分割器視窗。
CSplitterWnd::SetActivePane 將窗格設定為框架中的使用中窗格。
CSplitterWnd::SetColumnInfo 呼叫 以設定指定的數據行資訊。
CSplitterWnd::SetRowInfo 呼叫 以設定指定的數據列資訊。
CSplitterWnd::SetScrollStyle 指定分割器視窗共用滾動條支援的新滾動條樣式。
CSplitterWnd::SplitColumn 指出框架視窗垂直分割的位置。
CSplitterWnd::SplitRow 指出框架視窗水準分割的位置。

受保護的方法

名稱 描述
CSplitterWnd::OnDraw 由架構呼叫以繪製分隔器視窗。
CSplitterWnd::OnDrawSplitter 轉譯分割視窗的影像。
CSplitterWnd::OnInvertTracker 將分割視窗的影像呈現為與框架視窗相同的大小和圖形。

備註

窗格通常是衍生自 CView的應用程式特定物件,但可以是具有適當子視窗標識碼的任何 CWnd 物件。

物件 CSplitterWnd 通常內嵌在父 CFrameWnd 代或 CMDIChildWnd 物件中。 使用下列步驟建立 CSplitterWnd 物件:

  1. CSplitterWnd在父框架中內嵌成員變數。

  2. 覆寫父框架 CFrameWnd::OnCreateClient 的成員函式。

  3. 從覆OnCreateClient寫 的 中,呼叫 CreateCSplitterWndCreateStatic 成員函式。

Create呼叫成員函式以建立動態分隔器視窗。 動態分隔器視窗通常用來建立和捲動相同檔的多個個別窗格或檢視。 架構會自動建立分隔器的初始窗格;然後,當使用者操作分割器視窗的控件時,架構會建立、重設大小及處置其他窗格。

當您呼叫 Create時,您可以指定最小數據列高度和資料行寬度,以判斷窗格太小而無法完全顯示。 呼叫 Create之後,您可以藉由呼叫 SetColumnInfoSetRowInfo 成員函式來調整這些最小值。

此外, SetColumnInfo 使用和 SetRowInfo 成員函式來設定數據行的「理想」寬度,以及數據列的「理想」高度。 當架構顯示分割器視窗時,它會先顯示父框架,再顯示分割器視窗。 架構接著會根據數據行和數據列中的理想維度配置窗格,從左上角到分割器視窗工作區的右下角運作。

動態分隔器視窗中的所有窗格都必須是相同的類別。 支援動態分割器視窗的熟悉應用程式包括Microsoft Word 和 Microsoft Excel。

CreateStatic使用成員函式來建立靜態分隔器視窗。 使用者只能在靜態分隔器視窗中變更窗格的大小,而不是其數字或順序。

當您建立靜態分割器時,您必須特別建立所有靜態分割器窗格。 請務必在父框架 OnCreateClient 的成員函式傳回之前建立所有窗格,否則架構將不會正確顯示視窗。

成員 CreateStatic 函式會自動初始化具有最小數據列高度和數據行寬度為 0 的靜態分隔器。 呼叫 Create之後,請藉由呼叫 SetColumnInfoSetRowInfo 成員函式來調整這些最小值。 此外,在呼叫 CreateStatic 之後使用 SetColumnInfoSetRowInfo ,以指出所需的理想窗格維度。

靜態分割器個別窗格通常屬於不同的類別。 如需靜態分割器視窗的範例,請參閱圖形編輯器和 Windows 檔案管理員。

分割器窗口支援特殊的滾動條(除了窗格可能擁有的滾動條之外)。 這些滾動條是 物件的子系 CSplitterWnd ,並與窗格共用。

當您建立分隔器視窗時,您會建立這些特殊的滾動條。 例如, CSplitterWnd 具有一個數據列、兩個數據行和樣式的 WS_VSCROLL ,會顯示兩個窗格所共用的垂直滾動條。 當使用者移動滾動條時, WM_VSCROLL 訊息會傳送至這兩個窗格。 當窗格設定滾動條位置時,會設定共用滾動條。

如需分割器視窗的詳細資訊,請參閱 技術附註 29

如需如何建立動態分隔器視窗的詳細資訊,請參閱:

繼承階層架構

CObject

CCmdTarget

CWnd

CSplitterWnd

需求

標頭: afxext.h

CSplitterWnd::ActivateNext

由架構呼叫以執行下一個窗格或上一個窗格命令。

virtual void ActivateNext(BOOL bPrev = FALSE);

參數

bPrev
指出要啟動的視窗。 TRUE 針對上一個; FALSE for next。

備註

這個成員函式是 類別用來 CView 委派至實作 CSplitterWnd 的高階命令。

CSplitterWnd::CanActivateNext

架構呼叫以檢查下一個窗格或上一個窗格命令目前是否可行。

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

參數

bPrev
指出要啟動的視窗。 TRUE 針對上一個; FALSE for next。

傳回值

如果成功則為非零;否則為 0。

備註

這個成員函式是 類別用來 CView 委派至實作 CSplitterWnd 的高階命令。

CSplitterWnd::Create

若要建立動態分隔器視窗,請呼叫 Create 成員函式。

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
指定窗格可顯示的大小下限。

pContext
結構的指標 CCreateContext 。 在大部分情況下,這可以 pContext 傳遞至父框架視窗。

dwStyle
指定窗口樣式。

nID
視窗的子視窗識別碼。 除非分割器視窗巢狀於另一個分隔器視窗內,否則識別碼可以是 AFX_IDW_PANE_FIRST

傳回值

如果成功則為非零;否則為 0。

備註

您可以採取下列步驟,在父CFrameWnd代或 CMDIChildWnd 物件中內嵌 CSplitterWnd

  1. CSplitterWnd在父框架中內嵌成員變數。

  2. 覆寫父框架 CFrameWnd::OnCreateClient 的成員函式。

  3. Create從覆OnCreateClient寫的內呼叫成員函式。

當您從父框架內建立分割器視窗時,請將父框架的 pContext 參數傳遞至分割器視窗。 否則,此參數可以是 NULL

動態分隔器視窗的初始最小數據列高度和數據行寬度是由 sizeMin 參數所設定。 這些最小值可決定窗格是否太小而無法完整顯示,可以使用 和 SetColumnInfo 成員函式來變更SetRowInfo

如需動態分割器視窗的詳細資訊,請參閱多個檔類型、檢視和框架 Windows、技術附註 29 和類別概觀一文中的CSplitterWnd「分割器 Windows」。

範例

// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   return m_wndSplitter.Create(this,
                               2, 2,          // TODO: adjust the number of rows, columns
                               CSize(10, 10), // TODO: adjust the minimum pane size
                               pContext);
}

CSplitterWnd::CreateScrollBarCtrl

由架構呼叫以建立共用滾動條控件。

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

參數

dwStyle
指定窗口樣式。

nID
視窗的子視窗識別碼。 除非分割器視窗巢狀於另一個分隔器視窗內,否則識別碼可以是 AFX_IDW_PANE_FIRST

傳回值

如果成功則為非零;否則為 0。

備註

覆寫 CreateScrollBarCtrl 以包含滾動條旁的額外控件。 默認行為是建立一般的 Windows 滾動條控件。

CSplitterWnd::CreateStatic

若要建立靜態分隔器視窗,請呼叫 CreateStatic 成員函式。

virtual BOOL CreateStatic(
    CWnd* pParentWnd,
    int nRows,
    int nCols,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE,
    UINT nID = AFX_IDW_PANE_FIRST);

參數

pParentWnd
分割器視窗的父框架視窗。

nRows
列的數目。 此值不得超過 16。

nCols
行數。 此值不得超過 16。

dwStyle
指定窗口樣式。

nID
視窗的子視窗識別碼。 除非分割器視窗巢狀於另一個分隔器視窗內,否則識別碼可以是 AFX_IDW_PANE_FIRST

傳回值

如果成功則為非零;否則為 0。

備註

CSplitterWnd通常會藉由採取下列步驟,內嵌在父CFrameWnd系或 CMDIChildWnd 物件中:

  1. CSplitterWnd在父框架中內嵌成員變數。

  2. 覆寫父框架 OnCreateClient 的成員函式。

  3. CreateStatic從覆CFrameWnd::OnCreateClient寫的內呼叫成員函式。

靜態分隔器視窗包含固定數目的窗格,通常來自不同類別。

當您建立靜態分隔器視窗時,您必須同時建立其所有窗格。 成員 CreateView 函式通常用於此用途,但您也可以建立其他非檢視類別。

靜態分隔器視窗的初始最小數據列高度和數據行寬度為 0。 這些最小值可決定窗格是否太小而無法完整顯示,可以使用 和 SetColumnInfo 成員函式來變更SetRowInfo

若要將捲動條新增至靜態分隔器視窗,請將 和 WS_VSCROLL 樣式新增WS_HSCROLLdwStyle

如需靜態分割器視窗的詳細資訊,請參閱多個檔類型、檢視和框架 Windows 一文中的「分隔視窗」、技術附注 29CSplitterWnd類別概觀。

CSplitterWnd::CreateView

建立靜態分隔器視窗的窗格。

virtual BOOL CreateView(
    int row,
    int col,
    CRuntimeClass* pViewClass,
    SIZE sizeInit,
    CCreateContext* pContext);

參數

row
指定要在其中放置新檢視的分隔器視窗數據列。

col
指定要在其中放置新檢視的分隔視窗數據行。

pViewClass
指定 CRuntimeClass 新檢視的 。

sizeInit
指定新檢視的初始大小。

pContext
用來建立檢視之建立內容的指標(通常是 pContext 傳遞至父框架的覆 CFrameWnd::OnCreateClient 寫成員函式,在其中建立分割器視窗)。

傳回值

如果成功則為非零;否則為 0。

備註

在架構顯示分割器之前,必須先建立靜態分隔器視窗的所有窗格。

當動態分割器視窗的使用者分割窗格、數據列或數據行時,架構也會呼叫這個成員函式來建立新的窗格。

範例

// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
   // CMyView and CMyOtherView are user-defined views derived from CView
   m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
                            pContext);
   m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
                            pContext);

   return (m_bSplitterCreated);
}

CSplitterWnd::CSplitterWnd

呼叫 以建構 CSplitterWnd 物件。

CSplitterWnd();

備註

CSplitterWnd在兩個步驟中建構物件。 首先,呼叫會建立 CSplitterWnd 物件的建構函式,然後呼叫 Create 成員函式,該函式會建立分割器視窗並將它附加至 CSplitterWnd 物件。

CSplitterWnd::DeleteColumn

從分割器視窗刪除資料行。

virtual void DeleteColumn(int colDelete);

參數

colDelete
指定要刪除的數據列。

備註

架構會呼叫此成員函式,以實作動態分隔器視窗的邏輯(也就是說,如果分割器視窗具有 SPLS_DYNAMIC_SPLIT 樣式)。 您可以自定義它,以及虛擬函式 CreateView,以實作更進階的動態分割器。

CSplitterWnd::DeleteRow

從分割器視窗刪除資料列。

virtual void DeleteRow(int rowDelete);

參數

rowDelete
指定要刪除的數據列。

備註

架構會呼叫此成員函式,以實作動態分隔器視窗的邏輯(也就是說,如果分割器視窗具有 SPLS_DYNAMIC_SPLIT 樣式)。 您可以自定義它,以及虛擬函式 CreateView,以實作更進階的動態分割器。

CSplitterWnd::DeleteView

從分隔器視窗刪除檢視。

virtual void DeleteView(
    int row,
    int col);

參數

row
指定要刪除檢視的分割器視窗數據列。

col
指定要刪除檢視的分割器視窗數據行。

備註

如果正在刪除使用中檢視,下一個檢視將會變成作用中。 默認實作假設檢視會在 中 PostNcDestroy自動刪除。

架構會呼叫此成員函式,以實作動態分隔器視窗的邏輯(也就是說,如果分割器視窗具有 SPLS_DYNAMIC_SPLIT 樣式)。 您可以自定義它,以及虛擬函式 CreateView,以實作更進階的動態分割器。

CSplitterWnd::DoKeyboardSplit

執行鍵盤分割命令,通常是「視窗分割」。

virtual BOOL DoKeyboardSplit();

傳回值

如果成功則為非零;否則為 0。

備註

這個成員函式是 類別用來 CView 委派至實作 CSplitterWnd 的高階命令。

CSplitterWnd::DoScroll

執行分割視窗的同步捲動。

virtual BOOL DoScroll(
    CView* pViewFrom,
    UINT nScrollCode,
    BOOL bDoScroll = TRUE);

參數

pViewFrom
捲動訊息的來源檢視指標。

nScrollCode
表示用戶捲動要求的滾動條代碼。 此參數是由兩個部分所組成:低序位元組,可決定水平發生的卷動類型,以及高階位元組,決定垂直發生的捲動類型:

  • SB_BOTTOM 捲動到底部。

  • SB_LINEDOWN 向下捲動一行。

  • SB_LINEUP 向上捲動一行。

  • SB_PAGEDOWN 向下捲動一頁。

  • SB_PAGEUP 向上捲動一頁。

  • SB_TOP 捲動到頂端。

bDoScroll
判斷指定的捲動動作是否發生。 如果 bDoScrollTRUE (也就是說,如果子視窗存在,且分割視窗有捲動範圍),則可以執行指定的捲動動作;如果 bDoScroll FALSE 為 ,即如果沒有子視窗存在,或分割檢視沒有捲動範圍,則不會發生捲動。

傳回值

如果發生同步捲動,則為非零;否則為 0。

備註

當檢視收到卷動訊息時,架構會呼叫此成員函式,以執行分割視窗的同步捲動。 覆寫以要求用戶在允許同步捲動之前採取動作。

CSplitterWnd::DoScrollBy

捲動以指定數目的像素分割視窗。

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

參數

pViewFrom
捲動訊息的來源檢視指標。

sizeScroll
要水平和垂直捲動的像素數目。

bDoScroll
判斷指定的捲動動作是否發生。 如果 bDoScrollTRUE (也就是說,如果子視窗存在,且分割視窗有捲動範圍),則可以執行指定的捲動動作;如果 bDoScroll FALSE 為 ,即如果沒有子視窗存在,或分割檢視沒有捲動範圍,則不會發生捲動。

傳回值

如果發生同步捲動,則為非零;否則為 0。

備註

架構會呼叫此成員函式,以響應捲動訊息,以以圖元表示 sizeScroll的數量執行分割視窗的同步捲動。 正值表示向下和向右卷動;負值表示向上和向左卷動。

覆寫 以要求使用者執行動作,再允許捲動。

CSplitterWnd::GetActivePane

會從框架中的焦點或使用中檢視中決定使用中的窗格。

virtual CWnd* GetActivePane(
    int* pRow = NULL,
    int* pCol = NULL);

參數

pRow
要擷取使用中窗格之列號的指標 int

pCol
要擷取使用中窗格之數據行編號的指標 int

傳回值

使用中窗格的指標。 NULL 如果沒有任何使用中的窗格存在,則為 。

備註

架構會呼叫此成員函式,以判斷分割器視窗中的作用中窗格。 在取得使用中窗格之前,覆寫 以要求用戶採取動作。

CSplitterWnd::GetColumnCount

傳回目前的窗格數據行計數。

int GetColumnCount() const;

傳回值

傳回分割器中目前的數據行數目。 如果是靜態分隔器,這也會是數據行數目上限。

CSplitterWnd::GetColumnInfo

傳回指定數據行的資訊。

void GetColumnInfo(
    int col,
    int& cxCur,
    int& cxMin) const;

參數

col
指定資料行。

cxCur
要設定為數據行目前寬度之的參考 int

cxMin
要設定為目前數據行寬度下限之 的參考 int

CSplitterWnd::GetPane

傳回指定數據列和數據行的窗格。

CWnd* GetPane(
    int row,
    int col) const;

參數

row
指定數據列。

col
指定資料行。

傳回值

傳回指定數據列和數據行的窗格。 傳回的窗格通常是 CView衍生類別。

CSplitterWnd::GetRowCount

傳回目前的窗格數據列計數。

int GetRowCount() const;

傳回值

傳回分割器視窗中目前的數據列數目。 如果是靜態分割器視窗,這也會是數據列數目上限。

CSplitterWnd::GetRowInfo

傳回指定數據列的資訊。

void GetRowInfo(
    int row,
    int& cyCur,
    int& cyMin) const;

參數

row
指定數據列。

cyCur
int 設定為以像素為單位之數據列目前高度的參考。

cyMin
int 設定為以像素為單位之數據列目前最小高度的參考。

備註

呼叫這個成員函式以取得指定數據列的相關信息。 cyCur參數會填入指定數據列的目前高度,並cyMin填入數據列的最小高度。

CSplitterWnd::GetScrollStyle

會傳回分隔器視窗的共用滾動條樣式。

DWORD GetScrollStyle() const;

傳回值

如果成功,下列一或多個視窗樣式旗標:

  • WS_HSCROLL 如果分割器目前管理共用的水準滾動條。

  • WS_VSCROLL 如果分割器目前管理共用的垂直滾動條。

如果為零,分割器視窗目前不會管理任何共用滾動條。

CSplitterWnd::IdFromRowCol

取得位於指定數據列和數據行之窗格的子視窗標識碼。

int IdFromRowCol(
    int row,
    int col) const;

參數

row
指定分割器視窗數據列。

col
指定分割器視窗數據列。

傳回值

窗格的子視窗識別碼。

備註

此成員函式用於建立非檢視做為窗格,而且可以在窗格存在之前呼叫。

範例

HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);

   if (nCtlColor == CTLCOLOR_LISTBOX &&
       pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
   {
      // Pane 1,0 is a list box. Set the color of the text to be blue.
      pDC->SetBkColor(m_BkColor);
      pDC->SetTextColor(RGB(0, 0, 255));
      return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
   }
   // TODO: Return a different brush if the default is not desired
   return hbr;
}

CSplitterWnd::IsChildPane

判斷目前是否 pWnd 為這個分隔器視窗的子窗格。

BOOL IsChildPane(
    CWnd* pWnd,
    int* pRow,
    int* pCol);

參數

pWnd
要測試之物件的指標 CWnd

pRow
要在其中儲存數據列編號之的指標 int

pCol
要在其中儲存數據行編號的指標 int

傳回值

如果為非零,pWnd則目前是這個分隔器視窗的子窗格,而且pRowpCol會填入分割器視窗中窗格的位置。 如果 pWnd 不是這個分隔器視窗的子窗格,則會傳回 0。

備註

在 6.0 之前的 Visual C++ 版本中,此函式定義為

BOOL IsChildPane(CWnd* pWnd, int& row, int& col);

此版本現在已過時,不應使用。

CSplitterWnd::IsTracking

呼叫這個成員函式,以判斷視窗中的分隔列目前是否正在移動。

BOOL IsTracking();

傳回值

如果分割器作業正在進行中,則為非零;否則為 0。

CSplitterWnd::OnDrawSplitter

轉譯分割視窗的影像。

virtual void OnDrawSplitter(
    CDC* pDC,
    ESplitType nType,
    const CRect& rect);

參數

pDC
要在其中繪製之裝置內容的指標。 如果 pDCNULL,則 CWnd::RedrawWindow 由架構呼叫,而且不會繪製任何分割視窗。

nType
的值 enum ESplitType,可以是下列其中一項:

  • splitBox 分隔器拖曳方塊。

  • splitBar 出現在兩個分割視窗之間的列。

  • splitIntersection 分割視窗的交集。 在 Windows 95/98 上執行時,不會呼叫此元素。

  • splitBorder 分割視窗框線。

rect
對象的參考 CRect ,指定分割視窗的大小和形狀。

備註

架構會呼叫此成員函式,以繪製並指定分割器視窗的確切特性。 針對分割器視窗的各種圖形元件,覆寫 OnDrawSplitter 影像的進階自定義。 默認影像類似於 Microsoft Works for Windows 中的分割器,或Microsoft Windows 95/98 中的分割器,也就是說,分隔線的交集會混合在一起。

如需動態分割器視窗的詳細資訊,請參閱多個檔類型、檢視和框架 Windows、技術附註 29 和類別概觀一文中的CSplitterWnd「分割器 Windows」。

CSplitterWnd::OnInvertTracker

將分割視窗的影像呈現為與框架視窗相同的大小和圖形。

virtual void OnInvertTracker(const CRect& rect);

參數

rect
CRect指定追蹤矩形的物件參考。

備註

調整分割器的大小期間,架構會呼叫此成員函式。 覆寫 OnInvertTracker 以進階自定義分割器視窗的影像。 默認影像類似於 Microsoft Works for Windows 中的分割器,或Microsoft Windows 95/98 中的分割器,也就是說,分隔線的交集會混合在一起。

如需動態分割器視窗的詳細資訊,請參閱多個檔類型、檢視和框架 Windows、技術附註 29 和類別概觀一文中的CSplitterWnd「分割器 Windows」。

CSplitterWnd::RecalcLayout

在調整數據列或數據行大小之後,呼叫 以重新顯示分割器視窗。

virtual void RecalcLayout();

備註

呼叫這個成員函式,以在您使用 SetRowInfoSetColumnInfo 成員函式調整數據列和數據行大小之後,正確地重新顯示分割器視窗。 如果您在顯示分割器視窗之前變更數據列和資料行大小,則不需要呼叫這個成員函式。

每當使用者調整分割器視窗的大小或移動分割時,架構就會呼叫這個成員函式。

範例

請參閱 CSplitterWnd::SetColumnInfo 的範例。

CSplitterWnd::SetActivePane

將窗格設定為框架中的使用中窗格。

virtual void SetActivePane(
    int row,
    int col,
    CWnd* pWnd = NULL);

參數

row
如果 pWndNULL,則指定將作用中之窗格中的數據列。

col
如果 pWndNULL,則指定將作用中之窗格中的數據行。

pWnd
CWnd 物件的指標。 如果NULL為 ,則表示 和 colrow指定的窗格已設定為使用中。 如果不是 NULL,則指定設定為作用中的窗格。

備註

當使用者將焦點變更為框架視窗內的窗格時,架構會呼叫此成員函式,將窗格設定為作用中。 您可以明確地呼叫 SetActivePane ,將焦點變更為指定的檢視。

藉由提供數據列和數據行, 提供 pWnd來指定窗格。

CSplitterWnd::SetColumnInfo

呼叫 以設定指定的數據行資訊。

void SetColumnInfo(
    int col,
    int cxIdeal,
    int cxMin);

參數

col
指定分割器視窗數據列。

cxIdeal
指定以像素為單位之分隔視窗數據行的理想寬度。

cxMin
指定以像素為單位之分隔視窗數據行的最小寬度。

備註

呼叫這個成員函式,以設定數據行的新最小寬度和理想的寬度。 數據行最小值會決定數據行何時太小而無法完全顯示。

當架構顯示分割器視窗時,它會根據數據行和數據列中根據其理想的維度配置窗格,從左上角到分割器視窗工作區的右下角工作。

範例

void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
   CMDIChildWnd::OnSize(nType, cx, cy);

   CRect rect;
   GetWindowRect(&rect);
   if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
   {
      m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
      m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
      m_wndSplitter.RecalcLayout();
   }
}

CSplitterWnd::SetRowInfo

呼叫 以設定指定的數據列資訊。

void SetRowInfo(
    int row,
    int cyIdeal,
    int cyMin);

參數

row
指定分割器視窗數據列。

cyIdeal
指定以像素為單位之分隔器視窗數據列的理想高度。

cyMin
指定以像素為單位之分隔器視窗數據列的最小高度。

備註

呼叫這個成員函式,以設定新的最小高度和數據列的理想高度。 數據列最小值會決定數據列何時太小而無法完全顯示。

當架構顯示分割器視窗時,它會根據數據行和數據列中根據其理想的維度配置窗格,從左上角到分割器視窗工作區的右下角工作。

CSplitterWnd::SetScrollStyle

指定分割器視窗共用滾動條支援的新卷動樣式。

void SetScrollStyle(DWORD dwStyle);

參數

dwStyle
分割器視窗共用滾動條支援的新捲動樣式,可以是下列其中一個值:

  • WS_HSCROLL 建立/顯示水平共用滾動條。

  • WS_VSCROLL 建立/顯示垂直共用滾動條。

備註

建立滾動條之後,即使 SetScrollStyle 沒有該樣式呼叫,也不會終結它;而是隱藏那些滾動條。 這可讓滾動條保留其狀態,即使隱藏。 呼叫 SetScrollStyle之後,必須呼叫 RecalcLayout 所有變更才會生效。

CSplitterWnd::SplitColumn

指出框架視窗垂直分割的位置。

virtual BOOL SplitColumn(int cxBefore);

參數

cxBefore
在分割發生之前的位置,以像素為單位。

傳回值

如果成功則為非零;否則為 0。

備註

建立垂直分隔器視窗時,會呼叫這個成員函式。 SplitColumn 表示發生分割的預設位置。

SplitColumn 由架構呼叫,以實作動態分隔器視窗的邏輯(也就是說,如果分割器視窗具有 SPLS_DYNAMIC_SPLIT 樣式)。 您可以自定義它,以及虛擬函式 CreateView,以實作更進階的動態分割器。

CSplitterWnd::SplitRow

指出框架視窗水準分割的位置。

virtual BOOL SplitRow(int cyBefore);

參數

cyBefore
在分割發生之前的位置,以像素為單位。

傳回值

如果成功則為非零;否則為 0。

備註

建立水準分隔器視窗時,會呼叫這個成員函式。 SplitRow 表示發生分割的預設位置。

SplitRow 由架構呼叫,以實作動態分隔器視窗的邏輯(也就是說,如果分割器視窗具有 SPLS_DYNAMIC_SPLIT 樣式)。 您可以自定義它,以及虛擬函式 CreateView,以實作更進階的動態分割器。

CSplitterWnd::OnDraw

由架構呼叫以繪製分隔器視窗。

virtual void OnDraw(CDC* pDC);

參數

pDC
裝置內容的指標。

備註

另請參閱

MFC 範例 VIEWEX
CWnd
階層架構圖表
CView