This article replaces my former article "Dynamic child window positioning"
See the what's new section to find our whether it's worth changing your code.
What's this article about ?
I'll introduce you to some of my code that has will make your windows support automatic
repositioning of their child controls.
I'll call such windows dynamic (since they don't have a static size and child control orderung but dynamic ones):
What classes are part of this release ?
- cdxCDynamicWnd, cdxCDynamicWndEx
General base class(es) used to implement dynamic child window repositioning in any CWnd derived class.
A CDialog replacement that allows you to dynamically move your controls.
The same as a dialog base-class for child window dialogs.
A CFormView, now supports the scrollbars, knows its own size perfectly and stuff !
- cdxCDynamicPropSheet, cdxCDynamicPropPage
The dynamic CPropertySheet / CPropertyPage replacement.
- cdxCDynamicBar, cdxCDynamicBarDlg and cdxCDynamicBarT<>
A controlbar with an embedded dialog that is dynamically moving its childs.
The bar itself is derived from the CSizingControlBar published at codeguru's by Cristi Posea
- New and better code :)
This is why we can not simply replace a cdxCDynamicControlsManager code into a cdxCDynamicWnd code :(
- Now works with HWNDs and IDs instead of CWnds.
Therefore you don't need to explicitely create DDX control variables anymore. *
- Supports "dynamic maps" - as known from message map macros.
These maps map IDs to a resizable control. *
- Now uses ::DeferWindowPos() instead of ::SetWindowPos() to decrease
flickering (for all classes). *
- Anti-Flickering system for cdxCDynamicDialog (looks much better !). *
- Supports scrolling in CFormView (and any other class, if you enable it
by hand). *
- "Auto-Positioning" feature for dynamic dialogs & property
- Support for dialogs that are meant to be "child control dialogs"
- if often embedd dialogs and this class helps to make your child controls remain in a
suitable place :)
- A ControlBar solution.
* ~ Suggested by users of my cdxCDynamicControlsManager :)
However, since I rewrote much of the code of the cdxCDynamicControlsManager, you cannot switch from that class to my new cdxCDynamicWnd without further work to be done; converting a cdxCSizingDialog into a cdxCDynamicDialog would need help by you.
A documentation file is included in the sub-directory codex/doc/cdxCDynamicWnd-DOC.html
Any suggestions & bug-reports are welcome.