CPane Class

The CPane class is an enhancement of the CControlBar Class. If you are upgrading an existing MFC project, replace all occurrences of CControlBar with CPane.

Syntax

class CPane : public CBasePane

Members

Public Constructors

Name Description
CPane::~CPane Destructor.

Public Methods

Name Description
CPane::AdjustSizeImmediate Immediately recalculates the layout of a pane.
CPane::AllocElements Allocates storage for internal use.
CPane::AllowShowOnPaneMenu Specifies whether the pane is listed in the runtime-generated list of panes for the application.
CPane::CalcAvailableSize Calculates the difference in size between a specified rectangle and the current window rectangle.
CPane::CalcInsideRect Calculates the inside rectangle of a pane, taking into account the borders and grippers.
CPane::CalcRecentDockedRect Calculates the recently docked rectangle.
CPane::CalcSize Calculates the size of the pane.
CPane::CanBeDocked Determines whether the pane can be docked at the specified base pane.
CPane::CanBeTabbedDocument Determines whether the pane can be converted to a tabbed document.
CPane::ConvertToTabbedDocument Converts a dockable pane to a tabbed document.
CPane::CopyState Copies the state of a pane. (Overrides CBasePane::CopyState.)
CPane::Create Creates a control bar and attaches it to the CPane object.
CPane::CreateDefaultMiniframe Creates a mini-frame window for a floating pane.
CPane::CreateEx Creates a control bar and attaches it to the CPane object.
CPane::CreateObject Used by the framework to create a dynamic instance of this class type.
CPane::DockByMouse Docks a pane by using the mouse docking method.
CPane::DockPane Docks the floating pane to a base pane.
CPane::DockPaneStandard Docks a pane by using outline (standard) docking.
CPane::DockToFrameWindow Docks a dockable pane to a frame. (Overrides CBasePane::DockToFrameWindow.)
CPane::DoesAllowSiblingBars Indicates whether you can dock another pane at the same row where the current pane is docked.
CPane::FloatPane Floats the pane.
CPane::GetAvailableExpandSize Returns the amount, in pixels, that the pane can expand.
CPane::GetAvailableStretchSize Returns the amount, in pixels, that the pane can shrink.
CPane::GetBorders Returns the width of the borders of the pane.
CPane::GetClientHotSpot Returns the hot spot for the pane.
CPane::GetDockSiteRow Returns the dock row in which the pane is docked.
CPane::GetExclusiveRowMode Determines whether the pane is in exclusive row mode.
CPane::GetHotSpot Returns the hot spot that is stored in an underlying CMFCDragFrameImpl object.
CPane::GetMinSize Retrieves the minimum allowed size for the pane.
CPane::GetPaneName Retrieves the title for the pane.
CPane::GetResizeStep Used internally.
CPane::GetThisClass Used by the framework to obtain a pointer to the CRuntimeClass object that is associated with this class type.
CPane::GetVirtualRect Retrieves the virtual rectangle of the pane.
CPane::IsChangeState As the pane is being moved, this method analyzes the position of the pane relative to other panes, dock rows, and mini-frame windows, and returns the appropriate AFX_CS_STATUS value.
CPane::IsDragMode Specifies whether the pane is being dragged.
CPane::IsInFloatingMultiPaneFrameWnd Specifies whether the pane is in a multi-pane frame window. (Overrides CBasePane::IsInFloatingMultiPaneFrameWnd.)
CPane::IsLeftOf Determines whether the pane is left of (or above) the specified rectangle.
CPane::IsResizable Determines whether the pane can be resized. (Overrides CBasePane::IsResizable.)
CPane::IsTabbed Determines whether the pane has been inserted in the tab control of a tabbed window. (Overrides CBasePane::IsTabbed.)
CPane::LoadState Loads the state of the pane from the registry. (Overrides CBasePane::LoadState.)
CPane::MoveByAlignment Moves the pane and the virtual rectangle by the specified amount.
CPane::MovePane Moves the pane to the specified rectangle.
CPane::OnAfterChangeParent Called by the framework when the parent of a pane has changed.
CPane::OnBeforeChangeParent Called by the framework when the parent of the pane is about to change.
CPane::OnPressCloseButton Called by the framework when the user chooses the Close button on the caption for the pane.
CPane::OnProcessDblClk Used internally.
CPane::OnShowControlBarMenu Called by the framework when a special pane menu is about to be displayed.
CPane::OnShowControlBarMenu Called by the framework when a special pane menu is about to be displayed.
CPane::PrepareToDock Used internally.
CPane::RecalcLayout Recalculates layout information for the pane. (Overrides CBasePane::RecalcLayout.)
CPane::SaveState Saves the state of the pane to the registry. (Overrides CBasePane::SaveState.)
CPane::SetActiveInGroup Flags a pane as active.
CPane::SetBorders Sets the border values of the pane.
CPane::SetClientHotSpot Sets the hot spot for the pane.
CPane::SetDockState Restores docking state information for the pane.
CPane::SetExclusiveRowMode Enables or disables the exclusive row mode.
CPane::SetMiniFrameRTC Sets the runtime class information for the default mini-frame window.
CPane::SetMinSize Sets the minimum allowed size for the pane.
CPane::SetVirtualRect Sets the virtual rectangle of the pane.
CPane::StretchPaneDeferWndPos Stretches the pane vertically or horizontally based on docking style.
CPane::ToggleAutoHide Toggles auto-hide mode.
CPane::UndockPane Removes the pane from the dock site, default slider, or mini-frame window where it is currently docked. (Overrides CBasePane::UndockPane.)
CPane::UpdateVirtualRect Updates the virtual rectangle.

