Professional UI Solutions
Site Map   /  Register

Version 2.85 - May 23, 2009

Release Notes

Version 2.85 introduces a formula grid control with functionality similar to a Microsoft Excel spreadsheet, a set of geographic controls for editing and displaying latitude and longitude data and a lot of improvements to the generic grid control including region-based cell management and clipboard and OLE drag-and-drop support.

What's New


  • Added a set of classes that implement the functionality of an Excel-like spreadsheet (see screenshot):
    • CExtFormulaGridWnd, a spreadsheet.
    • CExtFormulaGridCell, an extended OLE variant data cell with the ability of storing and editing formulas.
    • CExtFormulaAlphabet, a class that parses and converts a string into a valid cell reference, which identifies the location of a cell or group of cells in the spreadsheet.
    • CExtFormulaDataManager, a class that manages formulas and named cell ranges.
    • CExtFormulaFunction, a function object.
    • CExtFormulaFunctionSet, a container for all supported functions.
    • CExtFormulaItem, a compiled formula tree node.
    • CExtFormulaValue, the result of a formula calculation or a parameter of a function.
    • CExtFormulaValueArray, a simple and handy array for storing CExtFormulaValue objects.
    • CExtGridDataProviderSparse, an in-memory grid data provider for managing large two-dimensional arrays of grid cells. It is the default data provider for the CExtFormulaGridWnd.
    • CExtGR2D, a range of cells that can consist of one or more rectangular ranges of grid cells. It can be used both with CExtGridWnd and CExtFormulaGridWnd.
  • Added SelectionRangeGet() and SelectionRangeSet() methods to the CExtGridBaseWnd, which allows you to determine which cells are selected and set the selection to an arbitrary set of cells.
  • Added a FormulaGrid sample that demonstrates the features of CExtFormulaGridWnd and CExtGridWnd:
    • on-the-fly formula calculation
    • syntax highlighting formula editor with auto complete pop-up list boxes
    • highlighted and editable cell ranges
    • rich tool tips
    • named ranges
    • sparse data provider
    • standard copy, cut, paste commands compatible with Microsoft Excel, Open Office Calc and text editors
    • delete selection and clear formatting for any cell ranges
    • OLE drag-and-drop between processes
    • import from/export to Microsoft Excel
    • styling grid cells with fonts and colors
    • formula grid extensions like a formula bar, a name manager and a value watch window
    • CExtRibbonBar control with simplified layout and selected cell ranges changing their visual appearance on mouse hover over a ribbon gallery.
  • Added drag-and-drop support for CExtGridWnd-based windows. You can configure this feature by adding or removing the following advanced grid styles:
  • Added AdvGetStyle() and AdvModifyStyle() methods to the CExtGridWnd class. The methods allow you to manage the advanced grid styles.
  • Added the following virtual methods to the CExtGridWnd class for handling drag-and-drop operations with grid cells:
    • OnGridDropTarget***()
    • OnGridDropSource***()
    • OnGridDataDndComplete()
  • CExtGridWnd now supports the standard copy, cut, paste and other commands and keyboard shortcuts. You can specify which commands are enabled by assigning a combination of __EGSA_*** flags to the CExtGridBaseWnd::m_dwSupportedAccelCommands property. The following virtual methods are added:
    • CExtGridBaseWnd::OnGbwQuerySupportedAccelCommands()
    • CExtGridBaseWnd::OnGbwAccelCommand()
    • CExtGridCell::OnAccelCommand()
    • CExtGridCell::OnAccelCommandComplete()
    • CExtGridCell::TextSetOnPaste()
  • Added a set of CExtGridWnd::GridClipboard***() methods and CExtGridWnd::OnGridQueryClipboard***() overridables for managing the private clipboard format of a grid control. The clipboard format is used by both drag-and-drop and clipboard copy/paste features of the CExtGridWnd plain grid control and CExtFormulaGridWnd formula grid control.
  • Added __EGWS_BSE_WALK_HORZ_NO_EDIT and __EGWS_BSE_WALK_VERT_NO_EDIT grid styles, which, when applied, disable editing the focused cell after pressing the left/right or up/down arrow key in an edited cell.
  • Added a set of the CExtGridWnd::OnGridCellPopupListBox***() virtual methods for handling events from built-in list boxes in cells in CExtGridWnd-derived classes.
  • Added a CExtGridWnd::OnGridFilterInplaceEditingMessageLoop() virtual method that allows you to filter out the message loop being tracked by a cell's in-place editor.
  • Added a __EGWS_BSE_EDIT_RETURN_MOVES_NEXT_ROW grid style that sets focus on a cell in the next row when the user presses Enter on the edited cell.
  • Added a CExtGridCellLL class that implements a geographic longitude/latitude input grid cell.
  • Added a __EGWS_BSE_EDIT_F2_CLICK grid style that turns on in-place editor activation when F2 pressed.
  • Added a CExtGridCell::OnQueryDrawTextFlagsForInplaceEdit virtual method that allows you to use a text alignment in the in-place activated cell editor control different from the alignment in the non-edited grid cell.
  • Added a CExtGridCell::OnAdjustMeasureTextFlags virtual method that enables the grid cell’s text measurement control.
  • Added a hWndParentForEditor parameter to the OnInplaceControlCreate(), OnGridCellInplaceControlCreate() and OnGbwBeginEdit() methods of the CExtGridBaseWnd class. This allows you to create the in-place cell editor window outside the grid window.
  • Added support for colored text and background printing/previewing to the CExtPPVW template class so now all Prof-UIS grids support this feature. You can now indicate that the colors should be also applied to the printing by specifying the new __ECS_PPV constant when setting the colors using the CExtGridCell::TextColorSet() and CExtGridCell::BackColorSet() methods.
  • Added support for merged cells to the CExtPPVW template class so the printing/print preview for the CExtGridWnd and CExtTreeGridWnd classes now supports this feature.
  • Added bExpandedOnly and bIncludeHidden parameters to the CExtTreeGridWnd::ItemGetVisibleIndexOf() method.
  • The CExtTreeGridWnd::ItemCellJoinAdjustCoordinates() method now allows you to find the top/left corner cells in each merged cell area in the tree grid control for further merged area modifications.
  • Added BrowseNext(), BrowsePrev(), ItemGetNext(), ItemGetPrev(), ItemGetIndexOf() and ItemGetSiblingIndex() methods to the CExtPropertyItem class.


  • Added a CExtLLEditWnd class that implements a geographic longitude/latitude input control with on-the-fly text validation.
  • Added a CExtLLMapWnd class that implements a geographic longitude/latitude control that displays a world map with city markers and highlighted time zones. The control allows the user to specify a longitude and/or a latitude by selecting a map point.
  • Added a CExtCheckComboBox class that implements a combo box with a check box next to each item in the list box. It also features an edit with a text string of concatenated checked list items separated by a locale-specific separator.
  • Added a GeoControls sample that demonstrates the features of the CExtLLEditWnd and CExtLLMapWnd classes (see screenshot).


  • Added __DIT_FILL_2007 and __DIT_CHAR_2007 values to the CExtBarColorButton::e_def_icon_type_t enumeration, which define a fill color icon and a character color icon for the color picker toolbar button.
  • Added OnRibbonPrepareBarContextMenu() and OnRibbonPrepareButtonContextMenu() virtual methods to the CExtRibbonBar, which allow you to modify the default context menu over the ribbon bar.
  • Added a CExtPopupMenuTipWnd::m_bNoHideDetection flag that keeps advanced tip windows visible.
  • Added a CExtPopupMenuTipWnd::g_bEnableAdvTips static flag that disables all advanced tips globally.
  • Added a CExtPopupMenuTipWnd::m_fontAdvTip property that allows you to specify a custom font for the advanced tip window.
  • The CExtScrollItemWnd::Create() method is now virtual and its dwWindowStyle parameter’s default value is now WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN.
  • Added m_dwAttributeFilterAny, m_dwAttributeFilterAllPresent and m_dwAttributeFilterAllAbsent properties to the CExtShellComboBox class so that you can filter shell items. The same properties are now present in the CExtShellTreeCtrl and CExtShellListCtrl classes.
  • Added a CExtShellDialogFile::m_pidlRoot property. The same property is now present in the CExtShellDialogBrowseFor class.
  • Added a CExtShellDialogFile::m_bEnableButtonCreateNewFolder and CExtShellDialogFile::m_bEnableButtonDelete flags to allow you to disable persistently the Create New folder and Delete buttons in the shell file dialog.
  • Added a CExtCmdIcon::CreateIndeterminatedSquareIcon() method.
  • Added a CExtBitmap::FromColor() method that creates a bitmap object with a solid color and specified transparency level. Such a bitmap can be very handy for highlighting screen areas.
  • Added m_bHandleAltKeyCodes and g_hWndEditInAltKeyCodeMode properties to the CExtEditBase, which allow you to perform and control the Alt-based character code input in the Prof-UIS edit control.
  • Added a CExtTreeCtrl::OnTreeItemDoDragDetect() virtual method which sends a TVN_BEGINDRAG notification to the parent window of the tree control.
  • Added g_bMRU_UseFullPathsInMenu and g_bMRU_UseFullPathsInTipTool static flags to the CExtPopupMenuWnd, which allow you to display full file paths in MRU menu items and/or tooltips displayed over them.
  • Removed the __EXT_MB_DEFAULT_CHECKED message box style due to conflict with other styles. Added a __EXT_MB_EX_CHECK_BOX_IS_NOT_CHECKED_INTIALLY extended style instead.
  • Added a __ETWS_EX_NO_PREFIX extended tab window style that makes tab item text painting based on the DT_NOPREFIX flag.
  • The quick access toolbar's customization dialog page in the ribbon bar's options dialog now supports an independent command category with commands from the ribbon bar's file menu only.
  • The CExtColorDlg class dialog now supports persistence for dialog window position and color selection mode.

Bug Fixes

  • Fixed incorrect scaling of printed/previewed content in the CExtPPVW template class.
  • The WM_MOVING and WM_SIZING messages are now supported by the windows with skinned non-client areas.
Previous: Version 2.84