CSplitterWnd
類別
提供分割視窗 (這是包含多個窗格的視窗) 的功能。
語法
class CSplitterWnd : public CWnd
成員
公用建構函式
名稱 | 描述 |
---|---|
CSplitterWnd::CSplitterWnd |
呼叫 以建構 CSplitterWnd 物件。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CSplitterWnd::OnDraw |
由架構呼叫以繪製分隔器視窗。 |
CSplitterWnd::OnDrawSplitter |
轉譯分割視窗的影像。 |
CSplitterWnd::OnInvertTracker |
將分割視窗的影像呈現為與框架視窗相同的大小和圖形。 |
備註
窗格通常是衍生自 CView
的應用程式特定物件,但可以是具有適當子視窗標識碼的任何 CWnd
物件。
物件 CSplitterWnd
通常內嵌在父 CFrameWnd
代或 CMDIChildWnd
物件中。 使用下列步驟建立 CSplitterWnd
物件:
CSplitterWnd
在父框架中內嵌成員變數。覆寫父框架
CFrameWnd::OnCreateClient
的成員函式。從覆
OnCreateClient
寫 的 中,呼叫Create
的CSplitterWnd
或CreateStatic
成員函式。
Create
呼叫成員函式以建立動態分隔器視窗。 動態分隔器視窗通常用來建立和捲動相同檔的多個個別窗格或檢視。 架構會自動建立分隔器的初始窗格;然後,當使用者操作分割器視窗的控件時,架構會建立、重設大小及處置其他窗格。
當您呼叫 Create
時,您可以指定最小數據列高度和資料行寬度,以判斷窗格太小而無法完全顯示。 呼叫 Create
之後,您可以藉由呼叫 SetColumnInfo
和 SetRowInfo
成員函式來調整這些最小值。
此外, SetColumnInfo
使用和 SetRowInfo
成員函式來設定數據行的「理想」寬度,以及數據列的「理想」高度。 當架構顯示分割器視窗時,它會先顯示父框架,再顯示分割器視窗。 架構接著會根據數據行和數據列中的理想維度配置窗格,從左上角到分割器視窗工作區的右下角運作。
動態分隔器視窗中的所有窗格都必須是相同的類別。 支援動態分割器視窗的熟悉應用程式包括Microsoft Word 和 Microsoft Excel。
CreateStatic
使用成員函式來建立靜態分隔器視窗。 使用者只能在靜態分隔器視窗中變更窗格的大小,而不是其數字或順序。
當您建立靜態分割器時,您必須特別建立所有靜態分割器窗格。 請務必在父框架 OnCreateClient
的成員函式傳回之前建立所有窗格,否則架構將不會正確顯示視窗。
成員 CreateStatic
函式會自動初始化具有最小數據列高度和數據行寬度為 0 的靜態分隔器。 呼叫 Create
之後,請藉由呼叫 SetColumnInfo
和 SetRowInfo
成員函式來調整這些最小值。 此外,在呼叫 CreateStatic
之後使用 SetColumnInfo
和 SetRowInfo
,以指出所需的理想窗格維度。
靜態分割器個別窗格通常屬於不同的類別。 如需靜態分割器視窗的範例,請參閱圖形編輯器和 Windows 檔案管理員。
分割器窗口支援特殊的滾動條(除了窗格可能擁有的滾動條之外)。 這些滾動條是 物件的子系 CSplitterWnd
,並與窗格共用。
當您建立分隔器視窗時,您會建立這些特殊的滾動條。 例如, CSplitterWnd
具有一個數據列、兩個數據行和樣式的 WS_VSCROLL
,會顯示兩個窗格所共用的垂直滾動條。 當使用者移動滾動條時, WM_VSCROLL
訊息會傳送至這兩個窗格。 當窗格設定滾動條位置時,會設定共用滾動條。
如需分割器視窗的詳細資訊,請參閱 技術附註 29。
如需如何建立動態分隔器視窗的詳細資訊,請參閱:
繼承階層架構
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
:
CSplitterWnd
在父框架中內嵌成員變數。覆寫父框架
CFrameWnd::OnCreateClient
的成員函式。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
物件中:
CSplitterWnd
在父框架中內嵌成員變數。覆寫父框架
OnCreateClient
的成員函式。CreateStatic
從覆CFrameWnd::OnCreateClient
寫的內呼叫成員函式。
靜態分隔器視窗包含固定數目的窗格,通常來自不同類別。
當您建立靜態分隔器視窗時,您必須同時建立其所有窗格。 成員 CreateView
函式通常用於此用途,但您也可以建立其他非檢視類別。
靜態分隔器視窗的初始最小數據列高度和數據行寬度為 0。 這些最小值可決定窗格是否太小而無法完整顯示,可以使用 和 SetColumnInfo
成員函式來變更SetRowInfo
。
若要將捲動條新增至靜態分隔器視窗,請將 和 WS_VSCROLL
樣式新增WS_HSCROLL
至 dwStyle
。
如需靜態分割器視窗的詳細資訊,請參閱多個檔類型、檢視和框架 Windows 一文中的「分隔視窗」、技術附注 29 和CSplitterWnd
類別概觀。
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
判斷指定的捲動動作是否發生。 如果 bDoScroll
為 TRUE
(也就是說,如果子視窗存在,且分割視窗有捲動範圍),則可以執行指定的捲動動作;如果 bDoScroll
FALSE
為 ,即如果沒有子視窗存在,或分割檢視沒有捲動範圍,則不會發生捲動。
傳回值
如果發生同步捲動,則為非零;否則為 0。
備註
當檢視收到卷動訊息時,架構會呼叫此成員函式,以執行分割視窗的同步捲動。 覆寫以要求用戶在允許同步捲動之前採取動作。
CSplitterWnd::DoScrollBy
捲動以指定數目的像素分割視窗。
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
參數
pViewFrom
捲動訊息的來源檢視指標。
sizeScroll
要水平和垂直捲動的像素數目。
bDoScroll
判斷指定的捲動動作是否發生。 如果 bDoScroll
為 TRUE
(也就是說,如果子視窗存在,且分割視窗有捲動範圍),則可以執行指定的捲動動作;如果 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
則目前是這個分隔器視窗的子窗格,而且pRow
pCol
會填入分割器視窗中窗格的位置。 如果 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
要在其中繪製之裝置內容的指標。 如果 pDC
為 NULL
,則 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();
備註
呼叫這個成員函式,以在您使用 SetRowInfo
和 SetColumnInfo
成員函式調整數據列和數據行大小之後,正確地重新顯示分割器視窗。 如果您在顯示分割器視窗之前變更數據列和資料行大小,則不需要呼叫這個成員函式。
每當使用者調整分割器視窗的大小或移動分割時,架構就會呼叫這個成員函式。
範例
請參閱 CSplitterWnd::SetColumnInfo
的範例。
CSplitterWnd::SetActivePane
將窗格設定為框架中的使用中窗格。
virtual void SetActivePane(
int row,
int col,
CWnd* pWnd = NULL);
參數
row
如果 pWnd
為 NULL
,則指定將作用中之窗格中的數據列。
col
如果 pWnd
為 NULL
,則指定將作用中之窗格中的數據行。
pWnd
CWnd
物件的指標。 如果NULL
為 ,則表示 和 col
所row
指定的窗格已設定為使用中。 如果不是 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
裝置內容的指標。