Protected Methods

Name Description
CPane::OnAfterDock Called by the framework when a pane has been docked.
CPane::OnAfterFloat Called by the framework when a pane has been floated.
CPane::OnBeforeDock Called by the framework when the pane is about to be docked.
CPane::OnBeforeFloat Called by the framework when a pane is about to be floated.

Data Members

Name Description
CPane::m_bHandleMinSize Enables consistent handling of the minimal size for panes.
CPane::m_recentDockInfo Contains recent docking information.

Remarks

Typically, CPane objects are not instantiated directly. If you require a pane that has docking functionality, derive your object from CDockablePane. If you require toolbar functionality, derive your object from CMFCToolBar.

When you derive a class from CPane, it can be docked in a CDockSite and it can be floated in a CPaneFrameWnd.

Inheritance Hierarchy

CObject

CCmdTarget

CWnd

CBasePane

CPane

Requirements

Header: afxPane.h

CPane::AdjustSizeImmediate

Immediately recalculates the layout of a pane.

virtual void AdjustSizeImmediate(BOOL bRecalcLayout = TRUE);

Parameters

bRecalcLayout
[in] TRUE to automatically recalculate the layout of the pane; otherwise, FALSE.

Remarks

Call this method when you dynamically change the layout of a pane. For example, you may want to call this method when you hide or show toolbar buttons.

CPane::AllocElements

Allocates storage for internal use.

BOOL AllocElements(
    int nElements,
    int cbElement);

Parameters

nElements
[in] The number of elements for which to allocate storage.

cbElement
[in] The size, in bytes, of an element.

Return Value

FALSE if memory allocation fails; otherwise, TRUE.

CPane::AllowShowOnPaneMenu

Specifies whether the pane is listed in the runtime-generated list of panes for the application.

virtual BOOL AllowShowOnPaneMenu() const;

Return Value

TRUE if the pane is displayed in the list; otherwise, FALSE. The base implementation always returns TRUE.

Remarks

The AppWizard-generated application contains a menu option that lists panes that it contains. This method determines whether the pane is displayed in the list.

CPane::CalcAvailableSize

Calculates the difference in size between a specified rectangle and the current window rectangle.

virtual CSize CalcAvailableSize(CRect rectRequired);

Parameters

rectRequired
[in] The required rectangle.

Return Value

The difference in width and height between rectRequired and the current window rectangle.

CPane::CalcInsideRect

Calculates the inside rectangle of a pane, including the borders and grippers.

void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

Parameters

rect
[out] Contains the size and offset of the client area of the pane.

bHorz
[in] TRUE if the pane is oriented horizontally; otherwise, FALSE.

Remarks

This method is called by the framework when it has to recalculate the layout for a pane. The rect parameter is filled with the size and offset of the client area of the pane. This includes its borders and grippers.

CPane::CalcRecentDockedRect

Calculates the recently docked rectangle.

void CalcRecentDockedRect();

Remarks

This method updates CPane::m_recentDockInfo.

CPane::CalcSize

Calculates the size of the pane.

virtual CSize CalcSize(BOOL bVertDock);

Parameters

bVertDock
[in] TRUE if the pane is being docked vertically, FALSE otherwise.

Return Value

The default implementation of this method returns a size of (0, 0).

Remarks

Derived classes should override this method.

CPane::CanBeDocked

Determines if the pane can be docked at the specified base pane.

virtual BOOL CanBeDocked(CBasePane* pDockBar) const;

Parameters

pDockBar
[in] Specifies the pane where this pane is to be docked.

Return Value

TRUE if this pane can be docked at the specified docking pane; otherwise, FALSE.

Remarks

This method is usually called by the framework to determine whether a pane can be docked at the specified docking pane. To determine whether the pane can be docked, the method evaluates the pane's currently enabled docking alignment.

