Professional UI Solutions
Site Map   /  Register
 
 
 

Version 2.51 - December 12, 2005

Release Notes

Prof-UIS 2.51 is an intermediate release which is available for registered users. The evaluation version is available on your request.

The major new feature is the skinning support, which is based on an XML file that describes the hierarchy of GUI elements and how they are painted in the application. The PNG (Portable Network Graphics) format used for all images makes it possible to support alpha blending for all Windows OSes starting from Windows 95 / NT 4.0. The skinning module also supports custom window borders and captions. The current version features the Black Diamond skin with other skins coming soon. You can download and play with a new MDI application (the Skinable sample), which demonstrates a slick, Longhorn/Vista-like interface implemented with skins.

The other features include the AutoFilter Pop-Up List support for the combo box, enhanced spin control, and more.

What's New

  • Added a new ProfSkin module which makes the user interface skinnable. The implemented skinning architecture is based on an XML file that describes the hierarchy of GUI elements and how they are painted in the application. The PNG (Portable Network Graphics) format used for all images, which are rendered with the ZLib library, makes it possible to support alpha blending for all Windows OSes starting from Windows 95 / NT 4.0. The skinning module also supports custom window borders and captions. The current version features the Black Diamond skin (299 images) with other skins coming soon.
  • Added a new Skinable sample application which demonstrates the skinning capabilities including alpha blending in controls and custom window borders and captions.
  • Added CExtDynamicBarSite::OnDbsCreateDynamicMDIChildWndInstance() and CExtDynamicControlBar::OnCreateDynamicMDIChildWndInstance() to the CExtDynamicBarSite() and CExtDynamicControlBar() classes. This allows you to create user defined MDI child frame windows (CExtDynamicMDIChildWnd-derived class) for dynamic resizable control bars when in the MDI mode. This feature is demonstrated in the Skinable sample where MDI child frames have skinning captions. Besides the CExtDynamicControlBar::OnMoveChildToDocument() and CExtDynamicControlBar::OnMoveChildToBar() became virtual so you can catch switching to/from the document mode. Finally, the dynamic control bars now have an improved command handling API. A new CExtDynamicBarSite::OnCmdMsgOneBar() virtual method allows you to handle and update the command associated with only one particular dynamic bar. The CExtDynamicControlBar::OnQueryUseCheckMarkCommand() and CExtDynamicBarSite::OnDbsQueryUseCheckMarkCommand() methods were added to control the command handling and optionally implement the check-mark behavior like in toolbars.
  • Added CExtNcFrameImpl, CExtNcFrameWatchMDI and CExtNCW classes that implement the custom window border and caption.
  • Added CExtPmBridge class for monitoring notifications from the paint manager.
  • Added a new CExtSpinWnd class which extends the standard up-down common control (the spin control). The control has a consistent look when attached to the CExtEdit window and is also used in the updated CExtColorDlg and CExtDurationWnd classes.
  • Added two new CExtWndShadow::Paint() overloads. With added parameters you can specify which paint manager should be used for painting theme-based shadow effects.
  • Added support for throwing out or suppressing exceptions that may be thrown during serialization of the GUI state. The bEnableThrowExceptions boolean parameter was added to the following methods:
    • CExtControlBar::ProfileBarStateSerialize()
    • CExtControlBar::ProfileBarStateLoad()
    • CExtControlBar::ProfileBarStateSave()
    • CExtDynamicBarSite::StateSerialize()
    • CExtDynamicBarSite::StateLoad()
    • CExtDynamicBarSite::StateSave()
    • CExtCmdManager::FileObjFromRegistry()
    • CExtCmdManager::FileObjToRegistry()
    • CExtCmdProfile::SerializeState() (two overloads)
    • CExtCmdManager::SerializeState() (two owerloads)
    • CExtCustomizeSite::CustomizeStateLoad()
    • CExtCustomizeSite::CustomizeStateSave()
    • CExtCustomizeSite::CustomizeStateSerialize()
    Thanks to Jonas for requesting this feature!
  • Changed the parameters of the CExtToolControlBar::OnGetToolbarFont() method to provide more detailed information about the requested font.
  • Added a CExtTabWnd::GetHoverTrackingItem() method, which returns an index of the tab whose hovered state is being tracked by the tab window.
  • Added a CExtStatusControlBar::OnQueryDrawPaneSeparatorsInsteadOfBorders() virtual method, which allows you to control how the status bar looks like on the fly.
  • The CExtPopupMenuWnd::OnQueryMenuBorderSize() virtual method is replaced with a new CExtPopupMenuWnd::OnQueryMenuBorderMetrics() virtual method which provides more detailed information about the menu border. This method is used in the ProfSkin module.
  • Adjusted the size of buttons both in the tab window and control bar caption to get the more consistent look.
  • Added CExtGridCellColor::m_bEnableButtonDefaultColor and CExtGridCellColor::m_clrDefault properties which allow you to specify whether the Default Color button in the color picker menu should fire the color changing event.
  • Added CExtGridCellColor::m_sBtnTextColorRandom, CExtGridCellColor::m_sBtnTextColorCustom and CExtGridCellColor::m_sBtnTextColorDefault properties which allow you to change text on the Random Color and Custom Color ... buttons in the color picker menu.
  • Added CExtTabPageContainerWnd::PageCenterTextSet() and CExtTabPageContainerWnd::PageCenterTextGet() methods which allow you to center text for the specified tab item in the tab page container independently of other tabs.
  • Added a number of tear-off menus to the updated version of the BitmapEditor sample.
  • Added CExtResourceManager::GetTimeFormat() and CExtResourceManager::GetDateFormat() methods which return locale-dependant date/time format information.
  • Added a bUpdate parameter to the following methods of the date/time input control: CExtDateTimeWnd::SetDateTime() (all the overloaded versions), CExtDateTimeWnd::SetDate(), and CExtDateTimeWnd::SetTime().
  • Added a CExtGridCellDateTime::IsItemVisible() virtual method which allows you to control the visibility of each date/time field.
  • Added support for AutoFilter Pop-Up List box in the CExtComboBox class. When the user types in the built-in combo box edit, the popup list box appears. This list box displays only those items that match the text being typed in, which is similar to the address combo box in Internet Explorer. By default, AutoFilter is turned off. To turn it on just set the m_bEnableAutoFilter property to true. When the user selects any item from the list box, the CBN_SELENDOK notification message is sent and you can handle the selection event as usual.
  • Added CExtGroupBox::SetTextColor() and CExtGroupBox::GetTextColor() methods that allows you to set/get a custom text color in the group box caption.
  • Added ItemFind() method (two overloads) to the CExtPageNavigatorWnd class, which allows you to find the first page by its name (the sText parameter) or by the user data associated with the page (the lParam parameter) with search starting after the page specified by nIndexStart.
  • Prof-UIS is now localized to Bulgarian and Romanian. Thanks to Krasimir and Bokor!

BUG FIXES

  • Fixed a bug in the CExtGridCellColor class, when the color selection common dialog (MFC's CColorDialog class) was not initialized with the current color.
  • Fixed a minor bugs in the CExtGridCellComboBox class related to the enumeration mode.
  • Fixed minor bugs in the CExtTabbedToolControlBar class, when tabs were drawn incorrectly.
  • Fixed a bug in the CExtButton class, when to text alignment specified in the dialog template resource for the button was not detected correctly.
  • Fixed a bug in the CExtStatusControlBar window, when the window flickered in some cases.
Previous: Version 2.50