DataMekanix Home Docking Windows Made Easy

home / CSizingControlBar / change log


CSizingControlBar Change Log

CSizingControlBar 2.45 / Apr 16, 2010

  • Maintenance release, fixing some incompatibilities with the newer versions of Visual C++ and MFC. While the sample projects are still VC6, they should now convert and build with VC 2003, 2005, 2008, and 2010.
  • Changed the return value of OnNcHitTest() from UINT to LRESULT.
  • Removed the use of afxChNil.

CSizingControlBar 2.44 / Mar 31, 2002

  • This is a maintenance release. A couple of bug fixes:
  • Fixed the bug that caused the bars using CSCBMiniDockFrameWnd under Windows XP to be shrinked when floating. Thanks to DJ for first pointing this out and to everyone that suggested fixes.
  • Removed an unnecessary call to ReleaseDC in CSizingControlBar::OnNCPaint(), because the CWindowDC destructor releases the device context handle. Thanks to Pat Kusbel, and then Aleksey Malyshev, who both described the bug and sent the fix.

CSizingControlBar 2.43 / Aug 03, 2000

  • Reworked tracking. Now a more aggressive sideways resizing is allowed when more than 2 sizing bars are docked in a row. Growing a bar will shrink successively all other bars in the tracking direction until all reach their minimum size.
  • Fixed a clipping problem which caused the non-client area to be painted incompletely when a bar was docked horizontally and the main window was maximized.
  • Fixed non-client painting for the bars with SCBS_SHOWEDGES style.
  • Recreated the demos. They will work only for VC6 now because of the flat toolbars, but you can fix them easily if you need them to work on VC5. The library files are still VC5 compatible.

CSizingControlBar 2.42 / Feb 10, 2000

  • New mode - Instant Resizing Bar - for simple bars, now you can use directly the CSizingControlBar* classes, without the need of a derived bar class. Thanks to Peter Hauptmann for the suggestion. Some of the changes listed below made this possible.
  • All bars' constructors are now public.
  • New bar style: SCBS_SIZECHILD.
  • Added GetSCBStyle() and SetSCBStyle() to CSizingControlBar for changing the bar style.
  • Added a handler for WM_SIZE (CSizingControlBar::OnSize()). If the bar has the SCBS_SIZECHILD style, the first child found will be automagically resized to fit the client area. Only one child is supported (if there are other children, the function will assert).
  • Moved the empty WM_CLOSE handler from CMyBar to CSizingControlBar in order to protect instant bars form being accidentally destroyed by their children.
  • Fixed the PostMessage() bug.
  • SCBDemo2 contains an instant bar example; also, there are some more tricks added in CMainFrame::OnCreate().

CSizingControlBar 2.41 / Feb 06, 2000

  • Another #define - if you want to have a miniframe with caption and at the same time the floating bar to be dynamic resizable, you can define _SCB_MINIFRAME_CAPTION in addition to _SCB_REPLACE_MINIFRAME. You will still have to set the m_pFloatingFrameClass member in CMainFrame::OnCreate().
  • Added a new virtual function in CSizingControlBarG (which is inherited by CSizingControlBarCF too) : HasGripper(). It makes testing if the bar has to display a gripper handier. See the manual for more info.
  • Integrated the VerifyBarState() function into the samples.
  • Fixed a few minor bugs.