You enable docking to the various sides of the frame window by calling CBasePane::EnableDocking.

CPane::CanBeTabbedDocument

Determines if the pane can be converted to a tabbed document.

virtual BOOL CanBeTabbedDocument() const;

Return Value

TRUE if the pane can be converted to a tabbed document; otherwise, FALSE.

Remarks

Override this method in a derived class and return FALSE if you want to prevent a pane from being converted to a tabbed document. A tabbed document will not be listed in the Window Position menu.

CPane::ConvertToTabbedDocument

Converts a dockable pane to a tabbed document.

virtual void ConvertToTabbedDocument(BOOL bActiveTabOnly = TRUE);

Parameters

bActiveTabOnly
[in] Not used in CPane::ConvertToTabbedDocument.

Remarks

Only dockable panes can be converted to tabbed documents. For information, see CDockablePane::ConvertToTabbedDocument.

CPane::CopyState

Copies the state of a pane.

virtual void CopyState(CPane* pOrgBar);

Parameters

pOrgBar
[in] A pointer to a pane.

Remarks

This method copies the state of pOrgBar to the current pane.

CPane::Create

Creates a control bar and attaches it to the CPane object.

virtual BOOL Create(
    LPCTSTR lpszClassName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    DWORD dwControlBarStyle = AFX_DEFAULT_PANE_STYLE,
    CCreateContext* pContext = NULL);

Parameters

lpszClassName
[in] Specifies the name of the Windows class.

dwStyle
[in] Specifies the window style attributes. For more information, see Window Styles.

rect
[in] Specifies the initial size and position of the pParentWnd window, in client coordinates.

pParentWnd
[in, out] Specifies the parent window of this pane.

nID
[in] Specifies the ID of the pane.

dwControlBarStyle
[in] Specifies the style for the pane. For more information, see CBasePane::CreateEx.

pContext
[in, out] Specifies the create context of the pane.

Return Value

TRUE if the pane was created successfully; otherwise, FALSE.

Remarks

This method creates a Windows pane and attaches it to the CPane object.

If you have not explicitly initialized CPane::m_recentDockInfo before you call Create, the parameter rect will be used as the rectangle when floating or docking the pane.

CPane::CreateDefaultMiniframe

Creates a mini-frame window for a floating pane.

virtual CPaneFrameWnd* CreateDefaultMiniframe(CRect rectInitial);

Parameters

rectInitial
[in] Specifies the initial size and position, in screen coordinates, of the mini-frame window to create.

Return Value

The newly created mini-frame window.

Remarks

This method is called by the framework to create a mini-frame window when a pane is floated. The mini-frame window can be of type CPaneFrameWnd or of type CMultiPaneFrameWnd. A multi mini-frame window is created if the pane has the AFX_CBRS_FLOAT_MULTI style.

The runtime class information for the mini-frame window is stored in the CPane::m_pMiniFrameRTC member. You can use a derived class to set this member if you decide to create customized mini-frame windows.

CPane::CreateEx

Creates a control bar and attaches it to the CPane object.

virtual BOOL CreateEx(
    DWORD dwStyleEx,
    LPCTSTR lpszClassName,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID,
    DWORD dwControlBarStyle = AFX_DEFAULT_PANE_STYLE,
    CCreateContext* pContext = NULL);

Parameters

dwStyleEx
[in] Specifies extended window style attributes. For more information, see Extended Window Styles.

lpszClassName
[in] Specifies the name of the Windows class.

dwStyle
[in] Specifies window style attributes. For more information, see Window Styles.

rect
[in] Specifies the initial size and position of the pParentWnd window, in client coordinates.

pParentWnd
[in, out] Specifies the parent window of this pane.

nID
[in] Specifies the ID of the pane.

dwControlBarStyle
[in] Specifies the style for the pane. For more information, see CBasePane::CreateEx.

pContext
[in, out] Specifies the create context for the pane.

Return Value

TRUE if the pane was created successfully; otherwise, FALSE.

Remarks

This method creates a Windows pane and attaches it to the CPane object.

If you have not explicitly initialized CPane::m_recentDockInfo before you call CreateEx, the parameter rect will be used as the rectangle when floating or docking the pane.

CPane::DockByMouse

Docks a pane by using the mouse.

virtual BOOL DockByMouse(CBasePane* pDockBar);

Parameters

pDockBar
[in] Specifies the base pane to which to dock this pane.

Return Value

TRUE if the pane was docked successfully; otherwise, FALSE.

CPane::DockPane

Docks the floating pane to a base pane.

