CSplitterWnd Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CSplitterWnd Class.
Provides the functionality of a splitter window, which is a window that contains multiple panes.
Syntax
class CSplitterWnd : public CWnd
Members
Public Constructors
Name | Description |
---|---|
CSplitterWnd::CSplitterWnd | Call to construct a CSplitterWnd object. |
Public Methods
Name | Description |
---|---|
CSplitterWnd::ActivateNext | Performs the Next Pane or Previous Pane command. |
CSplitterWnd::CanActivateNext | Checks to see if the Next Pane or Previous Pane command is currently possible. |
CSplitterWnd::Create | Call to create a dynamic splitter window and attach it to the CSplitterWnd object. |
CSplitterWnd::CreateScrollBarCtrl | Creates a shared scroll bar control. |
CSplitterWnd::CreateStatic | Call to create a static splitter window and attach it to the CSplitterWnd object. |
CSplitterWnd::CreateView | Call to create a pane in a splitter window. |
CSplitterWnd::DeleteColumn | Deletes a column from the splitter window. |
CSplitterWnd::DeleteRow | Deletes a row from the splitter window. |
CSplitterWnd::DeleteView | Deletes a view from the splitter window. |
CSplitterWnd::DoKeyboardSplit | Performs the keyboard split command, usually "Window Split." |
CSplitterWnd::DoScroll | Performs synchronized scrolling of split windows. |
CSplitterWnd::DoScrollBy | Scrolls split windows by a given number of pixels. |
CSplitterWnd::GetActivePane | Determines the active pane from the focus or active view in the frame. |
CSplitterWnd::GetColumnCount | Returns the current pane column count. |
CSplitterWnd::GetColumnInfo | Returns information on the specified column. |
CSplitterWnd::GetPane | Returns the pane at the specified row and column. |
CSplitterWnd::GetRowCount | Returns the current pane row count. |
CSplitterWnd::GetRowInfo | Returns information on the specified row. |
CSplitterWnd::GetScrollStyle | Returns the shared scroll-bar style. |
CSplitterWnd::IdFromRowCol | Returns the child window ID of the pane at the specified row and column. |
CSplitterWnd::IsChildPane | Call to determine whether the window is currently a child pane of this splitter window. |
CSplitterWnd::IsTracking | Determines if splitter bar is currently being moved. |
CSplitterWnd::RecalcLayout | Call to redisplay the splitter window after adjusting row or column size. |
CSplitterWnd::SetActivePane | Sets a pane to be the active one in the frame. |
CSplitterWnd::SetColumnInfo | Call to set the specified column information. |
CSplitterWnd::SetRowInfo | Call to set the specified row information. |
CSplitterWnd::SetScrollStyle | Specifies the new scroll-bar style for the splitter window's shared scroll-bar support. |
CSplitterWnd::SplitColumn | Indicates where a frame window splits vertically. |
CSplitterWnd::SplitRow | Indicates where a frame window splits horizontally. |
Protected Methods
Name | Description |
---|---|
CSplitterWnd::OnDraw | Called by the framework to draw the splitter window. |
CSplitterWnd::OnDrawSplitter | Renders an image of a split window. |
CSplitterWnd::OnInvertTracker | Renders the image of a split window to be the same size and shape as the frame window. |
Remarks
A pane is usually an application-specific object derived from CView, but it can be any CWnd object that has the appropriate child window ID.
A CSplitterWnd
object is usually embedded in a parent CFrameWnd or CMDIChildWnd object. Create a CSplitterWnd
object using the following steps:
Embed a
CSplitterWnd
member variable in the parent frame.Override the parent frame's CFrameWnd::OnCreateClient member function.
From within the overridden
OnCreateClient
, call the Create or CreateStatic member function ofCSplitterWnd
.
Call the Create member function to create a dynamic splitter window. A dynamic splitter window typically is used to create and scroll a number of individual panes, or views, of the same document. The framework automatically creates an initial pane for the splitter; then the framework creates, resizes, and disposes of additional panes as the user operates the splitter window's controls.
When you call Create, you specify a minimum row height and column width that determine when the panes are too small to be fully displayed. After you call Create, you can adjust these minimums by calling the SetColumnInfo and SetRowInfo member functions.
Also use the SetColumnInfo
and SetRowInfo
member functions to set an "ideal" width for a column and "ideal" height for a row. When the framework displays a splitter window, it first displays the parent frame, then the splitter window. The framework then lays out the panes in columns and rows according to their ideal dimensions, working from the upper-left to the lower-right corner of the splitter window's client area.
All panes in a dynamic splitter window must be of the same class. Familiar applications that support dynamic splitter windows include Microsoft Word and Microsoft Excel.
Use the CreateStatic
member function to create a static splitter window. The user can change only the size of the panes in a static splitter window, not their number or order.
You must specifically create all the static splitter's panes when you create the static splitter. Make sure you create all the panes before the parent frame's OnCreateClient
member function returns, or the framework will not display the window correctly.
The CreateStatic
member function automatically initializes a static splitter with a minimum row height and column width of 0. After you call Create, adjust these minimums by calling the SetColumnInfo and SetRowInfo member functions. Also use SetColumnInfo
and SetRowInfo
after you call CreateStatic
to indicate desired ideal pane dimensions.
The individual panes of a static splitter often belong to different classes. For examples of static splitter windows, see the graphics editor and the Windows File Manager.
A splitter window supports special scroll bars (apart from the scroll bars that panes may have). These scroll bars are children of the CSplitterWnd
object and are shared with the panes.
You create these special scroll bars when you create the splitter window. For example, a CSplitterWnd
that has one row, two columns, and the WS_VSCROLL style will display a vertical scroll bar that is shared by the two panes. When the user moves the scroll bar, WM_VSCROLL
messages are sent to both panes. When the panes set the scroll-bar position, the shared scroll bar is set.
For further information on splitter windows, see:
Knowledge Base article Q262024: HOWTO: Use CPropertySheet as a Child of CSplitterWnd
For more information on how to create dynamic splitter windows, see:
Inheritance Hierarchy
CSplitterWnd
Requirements
Header: afxext.h
CSplitterWnd::ActivateNext
Called by the framework to perform the Next Pane or Previous Pane command.
virtual void ActivateNext(BOOL bPrev = FALSE);
Parameters
bPrev
Indicates which window to activate. TRUE for previous; FALSE for next.
Remarks
This member function is a high level command that is used by the CView class to delegate to the CSplitterWnd
implementation.
CSplitterWnd::CanActivateNext
Called by the framework to check to see if the Next Pane or Previous Pane command is currently possible.
virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
Parameters
bPrev
Indicates which window to activate. TRUE for previous; FALSE for next.
Return Value
Nonzero if successful; otherwise 0.
Remarks
This member function is a high level command that is used by the CView class to delegate to the CSplitterWnd
implementation.
CSplitterWnd::Create
To create a dynamic splitter window, call the Create member function.
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);
Parameters
pParentWnd
The parent frame window of the splitter window.
nMaxRows
The maximum number of rows in the splitter window. This value must not exceed 2.
nMaxCols
The maximum number of columns in the splitter window. This value must not exceed 2.
sizeMin
Specifies the minimum size at which a pane may be displayed.
pContext
A pointer to a CCreateContext structure. In most cases, this can be the pContext
passed to the parent frame window.
dwStyle
Specifies the window style.
nID
The child window ID of the window. The ID can be AFX_IDW_PANE_FIRST unless the splitter window is nested inside another splitter window.
Return Value
Nonzero if successful; otherwise 0.
Remarks
You can embed a CSplitterWnd
in a parent CFrameWnd or CMDIChildWnd object by taking the following steps:
Embed a
CSplitterWnd
member variable in the parent frame.Override the parent frame's CFrameWnd::OnCreateClient member function.
Call the Create member function from within the overridden
OnCreateClient
.
When you create a splitter window from within a parent frame, pass the parent frame's pContext
parameter to the splitter window. Otherwise, this parameter can be NULL.
The initial minimum row height and column width of a dynamic splitter window are set by the sizeMin
parameter. These minimums, which determine whether a pane is too small to be shown in its entirety, can be changed with the SetRowInfo and SetColumnInfo member functions.
For more on dynamic splitter windows, see "Splitter Windows" in the article Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview.
Example
// 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
Called by the framework to create a shared scroll bar control.
virtual BOOL CreateScrollBarCtrl(
DWORD dwStyle,
UINT nID);
Parameters
dwStyle
Specifies the window style.
nID
The child window ID of the window. The ID can be AFX_IDW_PANE_FIRST unless the splitter window is nested inside another splitter window.
Return Value
Nonzero if successful; otherwise 0.
Remarks
Override CreateScrollBarCtrl
to include extra controls next to a scroll bar. The default behavior is to create normal Windows scroll bar controls.
CSplitterWnd::CreateStatic
To create a static splitter window, call the CreateStatic
member function.
virtual BOOL CreateStatic(
CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST);
Parameters
pParentWnd
The parent frame window of the splitter window.
nRows
The number of rows. This value must not exceed 16.
nCols
The number of columns. This value must not exceed 16.
dwStyle
Specifies the window style.
nID
The child window ID of the window. The ID can be AFX_IDW_PANE_FIRST unless the splitter window is nested inside another splitter window.
Return Value
Nonzero if successful; otherwise 0.
Remarks
A CSplitterWnd
is usually embedded in a parent CFrameWnd
or CMDIChildWnd object by taking the following steps:
Embed a
CSplitterWnd
member variable in the parent frame.Override the parent frame's
OnCreateClient
member function.Call the
CreateStatic
member function from within the overridden CFrameWnd::OnCreateClient.
A static splitter window contains a fixed number of panes, often from different classes.
When you create a static splitter window, you must at the same time create all its panes. The CreateView member function is usually used for this purpose, but you can create other nonview classes as well.
The initial minimum row height and column width for a static splitter window is 0. These minimums, which determine when a pane is too small to be shown in its entirety, can be changed with the SetRowInfo and SetColumnInfo member functions.
To add scroll bars to a static splitter window, add the WS_HSCROLL and WS_VSCROLL styles to dwStyle
.
See "Splitter Windows" in the article Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview for more on static splitter windows.
CSplitterWnd::CreateView
Creates the panes for a static splitter window.
virtual BOOL CreateView(
int row,
int col,
CRuntimeClass* pViewClass,
SIZE sizeInit,
CCreateContext* pContext);
Parameters
row
Specifies the splitter window row in which to place the new view.
col
Specifies the splitter window column in which to place the new view.
pViewClass
Specifies the CRuntimeClass of the new view.
sizeInit
Specifies the initial size of the new view.
pContext
A pointer to a creation context used to create the view (usually the pContext
passed into the parent frame's overridden CFrameWnd::OnCreateClient member function in which the splitter window is being created).
Return Value
Nonzero if successful; otherwise 0.
Remarks
All panes of a static splitter window must be created before the framework displays the splitter.
The framework also calls this member function to create new panes when the user of a dynamic splitter window splits a pane, row, or column.
Example
// 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
Call to construct a CSplitterWnd
object.
CSplitterWnd();
Remarks
Construct a CSplitterWnd
object in two steps. First, call the constructor, which creates the CSplitterWnd
object, and then call the Create member function, which creates the splitter window and attaches it to the CSplitterWnd
object.
CSplitterWnd::DeleteColumn
Deletes a column from the splitter window.
virtual void DeleteColumn(int colDelete);
Parameters
colDelete
Specifies the column to be deleted.
Remarks
This member function is called by the framework to implement the logic of the dynamic splitter window (that is, if the splitter window has the SPLS_DYNAMIC_SPLIT style). It can be customized, along with the virtual function CreateView, to implement more advanced dynamic splitters.
CSplitterWnd::DeleteRow
Deletes a row from the splitter window.
virtual void DeleteRow(int rowDelete);
Parameters
rowDelete
Specifies the row to be deleted.
Remarks
This member function is called by the framework to implement the logic of the dynamic splitter window (that is, if the splitter window has the SPLS_DYNAMIC_SPLIT style). It can be customized, along with the virtual function CreateView, to implement more advanced dynamic splitters.
CSplitterWnd::DeleteView
Deletes a view from the splitter window.
virtual void DeleteView(
int row,
int col);
Parameters
row
Specifies the splitter window row at which to delete the view.
col
Specifies the splitter window column at which to delete the view.
Remarks
If the active view is being deleted, the next view will become active. The default implementation assumes the view will auto delete in PostNcDestroy.
This member function is called by the framework to implement the logic of the dynamic splitter window (that is, if the splitter window has the SPLS_DYNAMIC_SPLIT style). It can be customized, along with the virtual function CreateView, to implement more advanced dynamic splitters.
CSplitterWnd::DoKeyboardSplit
Performs the keyboard split command, usually "Window Split."
virtual BOOL DoKeyboardSplit();
Return Value
Nonzero if successful; otherwise 0.
Remarks
This member function is a high level command that is used by the CView class to delegate to the CSplitterWnd
implementation.
CSplitterWnd::DoScroll
Performs synchronized scrolling of split windows.
virtual BOOL DoScroll(
CView* pViewFrom,
UINT nScrollCode,
BOOL bDoScroll = TRUE);
Parameters
pViewFrom
A pointer to the view from which the scrolling message originates.
nScrollCode
A scroll-bar code that indicates the user's scrolling request. This parameter is composed of two parts: a low-order byte, which determines the type of scrolling occurring horizontally, and a high-order byte, which determines the type of scrolling occurring vertically:
SB_BOTTOM Scrolls to bottom.
SB_LINEDOWN Scrolls one line down.
SB_LINEUP Scrolls one line up.
SB_PAGEDOWN Scrolls one page down.
SB_PAGEUP Scrolls one page up.
SB_TOP Scrolls to top.
bDoScroll
Determines whether the specified scrolling action occurs. If bDoScroll
is TRUE (that is, if a child window exists, and if the split windows have a scroll range), then the specified scrolling action can take place; if bDoScroll
is FALSE (that is, if no child window exists, or the split views have no scroll range), then scrolling does not occur.
Return Value
Nonzero if synchronized scrolling occurs; otherwise 0.
Remarks
This member function is called by the framework to perform synchronized scrolling of split windows when the view receives a scroll message. Override to require an action by the user before synchronized scrolling is allowed.
CSplitterWnd::DoScrollBy
Scrolls split windows by a given number of pixels.
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
Parameters
pViewFrom
A pointer to the view from which the scrolling message originates.
sizeScroll
Number of pixels to be scrolled horizontally and vertically.
bDoScroll
Determines whether the specified scrolling action occurs. If bDoScroll
is TRUE (that is, if a child window exists, and if the split windows have a scroll range), then the specified scrolling action can take place; if bDoScroll
is FALSE (that is, if no child window exists, or the split views have no scroll range), then scrolling does not occur.
Return Value
Nonzero if synchronized scrolling occurs; otherwise 0.
Remarks
This member function is called by the framework in response to a scroll message, to perform synchronized scrolling of the split windows by the amount, in pixels, indicated by sizeScroll
. Positive values indicate scrolling down and to the right; negative values indicate scrolling up and to the left.
Override to require an action by the user before allowing scroll.
CSplitterWnd::GetActivePane
Determines the active pane from the focus or active view in the frame.
virtual CWnd* GetActivePane(
int* pRow = NULL,
int* pCol = NULL);
Parameters
pRow
A pointer to an int to retrieve the row number of the active pane.
pCol
A pointer to an int to retrieve the column number of the active pane.
Return Value
Pointer to the active pane. NULL if no active pane exists.
Remarks
This member function is called by the framework to determine the active pane in a splitter window. Override to require an action by the user before getting the active pane.
CSplitterWnd::GetColumnCount
Returns the current pane column count.
int GetColumnCount() const;
Return Value
Returns the current number of columns in the splitter. For a static splitter, this will also be the maximum number of columns.
CSplitterWnd::GetColumnInfo
Returns information on the specified column.
void GetColumnInfo(
int col,
int& cxCur,
int& cxMin) const;
Parameters
col
Specifies a column.
cxCur
A reference to an int
to be set to the current width of the column.
cxMin
A reference to an int
to be set to the current minimum width of the column.
CSplitterWnd::GetPane
Returns the pane at the specified row and column.
CWnd* GetPane(
int row,
int col) const;
Parameters
row
Specifies a row.
col
Specifies a column.
Return Value
Returns the pane at the specified row and column. The returned pane is usually a CView-derived class.
CSplitterWnd::GetRowCount
Returns the current pane row count.
int GetRowCount() const;
Return Value
Returns the current number of rows in the splitter window. For a static splitter window, this will also be the maximum number of rows.
CSplitterWnd::GetRowInfo
Returns information on the specified row.
void GetRowInfo(
int row,
int& cyCur,
int& cyMin) const;
Parameters
row
Specifies a row.
cyCur
Reference to int
to be set to the current height of the row in pixels.
cyMin
Reference to int
to be set to the current minimum height of the row in pixels.
Remarks
Call this member function to obtain information about the specified row. The cyCur
parameter is filled with the current height of the specified row, and cyMin
is filled with the minimum height of the row.
CSplitterWnd::GetScrollStyle
Returns the shared scroll-bar style for the splitter window.
DWORD GetScrollStyle() const;
Return Value
One or more of the following windows style flags, if successful:
WS_HSCROLL If the splitter currently manages shared horizontal scroll bars.
WS_VSCROLL If the splitter currently manages shared vertical scroll bars.
If zero, the splitter window does not currently manage any shared scroll bars.
CSplitterWnd::IdFromRowCol
Obtains the child window ID for the pane at the specified row and column.
int IdFromRowCol(
int row,
int col) const;
Parameters
row
Specifies the splitter window row.
col
Specifies the splitter window column.
Return Value
The child window ID for the pane.
Remarks
This member function is used for creating nonviews as panes and may be called before the pane exists.
Example
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
Determines whether pWnd
is currently a child pane of this splitter window.
BOOL IsChildPane(
CWnd* pWnd,
int* pRow,
int* pCol);
Parameters
pWnd
A pointer to a CWnd object to be tested.
pRow
A pointer to an int
in which to store row number.
pCol
A pointer to an int
in which to store a column number.
Return Value
If nonzero, pWnd
is currently a child pane of this splitter window, and pRow
and pCol
are filled in with the position of the pane in the splitter window. If pWnd
is not a child pane of this splitter window, 0 is returned.
Remarks
In Visual C++ versions prior to 6.0, this function was defined as
BOOL IsChildPane(CWnd* pWnd, int& row, int& col);
This version is now obsolete and should not be used.
CSplitterWnd::IsTracking
Call this member function to determine if the splitter bar in the window is currently being moved.
BOOL IsTracking();
Return Value
Nonzero if a splitter operation is in progress; otherwise 0.
CSplitterWnd::OnDrawSplitter
Renders an image of a split window.
virtual void OnDrawSplitter(
CDC* pDC,
ESplitType nType,
const CRect& rect);
Parameters
pDC
A pointer to the device context in which to draw. If pDC
is NULL, then CWnd::RedrawWindow is called by the framework and no split window is drawn.
nType
A value of the enum ESplitType, which can be one of the following:
splitBox The splitter drag box.
splitBar
The bar that appears between the two split windows.splitIntersection The intersection of the split windows. This element will not be called when running on Windows 95/98.
splitBorder The split window borders.
rect
A reference to a CRect object specifying the size and shape of the split windows.
Remarks
This member function is called by the framework to draw and specify the exact characteristics of a splitter window. Override OnDrawSplitter
for advanced customization of the imagery for the various graphical components of a splitter window. The default imagery is similar to the splitter in Microsoft Works for Windows or Microsoft Windows 95/98, in that the intersections of the splitter bars are blended together.
For more on dynamic splitter windows, see "Splitter Windows" in the article Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview.
CSplitterWnd::OnInvertTracker
Renders the image of a split window to be the same size and shape as the frame window.
virtual void OnInvertTracker(const CRect& rect);
Parameters
rect
Reference to a CRect
object specifying the tracking rectangle.
Remarks
This member function is called by the framework during resizing of splitters. Override OnInvertTracker
for advanced customization of the imagery of the splitter window. The default imagery is similar to the splitter in Microsoft Works for Windows or Microsoft Windows 95/98, in that the intersections of the splitter bars are blended together.
For more on dynamic splitter windows, see "Splitter Windows" in the article Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview.
CSplitterWnd::RecalcLayout
Call to redisplay the splitter window after adjusting row or column size.
virtual void RecalcLayout();
Remarks
Call this member function to correctly redisplay the splitter window after you have adjusted row and column sizes with the SetRowInfo and SetColumnInfo member functions. If you change row and column sizes as part of the creation process before the splitter window is visible, it is not necessary to call this member function.
The framework calls this member function whenever the user resizes the splitter window or moves a split.
Example
See the example for CSplitterWnd::SetColumnInfo.
CSplitterWnd::SetActivePane
Sets a pane to be the active one in the frame.
virtual void SetActivePane(
int row,
int col,
CWnd* pWnd = NULL);
Parameters
row
If pWnd
is NULL, specifies the row in the pane that will be active.
col
If pWnd
is NULL, specifies the column in the pane that will be active.
pWnd
A pointer to a CWnd
object. If NULL, the pane specified by row
and col
is set active. If not NULL, specifies the pane that is set active.
Remarks
This member function is called by the framework to set a pane as active when the user changes the focus to a pane within the frame window. You can explicitly call SetActivePane
to change the focus to the specified view.
Specify pane by providing either row and column, or by providing pWnd
.
CSplitterWnd::SetColumnInfo
Call to set the specified column information.
void SetColumnInfo(
int col,
int cxIdeal,
int cxMin);
Parameters
col
Specifies a splitter window column.
cxIdeal
Specifies an ideal width for the splitter window column in pixels.
cxMin
Specifies a minimum width for the splitter window column in pixels.
Remarks
Call this member function to set a new minimum width and ideal width for a column. The column minimum value determines when the column will be too small to be fully displayed.
When the framework displays the splitter window, it lays out the panes in columns and rows according to their ideal dimensions, working from the upper-left to the lower-right corner of the splitter window's client area.
Example
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
Call to set the specified row information.
void SetRowInfo(
int row,
int cyIdeal,
int cyMin);
Parameters
row
Specifies a splitter window row.
cyIdeal
Specifies an ideal height for the splitter window row in pixels.
cyMin
Specifies a minimum height for the splitter window row in pixels.
Remarks
Call this member function to set a new minimum height and ideal height for a row. The row minimum value determines when the row will be too small to be fully displayed.
When the framework displays the splitter window, it lays out the panes in columns and rows according to their ideal dimensions, working from the upper-left to the lower-right corner of the splitter window's client area.
CSplitterWnd::SetScrollStyle
Specifies the new scroll style for the splitter window's shared scroll-bar support.
void SetScrollStyle(DWORD dwStyle);
Parameters
dwStyle
The new scroll style for the splitter window's shared scroll-bar support, which can be one of the following values:
WS_HSCROLL Create/show horizontal shared scroll bars.
WS_VSCROLL Create/show vertical shared scroll bars.
Remarks
Once a scroll bar is created it will not be destroyed even if SetScrollStyle
is called without that style; instead those scroll bars are hidden. This allows the scroll bars to retain their state even though they are hidden. After calling SetScrollStyle
it is necessary to call RecalcLayout for all the changes to take effect.
CSplitterWnd::SplitColumn
Indicates where a frame window splits vertically.
virtual BOOL SplitColumn(int cxBefore);
Parameters
cxBefore
The position, in pixels, before which the split occurs.
Return Value
Nonzero if successful; otherwise 0.
Remarks
This member function is called when a vertical splitter window is created. SplitColumn
indicates the default location where the split occurs.
SplitColumn
is called by the framework to implement the logic of the dynamic splitter window (that is, if the splitter window has the SPLS_DYNAMIC_SPLIT style). It can be customized, along with the virtual function CreateView, to implement more advanced dynamic splitters.
CSplitterWnd::SplitRow
Indicates where a frame window splits horizontally.
virtual BOOL SplitRow(int cyBefore);
Parameters
cyBefore
The position, in pixels, before which the split occurs.
Return Value
Nonzero if successful; otherwise 0.
Remarks
This member function is called when a horizontal splitter window is created. SplitRow
indicates the default location where the split occurs.
SplitRow
is called by the framework to implement the logic of the dynamic splitter window (that is, if the splitter window has the SPLS_DYNAMIC_SPLIT style). It can be customized, along with the virtual function CreateView, to implement more advanced dynamic splitters.
CSplitterWnd::OnDraw
Called by the framework to draw the splitter window.
virtual void OnDraw(CDC* pDC);
Parameters
pDC
A pointer to a device context.
Remarks
See Also
MFC Sample VIEWEX
CWnd Class
Hierarchy Chart
CView Class
CWnd Class