The sections that follow provide descriptions of specific features of the Advanced Docking Windows architecture.
One of the strengths of the docking architecture is that the core docking logic is not tied to a specific parent window. This allows you to plug the docking mechanism into any container window transparently, including frames, dialogs, and generic CWnds without modifying the existing architecture.
Objective Toolkit includes an external interface for hooking into frame window docking.
You can apply our docking logic to any CFrameWnd derived object, including CMDIFrameWnd, CMDIChildWnd, SECFrameWnd, SECMDIFrameWnd, SECWorkbookWnd, and more. Note that the ADW architecture does not require the usage of the Stingray SEC docking frame classes (SECFrameWnd, SECMDIFrameWnd). This enables you to create a framework with a light footprint. In addition, note that you can apply the docking logic to a MDI child frame window.
Another new feature of this architecture is the floating frame MultiDock capability. This feature allows you to dock more than one dockable node inside the same floating window and then re-dock that entire floating window as one entity.
ADW also supports realtime Office-Style drag-and-drop for toolbars. When you have this feature enabled, the contents of a docking operation are updated when the end-user presses the mouse button and drags. In other words, when the end-user presses the mouse button and then drags, he moves the toolbar not a prediction rectangle.
For information on implementing this feature, see Section 21.5.5.
By default, the top and bottom borders receive precedence over the left and right borders. For example, the top and bottom borders always occupy the entire available client width, and the left and right borders shrink to accommodate the height between the top and bottom borders. This mode is configurable so that the left and right borders can receive priority over the top and bottom.
For information on implementing this feature, see Section 21.5.7, "To use alternate border layout logic."
This section describes some of the advanced configuration options available in the Advanced Docking Windows architecture and how to the implement or disable these features.
You can use the SECDockInsertionConstraints insertion constraints object in conjunction with SECFrameDockingFeature::DockNode() to create advanced docking configurations. This mechanism allows reuse of similar constraints across multiple insertions easily. In addition, the relative insertion constraints are automatically updated to reflect the last insertion at each docking call.
The following table lists some of the primary members of SECDockInsertionConstraints. For a comprehensive list, please refer to the Objective Toolkit Class Reference.
Member | Description |
SECLayoutNode* m_pNodeRelative | Docking occurs relative to this node pointer. |
BOOL m_bInsertAfter | If TRUE, newly docked node is positioned after m_pNodeRelative, else before. |
Void SetInsertPosition(UINT nPos,BOOL bAfter=TRUE,BOOL bPrimaryCnstr=TRUE); | Alternative to m_pNodeRelative. If you use this mechanism, a caller can specify a positional index, instead of a concrete relative node pointer. If the position is out of range, it is truncated within the target grid's cell bound. If bPrimaryCnstr is FALSE, this mechanism is only used as a backup when m_pNodeRelative cannot be located. |
BOOL m_bCreateNewLine | If TRUE, a new line is created for the newly docked node, instead of positioning relative on an existing line. |
BOOL m_bDynamicNode | If FALSE, docked node is not bounded by sizing splitters. Note that the parent grid row/column to which it belongs can still have sizing splitters. See SetBorderSizing. |
Int m_nForcedSize | Allows specification of a specific size for the newly inserted node instead of "best fit" insertion. |
Int m_nForcedNewLineSize | If a new line is created (m_bCreateNewLine==TRUE), then this value specifies the line size. |
Void SetDockSite(DWORD dwDockSite) | Allows specification of the dock site via SEC_DOCK_* parameters. |
Void SetDockSite(SECFrameDockingFeatureBase::DockSite site) | Allows specification of the dock site via SECFrameDockingFeatureBase::top, bottom, left, or right. |
For information on using docking insertion constraints, Section 21.5.3, "To use docking insertion constraints."
Copyright © Rogue Wave Software, Inc. All Rights Reserved.
The Rogue Wave name and logo, and Stingray, are registered trademarks of Rogue Wave Software. All other trademarks are the property of their respective owners.
Provide feedback to Rogue Wave about its documentation.