virtual BOOL DockPane(
    CBasePane* pDockBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

Parameters

pDockBar
[in, out] Specifies the base pane to dock this pane to.

lpRect
[in] Specifies the rectangle on the base pane where this pane is to be docked.

dockMethod
[in] Specifies the docking method to use. Available options are as follows:

Option Description
DM_UNKNOWN The framework uses this option when the docking method is unknown. The pane does not store its most recent floating position. You can also use this option to programmatically dock a pane when you do not have to store the recent floating position.
DM_MOUSE Used internally.
DM_DBL_CLICK This option is used when the gripper is double-clicked. The pane is repositioned at its most recent docking position. If the pane is undocked by double-clicking, the pane is repositioned at its most recent floating position.
DM_SHOW This option can be used to programmatically dock the pane. The pane stores its most recent floating position.
DM_RECT The pane is docked in the region that is specified by lpRect.
DM_STANDARD When you use this option, the framework draws the pane as an outline frame while it is being moved.

Return Value

TRUE if the pane was docked successfully; otherwise, FALSE.

Remarks

This method docks the pane to the base pane that is specified by the pDockBar parameter. You must first enable docking by calling CBasePane::EnableDocking.

CPane::DockPaneStandard

Docks a pane by using outline (standard) docking.

virtual CPane* DockPaneStandard(BOOL& bWasDocked);

Parameters

bWasDocked
[in] TRUE if the pane was successfully docked; otherwise, FALSE.

Return Value

This method always returns the this pointer.

Remarks

This method is used only for panes that are derived from the CDockablePane Class. For more information, see CDockablePane::DockPaneStandard.

CPane::DockToFrameWindow

Docks a dockable pane to a frame.

virtual BOOL DockToFrameWindow(
    DWORD dwAlignment,
    LPCRECT lpRect = NULL,
    DWORD dwDockFlags = DT_DOCK_LAST,
    CBasePane* pRelativeBar = NULL,
    int nRelativeIndex = -1,
    BOOL bOuterEdge = FALSE);

Parameters

dwAlignment
[in] The side of the parent frame that you want to dock the pane to.

lpRect
[in] The specified size.

dwDockFlags
[in] Ignored.

pRelativeBar
[in] Ignored.

nRelativeIndex
[in] Ignored.

bOuterEdge
[in] If TRUE and there are other dockable panes at the side that are specified by dwAlignment, the pane is docked outside the other panes, closer to the edge of the parent frame. If FALSE, the pane is docked closer to the center of the client area.

Return Value

FALSE if a pane divider ( CPaneDivider Class) cannot be created; otherwise, TRUE.

Remarks

CPane::DoesAllowSiblingBars

Indicates whether you can dock another pane at the same row where the current pane is docked.

virtual BOOL DoesAllowSiblingBars() const;

Return Value

TRUE if this pane can dock to another pane on the same row as itself; otherwise, FALSE.

Remarks

You can enable or disable this behavior by calling CPane::SetExclusiveRowMode.

By default, toolbars have exclusive row mode disabled and the menu bar has exclusive row mode enabled.

CPane::FloatPane

Floats the pane.

virtual BOOL FloatPane(
    CRect rectFloat,
    AFX_DOCK_METHOD dockMethod = DM_UNKNOWN,
    bool bShow = true);

Parameters

rectFloat
[in] Specifies the location, in screen coordinates, to position the pane when it is floated.

dockMethod
[in] Specifies the docking method to use when the pane is floated. For a list of possible values, see CPane::DockPane.

bShow
[in] TRUE to show the pane when floated; otherwise, FALSE.

Return Value

TRUE if the pane was floated successfully or if the pane cannot be floated because CBasePane::CanFloat returns FALSE; otherwise, FALSE.

Remarks

Call this method to float the pane at the position that is specified by the rectFloat parameter. This method automatically creates a parent mini-frame window for the pane.

CPane::GetAvailableExpandSize

Returns the amount, in pixels, that the pane can expand.

virtual int GetAvailableExpandSize() const;

Return Value

If the pane is docked horizontally, the return value is the available width; otherwise, the return value is the available height.

Remarks

CPane::GetAvailableStretchSize

Returns the amount, in pixels, that the pane can shrink.

virtual int GetAvailableStretchSize() const;

Return Value

The amount, in pixels, that the pane can shrink. If the pane is docked horizontally, this amount is the available width; otherwise, it is the available height.

Remarks

The available stretch size is calculated by subtracting the minimum allowed size for the pane ( CPane::GetMinSize) from the current size ( CWnd::GetWindowRect).

CPane::GetBorders

Returns the width of the borders of the pane.

CRect GetBorders() const;

Return Value

A CRect object that contains the current width, in pixels, of each side of the pane. For example, the value of the left member of the CRect object is the width of the left border.

Remarks

To set the size of the borders, call CPane::SetBorders.

CPane::GetClientHotSpot

Returns the hot spot for the pane.

CPoint GetClientHotSpot() const;

Return Value

Remarks

The hot spot is the point on the pane that the user selects and holds to move the pane. A hot spot is used for smooth animation when the pane is moved from a docked position.

CPane::GetDockSiteRow

Returns the dock row ( CDockingPanesRow Class) in which the pane is docked.

CDockingPanesRow* GetDockSiteRow() const;

Return Value

A CDockingPanesRow* that points to the dock row in which the pane is docked, or NULL if the pane is not docked.

CPane::GetExclusiveRowMode

Determines if the pane is in exclusive row mode.

virtual BOOL GetExclusiveRowMode() const;

Return Value

TRUE if the pane is in exclusive row mode; otherwise, FALSE.

Remarks

For more information about exclusive row mode, see CPane::SetExclusiveRowMode.

CPane::GetHotSpot

Returns the hot spot that is stored in an underlying CMFCDragFrameImpl object.

CPoint GetHotSpot() const;

Return Value

Remarks

The CPane class contains a CMFCDragFrameImpl object, m_dragFrameImpl, that is responsible for drawing the rectangle that appears when the user moves a pane in the standard docking mode. The hot spot is used to draw the rectangle relative to the current mouse position as the user moves the pane.

CPane::GetMinSize

Retrieves the minimum allowed size for the pane.

virtual void GetMinSize(CSize& size) const;

Parameters

size
[out] A CSize object that is filled with the minimum allowed size.

Remarks

CPane::GetPaneName

Retrieves the title for the pane.

virtual void GetPaneName(CString& strName) const;

Parameters

strName
[out] A CString object that is filled with the caption name.

Remarks

The pane title is displayed in the caption area when the pane is docked or floating. If the pane is part of a tabbed group, the title is displayed in the tab area. If the pane is in auto-hide mode, the title is displayed on a CMFCAutoHideButton.

CPane::GetVirtualRect

Retrieves the virtual rectangle of the pane.

void GetVirtualRect(CRect& rectVirtual) const;

Parameters

rectVirtual
[out] A CRect object that is filled with the virtual rectangle.

Remarks

When a pane is moved, the framework stores the original position of the pane in a virtual rectangle. The framework can use the virtual rectangle to restore the original position of the pane.

Do not call methods that are related to virtual rectangles unless you are moving panes programmatically.

CPane::IsChangeState

As the pane is being moved, this method analyzes its position relative to other panes, dock rows, and mini-frame windows, and returns the appropriate AFX_CS_STATUS value.

virtual AFX_CS_STATUS IsChangeState(
    int nOffset,
    CBasePane** ppTargetBar) const;

Parameters

nOffset
[in] Specifies docking sensitivity. For example, a pane that is moved within nOffset pixels from a dock row will be docked.

ppTargetBar
[in] When the method returns, ppTargetBar contains either a pointer to the object to which the current pane should be docked, or NULL if no docking should occur.

Return Value

One of the following AFX_CS_STATUS values:

Value Description
CS_NOTHING The pane is not near a dock site. The framework does not dock the pane.
CS_DOCK_IMMEDIATELY The pane is over a dock site, and the DT_IMMEDIATE style is enabled. The framework docks the pane immediately.
CS_DELAY_DOCK The pane is over a dock site that is either another docking pane or an edge of the main frame. The framework docks the pane when the user releases the move.
CS_DELAY_DOCK_TO_TAB The pane is over a dock site that causes the pane to be docked in a tabbed window. This occurs when the pane is either over the caption of another docking pane or over the tab area of a tabbed pane. The framework docks the pane when the user releases the move.

CPane::IsDragMode

Specifies whether the pane is being moved.

virtual BOOL IsDragMode() const;

Return Value

TRUE if the pane is being moved; otherwise, FALSE.

Remarks

CPane::IsInFloatingMultiPaneFrameWnd

Specifies whether the pane is in a multi-pane frame window ( CMultiPaneFrameWnd Class).

virtual BOOL IsInFloatingMultiPaneFrameWnd() const;

Return Value

TRUE if the pane is in a multi-pane frame window; otherwise, FALSE.

Remarks

Only dockable panes can float in a multi-pane frame window. Therefore, CPane::IsInFloatingMultiPaneFrameWnd always returns FALSE.

CPane::IsLeftOf

Determines whether the pane is left of (or above) the specified rectangle.

bool IsLeftOf(
    CRect rect,
    bool bWindowRect = true) const;

Parameters

rect
[in] A CRect object that is used for comparison.

bWindowRect
[in] If TRUE, rect is assumed to contain screen coordinates; if FALSE, rect is assumed to contain client coordinates.

Return Value

Remarks

If the pane is docked horizontally, this method checks whether its location is left of rect. Otherwise, this method checks whether the location is above rect.

CPane::IsResizable

Specifies whether the pane is resizable.

virtual BOOL IsResizable() const;

Return Value

TRUE if the pane is resizable; otherwise, FALSE.

Remarks

Base CPane objects are not resizable.

The docking manager uses the resizable flag to determine pane layout. Non-resizable panes are always located at the outer edges of the parent frame.

Non-resizable panes cannot reside in docking containers.

CPane::IsTabbed

Determines whether the pane has been inserted into the tab control of a tabbed window.

virtual BOOL IsTabbed() const;

Return Value

TRUE if the pane is tabbed; otherwise, FALSE.

Remarks

The tabbed state is treated separately from the floating, docked, and auto-hide states.

CPane::LoadState

Loads the state of the pane from the registry.

virtual BOOL LoadState(
    LPCTSTR lpszProfileName = NULL,
    int nIndex = -1,
    UINT uiID = (UINT) -1);

Parameters

lpszProfileName
[in] Profile name.

nIndex
[in] Profile index.

uiID
[in] Pane ID.

Return Value

TRUE if the pane state was loaded successfully; otherwise, FALSE.

Remarks

The framework calls this method to load the pane state from the registry. Override it in a derived class to load additional information that is saved by CPane::SaveState.

When you override this method, also call the base method, and return FALSE if the base method returns FALSE.

CPane::m_bHandleMinSize

Enables consistent handling of minimum pane sizes.

AFX_IMPORT_DATA static BOOL m_bHandleMinSize;

Remarks

If one or more docking panes in your application override GetMinSize, or if your application calls SetMinSize, you may want to set this static member to TRUE in order to enable the framework to consistently handle how panes are sized.

If this value is set to TRUE, all panes whose size should be reduced below their minimum size are clipped, not stretched. Because the framework uses window regions for pane sizing purposes, do not change the size of the window region for docking panes if this value is set to TRUE.

CPane::m_recentDockInfo

Contains recent docking information.

CRecentDockSiteInfo m_recentDockInfo;

Remarks

The framework stores the latest docking state information for the pane in this member.

CPane::MoveByAlignment

Moves the pane and the virtual rectangle by the specified amount.

BOOL MoveByAlignment(
    DWORD dwAlignment,
    int nOffset);

Parameters

dwAlignment
[in] Specifies pane alignment.

nOffset
[in] The amount, in pixels, by which to move the pane and the virtual rectangle.

Return Value

Remarks

dwAlignment can be any of the following values:

Value Description
CBRS_ALIGN_TOP Enables the pane to be docked to the top of the client area of a frame window.
CBRS_ALIGN_BOTTOM Enables the pane to be docked to the bottom of the client area of a frame window.
CBRS_ALIGN_LEFT Enables the pane to be docked to the left side of the client area of a frame window.
CBRS_ALIGN_RIGHT Enables the pane to be docked to the right side of the client area of a frame window.
CBRS_ALIGN_ANY Enables the pane to be docked to any side of the client area of a frame window.

If dwAlignment contains the CBRS_ALIGN_LEFT or CBRS_ALIGN_RIGHT flag, the pane and virtual rectangle are moved horizontally; otherwise, if dwAlignment contains the CBRS_ALIGN_TOP or CBRS_ALIGN_BOTTOM flag, the pane and virtual rectangle are moved vertically.

CPane::MovePane

Moves the pane to the specified rectangle.

virtual CSize MovePane(
    CRect rectNew,
    BOOL bForceMove,
    HDWP& hdwp);

Parameters

rectNew
[in] Specifies the new rectangle for the pane.

bForceMove
[in] If TRUE, this method ignores the minimum allowed pane size ( CPane::GetMinSize); otherwise, the pane is adjusted, if necessary, to ensure that it is at least the minimum allowed size.

hdwp
[in] Not used.

Return Value

A CSize object that contains the differences in width and height between the new and old rectangles (old rectangle - rectNew).

Remarks

This method is used only for dockable panes.

CPane::OnAfterChangeParent

Called by the framework when the parent of a pane has changed.

virtual void OnAfterChangeParent(CWnd* pWndOldParent);

Parameters

pWndOldParent
[in, out] The pane's previous parent window.

Remarks

This method is called by the framework when the parent of a pane has changed because of a docking or floating operation.

CPane::OnAfterDock

Called by the framework when a pane has been docked.

virtual void OnAfterDock(
    CBasePane* pBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

Parameters

pBar
[in] This parameter is not used.

lpRect
[in] This parameter is not used.

dockMethod
[in] This parameter is not used.

CPane::OnAfterFloat

Called by the framework after a pane floats.

virtual void OnAfterFloat();

Remarks

You can override this method in a derived class if you want to perform any processing after a pane floats.

CPane::OnBeforeChangeParent

Called by the framework when the parent of the pane is about to change.

virtual void OnBeforeChangeParent(
    CWnd* pWndNewParent,
    BOOL bDelay = FALSE);

Parameters

pWndNewParent
[in, out] Specifies the new parent window.

bDelay
[in] TRUE to delay the global docking layout adjustment; otherwise, FALSE.

Remarks

This method is called by the framework when the parent of the pane is about to change because the pane is being docked or floated.

By default, the pane is unregistered with the docking pane by calling CDockSite::RemovePane.

CPane::OnBeforeDock

Called by the framework when the pane is about to dock.

virtual BOOL OnBeforeDock(
    CBasePane** ppDockBar,
    LPCRECT lpRect,
    AFX_DOCK_METHOD dockMethod);

Parameters

ppDockBar
[in, out] Specifies the pane that this pane is docking to.

lpRect
[in] Specifies the docking rectangle.

dockMethod
[in] Specifies the docking method.

Return Value

TRUE if the pane can be docked. If the function returns FALSE, the docking operation will be aborted.

Remarks

This method is called by the framework when a pane is about to be docked. You can override this method in a derived class if you want to perform any processing before a pane is finally docked.

CPane::OnBeforeFloat

Called by the framework when a pane is about to float.

virtual BOOL OnBeforeFloat(
    CRect& rectFloat,
    AFX_DOCK_METHOD dockMethod);

Parameters

rectFloat
[in] Specifies the position and size of the pane when it is in a floating state.

dockMethod
[in] Specifies the docking method of the pane.

Return Value

TRUE if the pane can be floated; otherwise, FALSE.

Remarks

This method is called by the framework when a pane is about to float. You can override this method in a derived class if you want to perform any processing before the pane finally floats.

CPane::OnPressCloseButton

Called by the framework when the user presses the close button on the caption for the pane.

virtual void OnPressCloseButton();

Remarks

This method is called by the framework when a user presses the Close button on the pane's caption. To receive notifications about the Close event, you can override this method in a derived class.

CPane::OnShowControlBarMenu

Called by the framework when a special pane menu is about to be displayed.

virtual BOOL OnShowControlBarMenu(CPoint point);

Parameters

point
[in] Specifies the menu location.

Return Value

TRUE if the menu can be displayed; otherwise, FALSE.

Remarks

The menu contains several items that enable you to specify the pane's behavior, namely: Floating, Docking, AutoHide, and Hide. You can enable this menu for all panes by calling CDockingManager::EnableDockSiteMenu.

CPane::RecalcLayout

Recalculates layout information for the pane.

virtual void RecalcLayout();

Remarks

If the pane is docked, this method updates the virtual rectangle for the pane by setting its size to the current size of the pane.

If the pane is floating, this method notifies the parent mini-frame to adjust the size of the pane to the size of the mini-frame. The framework ensures that the mini-frame is at least the minimum allowed size for the pane ( CPane::GetMinSize) and resizes the mini-frame if necessary.

CPane::SaveState

Saves the state of the pane to the registry.

virtual BOOL SaveState(
    LPCTSTR lpszProfileName = NULL,
    int nIndex = -1,
    UINT uiID = (UINT) -1);

Parameters

lpszProfileName
[in] Profile name.

nIndex
[in] Profile index.

uiID
[in] Pane ID.

Return Value

TRUE if the state was saved successfully; otherwise, FALSE.

Remarks

The framework calls this method when it saves the state of the pane to the registry. Override SaveState in a derived class to store additional information.

When you override this method, also call the base method, and return FALSE if the base method returns FALSE.

CPane::SetActiveInGroup

Flags a pane as active.

virtual void SetActiveInGroup(BOOL bActive);

Parameters

bActive
[in] A BOOL that specifies whether the pane is flagged as active.

Remarks

When a dockable pane is shown or an auto-hide button is chosen, the corresponding auto-hide pane is marked as active.

The appearance of an auto-hide button that is associated with the pane is based on two factors. If the pane is active, and the static BOOL CMFCAutoHideButton::m_bOverlappingTabs is TRUE, the framework displays the auto-hide button as an icon and a label. For an inactive pane, the framework displays only the auto-hide icon.

If CMFCAutoHideButton::m_bOverlappingTabs is FALSE, or if the pane is not located in a group, the framework displays the associated auto-hide button as an icon and a label.

CPane::SetBorders

Sets the border values of the pane.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

Parameters

cxLeft
[in] Specifies the width, in pixels, of the left border of the pane.

cyTop
[in] Specifies the width, in pixels, of the top border of the pane.

cxRight
[in] Specifies the width, in pixels, of the right border of the pane.

cyBottom
[in] Specifies the width, in pixels, of the bottom border of the pane.

lpRect
[in] A CRect object that contains the width, in pixels, of each border of the pane.

Remarks

Call this function to set the sizes of the pane's borders.

CPane::SetClientHotSpot

Sets the hot spot for the pane.

void SetClientHotSpot(const CPoint& ptNew);

Parameters

ptNew
[in] A CPoint object that specifies the new hot spot.

Remarks

The hot spot is the point on the pane that the user selects and holds to move the pane. A hot spot is used for smooth animation when the pane is dragged from a docked position.

CPane::SetDockState

Restores docking state information for the pane.

virtual void SetDockState(CDockingManager* pDockManager);

Parameters

pDockManager
[in] Pointer to the docking manager for the main frame window.

Remarks

This method is called by the framework to restore recent docking state information for the pane. A pane stores recent docking state information in CPane::m_recentDockInfo. For more information, see the CRecentDockSiteInfo Class.

You can also call this method to set the docking state when you load pane information from an external source.

CPane::SetExclusiveRowMode

Enables or disables the exclusive row mode.

virtual void SetExclusiveRowMode(BOOL bExclusive = TRUE);

Parameters

bExclusive
[in] TRUE to enable exclusive row mode; otherwise, FALSE.

Remarks

Call this method to enable or disable exclusive row mode. When a pane is in exclusive row mode, it cannot share the same row with any other toolbars.

By default, all toolbars have exclusive row mode disabled and the menu bar has exclusive row mode enabled.

CPane::SetMinSize

Sets the minimum allowed size for the pane.

void SetMinSize(const CSize& size);

Parameters

size
[in] A CSize object that contains the minimum allowed size for the pane.

Remarks

CPane::SetVirtualRect

Sets the virtual rectangle of the pane.

void SetVirtualRect(
    const CRect& rect,
    BOOL bMapToParent = TRUE);

Parameters

rect
[in] A CRect object that specifies the virtual rectangle to be set.

bMapToParent
[in] Specify TRUE if rect contains points relative to the parent window.

Remarks

A virtual rectangle stores the original position of a pane when it is moved. The framework can use the virtual rectangle to restore the original position.

Do not call methods that are related to virtual rectangles unless you are moving panes programmatically.

CPane::SetMiniFrameRTC

Sets the runtime class information for the default mini-frame window.

void SetMiniFrameRTC(CRuntimeClass* pClass);

Parameters

pClass
[in, out] Specifies the runtime class information for the mini-frame window.

Remarks

When a pane is floated, it is put on a CPaneFrameWnd (mini-frame) window. You can provide a custom CPaneFrameWnd-derived class that will be used when CPane::CreateDefaultMiniframe is called.

CPane::StretchPaneDeferWndPos

Stretches the pane vertically or horizontally based on docking style.

virtual int StretchPaneDeferWndPos(
    int nStretchSize,
    HDWP& hdwp);

Parameters

nStretchSize
[in] The amount, in pixels, to stretch the pane. Use a negative value to shrink the pane.

hdwp
[in] Not used.

Return Value

The actual amount, in pixels, that the pane was stretched.

Remarks

If necessary, this method modifies nStretchSize to ensure that the pane does not exceed size limits. These limits are obtained by calling CPane::GetAvailableStretchSize and CPane::GetAvailableExpandSize.

CPane::ToggleAutoHide

Toggles auto-hide mode.

virtual void ToggleAutoHide();

Remarks

Call this method to toggle auto-hide mode. A pane must be docked to a main frame window in order to be switch to auto-hide mode.

CPane::UndockPane

Removes the pane from the dock site, default slider, or mini-frame window where it is currently docked.

virtual void UndockPane(BOOL bDelay = FALSE);

Parameters

bDelay
[in] If FALSE, the framework calls CBasePane::AdjustDockingLayout to adjust the docking layout.

Remarks

Use this method to programmatically undock a pane.

CPane::UpdateVirtualRect

Updates the virtual rectangle.

void UpdateVirtualRect();
void UpdateVirtualRect(CPoint ptOffset);
void UpdateVirtualRect(CSize sizeNew);

Parameters

ptOffset
[in] A CPoint object that specifies an offset by which to shift the pane.

sizeNew
[in] A CSize object that specifies a new size for the pane.

Remarks

The first overload sets the virtual rectangle by using the current position and size of the pane.

The second overload shifts the virtual rectangle by the amount that is specified by ptOffset.

The third overload sets the virtual rectangle by using the current position of the pane and the size that is specified by sizeNew.

See also

Hierarchy Chart
Classes
CBasePane Class