Objective Toolkit : Chapter 21 Advanced Docking Windows : Advanced Docking Windows Architecture
Advanced Docking Windows Architecture
Internally, ADW is based on the Layout Manager and leverages this inheritance to provide layout management within ADW nodes.
You can use the Layout Manager transparently inside any existing container (CWnd, CView, CDialog, and more). You can also link it to any arbitrary layout element (CWnd control or a non-windowed entity like a bitmap or DC image). For these reasons, the Layout Manager is an ideal infrastructure base for providing a generic docking mechanism.
One of the benefits of the Advanced Docking Window architecture is that you can use it seamlessly with existing ControlBar-based docking windows. The ADW architecture shrinks the client area to accommodate its docking infrastructure the same way an OLE shrinks a frame window's client area to accommodate its own toolbars. This allows any existing dockable controlbars, including MFC’s toolbars and status bar and Stingray’s customizable toolbars/menubars and docking views, to cooperate with no adverse interaction with the ADW docking infrastructure. In addition, because you can wrap any CWnd in a dockable ADW node, you can migrate an existing CControlBar to the advanced architecture.
Some of the main features of this architecture are as follows:
Docking inside an MDI childframe.
Docking between different parent windows (for example, between MDI child and mainframe).
Fixed-sized docking windows. Resizing at run time requires some customization.
Realtime Office-97 style docking (for example, instant docking with no prediction rectangles).
Indefinite nesting of docking windows (a docking window containing docking windows).
Alternate docking layout logic that negotiates left/right first, top-bottom second and more.
Simplified docking API and implementation procedure. Requires less than five lines of code.
Lightweight implementation that does not depend on existing frame window classes. You can use ADW with the MFC frame window classes.