CSizingControlBar 2.4 / Jan 17, 2000

  • The ol' CSizingControlBar class was split in two. Now all the gripper related stuff is in a separate class, CSizingControlBarG, allowing for more refined gripper/non-client area customization. Now you can have grippers all around, if you want :)
  • From now, you will derive your class from CSizingControlBar only if you don't want a gripper, or you implement your own (like CSizingControlBarG does). So, you have to change your base class to CSizingControlBarG or CSizingControlBarCF.
  • Removed the static m_arrBars, using a simpler method to identify the resizable bars.
  • Added a #define flag for the miniframe replacement.
    Use #define _SCB_REPLACE_MINIFRAME before including the headers to enable it. If you don't, the behavior is as in v2.2, full dynamic diagonal resizing when floating being disabled.
  • Fixed a short flicker appearing in the moment when the bar goes floating (the old miniframe caption was painted, then replaced with the gripper). Now the miniframe style change occurs before the window is painted. Thanks to Robin (don't know real name) for pointing it out.
  • Refined the minimum size control. Now you can specify the minimum size for horizontally/vertically docked, and floating states as separate values.
  • Changed the Create() parameter list. The old form is still there (and it works) for compatibility reasons.
  • GlobalLoadState() and GlobalSaveState() now require a pointer to a CFrameWnd (usually the mainframe).

CSizingControlBar 2.31 / Jan 11, 2000

  • Fixed a layout bug in NegotiateSpace(). Thanks to Wagner Rodrigues Santos for reporting it.
  • All source code (including the samples) now compile without warnings on level 4.

CSizingControlBar 2.3 / Dec 12, 1999

  • Added dynamic resizing when floating capability. Two new helper classes were added - CSCBMiniDockFrameWnd and CSCBDockContext. The new resizing code no longer uses the dockcontext, replacing the Robert Wolpow's diagonal resizing.
  • When floating, the miniframe caption is removed, and replaced with the bar gripper. LoadState() was updated with a workaround for floating bars positioning.
  • Made the client area a little larger when floating.
  • The bar changes the caption when WM_SETTEXT is received, so it is now possible to change the bar title programmatically, using SetWindowText(). Both the dockbar and the miniframe are updated if the bar is floating.
  • CSizingControlBar::EnableDocking() asserts if the bar doesn't have the CBRS_SIZE_DYNAMIC style.
  • Fixed the strcmp bug in CSizingControlBarCF - now EnumFontFamilies() is used to check if the Tahoma font is present in the system.
  • CMyBar sample class handles WM_CLOSE to prevent the bar being destroyed when the user hits ESC in the child edit control.

CSizingControlBar 2.2 / Nov 26, 1999

  • Changed OnNCPaint() to use a memory device context for painting. This removes the flicker of the non-client area of the bar (the gripper).
  • Added an extension class, CSizingControlBarCF. It provides an advanced gripper - a text caption showing the title in docked state (when the bar is horizontally docked, the caption is sideways). The caption color changes when a child of the bar sets/loses focus, so no extra code is needed to manage the active flag. If the code is run on Win98/Win2k and gradient title bars are enabled, the caption is painted with gradient even if the app was complied under, say, VC++ 5.0/Win95.

CSizingControlBar 2.1 / Nov 18, 1999

  • Added diagonal resizing when floating capability (based on Robert Wolpow's code - simplified it and removed the dependency of hardwired values).
  • NegotiateSpace() bug fix.

CSizingControlBar 2.0 / Nov 15, 1999

  • Added numbered versions. This release is v2.0.
  • Fixed a bug in the layout of multiple bars/row.
  • The layout section is almost completely rewritten.
  • Made a few performance tweaks, and cleaned up the sources.
  • The official site is now .

Feb 07, 1999

  • Added multiple bars/row docking support.
  • Added the "x" - like button for hiding the bar.
  • Added state persistence support.
  • Made the client area smaller - now you can use GetClientRect() to get the new rectangle for child(ren) position in OnSize().
  • OnUpdateCmdUI() is back in CSizingControlBar. If you use it for updating controls, call the base class' member too.
  • Major rewrite, a few bugs fixed, etc.
Aug 08, 1998
  • Added the dynamic resizing feature.
  • Another Create() fix for VC 6.0.
  • Moved OnUpdateCmdUI() to CMyBar sample derived class.
  • Enforced a maximum size for resizing.
May 18, 1998
  • The control bar color will change automatically if the user changes the system colors.
  • It is no longer necessary to override the RecalcLayout() member function of CMainFrame. The control bar will handle this internally.
  • Simplified the child controls size updating (see mybar.cpp).
  • Replaced IsHorz() member function with IsHorzDocked(). Also added IsVertDocked().
  • Restructured background and non-client painting so you can use memory DC painting in client area.
  • Made public the size member variables. In this way, the size of the control bar can be saved and/or changed anytime you want (see mainfrm.cpp).
  • Added a gripper. It can be disabled if you don't like it.
  • Added a string parameter for the control bar title in Create().
  • Modified Create() to avoid an ASSERT that prevented the code to run under Visual C++ 6.0 .
Jan 10, 1998
  • First release.

Copyright 1998-2019 DataMekanix. All rights reserved.