Results 1 to 40 of 3745

Thread: CommonControls (Replacement of the MS common controls)

Threaded View

  1. #1

    Thread Starter
    PowerPoster
    Join Date
    Jun 2012
    Posts
    2,389

    CommonControls (Replacement of the MS common controls)

    This project is intended to replace the MS common controls for VB6.

    The "MSCOMCTL.OCX" (respectively "COMCTL32.OCX") can be replaced completly.
    The "MSCOMCT2.OCX" (respectively "COMCT232.OCX") can be replaced completly.
    The "RICHTX32.OCX" can be replaced completly.
    The "COMDLG32.OCX" can be replaced completly.
    The "COMCT332.OCX" can be replaced completly.
    The "MCIWNDX.OCX" (shipped with VB5) can be replaced completly.
    The "SYSINFO.OCX" can be replaced completly.

    Following controls are available at the moment:

    - Animation
    - CheckBoxW
    - ComboBoxW
    - CommandButtonW
    - CommandLink
    - CoolBar
    - CommonDialog (Class Module)
    - DTPicker
    - FontCombo
    - FrameW
    - HotKey
    - ImageCombo
    - ImageList
    - IPAddress
    - LabelW
    - LinkLabel
    - ListBoxW
    - ListView
    - MCIWnd
    - MonthView
    - OptionButtonW
    - Pager
    - ProgressBar
    - RichTextBox
    - Slider
    - SpinBox
    - StatusBar
    - SysInfo
    - TabStrip
    - TextBoxW
    - ToolBar
    - TreeView
    - UpDown
    - VirtualCombo
    - VListBox
    - WindowedLabel

    Unicode is supported for all the stated controls. Also these are full DPI-Aware and ready for 64-bit.

    At design-time (IDE) there is only one dependency. (OLEGuids.tlb)
    This is a modified version of the original .tlb from the vbaccelerator website.
    But for the compiled .exe there are no dependencies, because the .tlb gets then compiled into the executable.

    Everything should be self explained, because all functions and properties have a description.

    The source code of the project can also be viewed on GitHub.

    This Demo shows of how to make the ToolBar control accessible per shortcut key on a MDIForm.

    ActiveX Control version, together with a Registration-Free (Side-by-side) solution:
    Version 1.7

    Thanks to MountainMan for the
    Documentation and Update/Compile Utility

    Notes:
    - When using the SetParent or MoveWindow API, pass .hWndUserControl and not .hWnd.
    - When changing the "Project Name", have all forms open, else all properties are lost. Because the library to which the controls are referring to is the "Project Name" itself. Having all forms open will ensure that the .frx files will be updated with the new "Project Name".

    List of revisions:
    Code:
    12-Apr-2024
    - Included the Resize event in the FrameW control. (like the VB.Picture control)
      A control container should have such event to re-arrange it's contained controls.
      However, the VB.Frame control does not have it.
    10-Apr-2024
    - Included the AlwaysFindExact property in the ComboBoxW/FontCombo/VirtualCombo control. (LB_FINDSTRING -> LB_FINDSTRINGEXACT)
      This also changes the behavior of automatically selecting an item when the user drops down the list of the control.
    23-Mar-2024
    - Accelerator keys support in a VBA environment. (PreTranslateMsg)
    07-Feb-2024
    - Included the BorderStyle property in the ProgressBar control.
    30-Jan-2024
    - Included the OLEDragDropScrollOrientation property in the ListView control.
    24-Jan-2024
    - Included the AllowDropFiles property and DropFiles event in the ListView control.
    - Included the Transparent property in the TabStrip control.
    21-Jan-2024
    - Included the OLEDragMode property in the RichTextBox control.
    18-Jan-2024
    - CoolBar control accepts now child objects that do not expose a hWnd property.
      New function GetWindowFromObject in VTableHandle.bas.
    17-Jan-2024
    - Included the MousePointer property in the UpDown control. (not exist in MS UpDown)
    - DownClick/UpClick for UpDown/SpinBox now fires upon WM_CAPTURECHANGED where
      cached delta value on UDN_DELTAPOS decided if down or up click. (like MS UpDown)
      ByRef Delta on BeforeChange event copied back to iDelta of the NMUPDOWN structure upon UDN_DELTAPOS.
    16-Jan-2024
    - Final bugfix in the UserControl_Resize for the ImageCombo control. (regression 18-Dec-2023)
    - MousePointer covers now the whole SpinBox. (incl. border and up down control)
      Also bugfix in the MouseTrack property as WM_NCMOUSEMOVE was not covered.
      WM_NCLBUTTONDOWN will set focus for the edit control as the border of the up down control does also.
    15-Jan-2024
    - Fixed focus issue for the up down button in the DTPicker control.
    14-Jan-2024
    - Improvement in the BuddyControl property in the UpDown control.
    10-Jan-2024
    - Bugfix for WM_LBUTTONDOWN/WM_RBUTTONDOWN handler on ListView/TreeView/ImageCombo control.
      Those windows controls do have an internal DragDetect modal message loop.
    08-Jan-2024
    - Update of edit text when changing list index by code in the VirtualCombo control.
      This is needed due to missing CBS_HASSTRINGS and set of LBS_NODATA. (which is correct so)
      It now also handles LB_FINDSTRINGEXACT message in the WindowProcList.
    06-Jan-2024
    - Included the CueBannerAlways property in the TextBoxW control.
    - "Object.Default" not written anymore to the property bag in CommandButtonW/CommandLink control.
    - The Default and Cancel property are now also available when setting to a shadow object. ('Set' command)
      Affected are only the CommandButtonW/CommandLink control.
    03-Jan-2024
    - Included the AllowDropFiles property and DropFiles event in the ListBoxW control.
    02-Jan-2024
    - Bugfix in the UserControl_Resize in the ComboBoxW/FontCombo/VirtualCombo/ImageCombo control. (regression 18-Dec-2023)
    01-Jan-2024
    - Included the WindowedLabel control.
    31-Dec-2023
    - Const VARIANT_CB now 24 instead of 16 for Win64.
    29-Dec-2023
    - Included the SingleLine property in the LabelW control.
    28-Dec-2023
    - Included the Resize event in the ToolBar control. (like in the CoolBar control)
    - Included the MimicTextBox property in the LabelW control. (DT_EDITCONTROL)
    22-Dec-2023
    - Included AllowDropFiles property in the RichTextBox/TextBoxW control.
    - Included DropFiles event in the TextBoxW control.
    20-Dec-2023
    - Included the DropFiles event in the RichTextBox control. (EN_DROPFILES)
    19-Dec-2023
    - Included OLEDragDropScroll/OLEDropMode and related UserControl events in the RichTextBox control.
      Renamed OLEDragDrop to OLEDragDropRTF. OLEDragDropRTF is the auto-mode by rich edit control.
    18-Dec-2023
    - Adjustment needed in the UserControl_Resize in the ComboBoxW/FontCombo/VirtualCombo/ImageCombo control. (regression 10-Dec-2023)
    10-Dec-2023
    - Improvement in the internal CheckDropDownHeight method in the ComboBoxW/FontCombo/VirtualCombo/ImageCombo control to match MS control on edge cases.
    11-Nov-2023
    - RichTextBox/LinkLabel now react upon WM_PAINT where wParam is a hDC.
    05-Nov-2023
    - CoolBar/ToolBar/TabStrip/StatusBar control now redirects to WM_PRINT (PRF_CLIENT Or PRF_ERASEBKGND) upon WM_PAINT when wParam is <> 0.
    - All Transparent properties improved to use GetParent() instead of .ContainerHwnd.
    24-Oct-2023
    - OLEDragDropScroll property now adds the scroll bar sizes for the auto scroll margin.
    22-Oct-2023
    - Proper error raising for mis-use of the ImageList/BuddyControl property on all controls.
    - Proper error raising for mis-use in the BackColor property of the ImageList control.
    09-Oct-2023
    - TabStrip's ClientLeft/ClientTop now matches to VBA and to VBFlexGrid. (CellLeft/ClientLeft etc.)
      So use .Left + .ClientLeft instead of just .ClientLeft for positioning from a container.
    06-Sep-2023
    - Passing vbNullString to the Let .List(i) property of the ComboBoxW/ListBoxW control does not cause an misbehavior anymore.
    - WM_CHAR now blocked in the list control if the Locked property is true in the ComboBoxW/FontCombo/VirtualCombo/ImageCombo control.
    25-Jul-2023
    - ODS_HOTLIGHT added to the OwnerDraw event in the CommandButtonW/CheckBoxW/OptionButtonW.
      Condition is that the MouseTrack property is set to True.
    08-Jul-2023
    - Fixed const FR_HIDEMATCHCASE.
    07-Jul-2023
    - Modified OLEGuids.tlb as following: (compiled with same uuid)
      - replaced LPSTR and LPWSTR to LONG StrPtr() to get compatibility with x64 OLEGuids twinBASIC package.
      Unregister to old OLEGuids.tlb is not necessary, just overwrite the file.
    06-Jul-2023
    - Changing font for ProgressBar will cause an invalidation when a Text property is set.
    02-Jul-2023
    - PtInRect/LBItemFromPt/WindowFromPoint/DragDetect API and code adaptions so it can be migrated to x64 more easily.
    17-May-2023
    - Support of icons and metafiles for the Picture property in the TbrButtonMenu of the ToolBar control.
      Selecting such a picture file (design-time) will show a warning message that the menu theme will be removed. (HBMMENU_CALLBACK)
    16-May-2023
    - Usage of MIM_MENUDATA for TbrButtonMenus in the ToolBar control.
      dwMenuData contains the ObjPtr() of the TbrButtonMenu.Parent. (TbrButton object)
      This can be helpful in a WM_INITMENUPOPUP subclass to get a TbrButton of that menu handle.
    11-May-2023
    - Removed TPM_NONOTIFY for TbrButtonMenus in the ToolBar control.
      This allows to subclass for WM_INITMENUPOPUP where wParam is the menu handle.
    10-May-2023
    - Included the Picture property in the TbrButtonMenu of the ToolBar control.
      It supports 32bpp alpha bitmaps, but no icons. (MIIM_BITMAP)
      Usage of MIIM_STRING instead of MIIM_TYPE/MFT_STRING for TbrButtonMenu.
    14-Apr-2023
    - Bugfix that the caret is not scrolled into view on SelStart/SelLength in the TextBoxW/RichTextBox control.
    11-Jan-2023
    - Unnecessary usage/variable of GetTopUserControl() removed in the ListView and SpinBox control.
    10-Sep-2022
    - Bugfix in the RightToLeft property in the RichTextBox control.
    30-Aug-2022
    - Critical bugfix in the StatusBar that the DrawState API is not allowed anymore to have lData as 0.
    26-Aug-2022
    - Improved the popup menu in the ToolBar to send WM_CANCELMODE upon recursive invocation.
      This is useful in the .ContainerKeyDown function to close the popup menu when it's already dropped down.
    22-Aug-2022
    - Minor internal improvement in the StatusBar control.
    15-Aug-2022
    - Exit Property for same value in the Text property of a Panel in the StatusBar control.
    27-Jun-2022
    - Bugfix in the internal OLEDragOver in the ListView control for report view.
    22-Jun-2022
    - Bugfix in the WM_NCPAINT handler for a themed RichTextBox that scrollbars are not drawn.
    30-May-2022
    - Support for adding an .Image object from a PictureBox to an ImageList.
      Prior to this update the .Image object needed to be peristed into the .Picture property of the PictureBox.
    18-Feb-2022
    - Included [_Default] property in ComboBoxW/FontCombo/VirtualCombo/ImageCombo.
    - Included the GetTextRange property in the RichTextBox control.
    04-Nov-2021
    - FilterBar now receives focus in the ListView control on an MDI child form when the previous control was an intrinsic VB.CommandButton.
      Reason is a unknown message &H105A pending on the MDI host form which brings focus back to the ActiveControl.
    26-Oct-2021
    - Bugfix on LvwListItems.Remove that no error was thrown for an non-existent numeric index.
      For a string index/key an error was already thrown.
    25-Oct-2021
    - Internal improvements in the UpDown control.
    - Included ES_AUTOHSCROLL for the edit window in the SpinBox control.
    22-Oct-2021
    - RichTextBox improvement when changing the RightToLeft property at run-time and when TextMode is RTF.
      It will not stream RTF out before re-create and not stream RTF in afterwards. This way the \rtlpar is properly in place.
    - Default value for MaxDate property in the DTPicker/MonthView control changed to 31-Dec-9999. (instead of 01-Jan-3000)
    13-Oct-2021
    - Included the run-time (read-only) TextLength property for the TextBoxW and RichTextBox control.
    - The RichTextBox control now uses EM_GETTEXTEX/EM_SETTEXTEX instead of EM_STREAMOUT/EM_STREAMIN for the Text property.
    - Included the UseCrLf property in the RichTextBox control.
      It defaults to False (compatibility break in VBCCR) but fixes the Text to match to internal positions.
      This affects the Text and TextLength property. (GT_USECRLF/GTL_USECRLF)
    07-Sep-2021
    - Fixed GDI leaks for DTPickerCalendarFontHandle, LinkLabelUnderlineFontHandle and ProgressBarFontHandle.
    04-Sep-2021
    - Bugfix in the internal CreatePrintJob method in the RichTextBox concerning the printing margins.
    10-Aug-2021
    - Removal of EM_EXLIMITTEXT (Flags = SF_RTF) in internal StreamStringIn/StreamFileIn in the RichTextBox control.
      It was probably put there by error or by misunderstanding of the MSDN documentation.
    05-Aug-2021
    - Small bugfix in the PPCoolBarBands that child controls can be in the list that have no window handle. (e.g. Label)
      This bug occured only when there were other child controls that have a window handle.
    24-Jul-2021
    - DrawStyle vbSolid now only when Single BorderStyle is set, otherwise it is vbInvisible. (refer to 21-Jul-2021 and 26-Mar-2021 update)
    21-Jul-2021
    - Bugfix in the LabelW control that the Single BorderStyle was not drawn anymore as of 26-Mar-2021 update.
    15-Jul-2021
    - Bugfix in the Text property of a Panel in the StatusBar control. (no immediate update of internal DisplayText)
    08-Jun-2021
    - CommandButtonW/CheckBoxW/OptionButtonW (vbButtonGraphical) can now render 32bpp alpha bitmaps and icons.
    04-Jun-2021
    - PPCoolBarBands can be switched now between CoolBars at design-time without issues.
    - PPStatusBarPanels can be switched now between StatusBars at design-time without issues.
    - PPToolBarButtons can be switched now between ToolBars at design-time without issues.
    29-May-2021
    - PPTabStripTabs can be switched now between TabStrips at design-time without issues.
    - PPImageListImages can be switched now between ImageLists at design-time without issues.
    23-May-2021
    - Improvement in the WM_SETCURSOR in the CoolBar control.
      This ensures the cursor handling for the child controls can walk up the chain properly.
    15-May-2021
    - Bugfix in the UseChevron property of a Band in the CoolBar control.
      The .CXHeader member (RBBIM_HEADERSIZE) will now be reset (= -1) whenever the property is set.
    - RP_CHEVRON/RP_CHEVRONVERT now included in the 'ImplementThemedReBarFix'.
    12-Apr-2021
    - Internal improvement in the StatusBar control.
    26-Mar-2021
    - UserControl.DrawStyle set to 5 = Transparent to avoid a wasted/unused GDI pen handle.
    17-Mar-2021
    - Improved CreateGDIFontFromOLEFont function.
    15-Mar-2021
    - HotTracking property improved in the ListView control.
    01-Mar-2021
    - Harmonization in the ContextMenu events. The X and Y parameters are now always originated to the control's hWnd.
      Problem was in some controls which have child windows, resulted in confusing X and Y parameters.
    19-Feb-2021
    - Bugfix in the NodeClick/NodeDblClick event in the TreeView control.
      Prior to this update it fired whenever hItem is <> 0.
      Now it fires only when when in addition the hit-test flags are TVHT_ONITEMICON or TVHT_ONITEMLABEL. (like the MS TreeView does)
    - Improved the Nodes.Clear method in the TreeView control.
      The selected item is now removed before clearing to have no unnecessary TVN_SELCHANGING/TVN_SELCHANGED notifications.
    18-Feb-2021
    - Bugfix in the Left/Width property (Get) of a Panel in the StatusBar control.
    16-Feb-2021
    - Internal improvement in the TextBoxW control.
    14-Feb-2021
    - Bugfix in the FrameW control related to 13-Feb-2021 update.
    13-Feb-2021
    - Bugfix in the FrameW control that mouse events were in pixels instead of twips.
    19-Jan-2021
    - TabMinWidth property can be set to -1 in the TabStrip control.
    23-Sep-2020
    - No crash anymore when passing a vbNullString to the .SelText property in various controls. (e.g. TextBoxW)
      Though, the fix concerns only Windows XP or below. Because as of Vista+ a NULL StrPtr() on EM_REPLACESEL does not cause harm.
    18-Aug-2020
    - Enhancement for the FrameW control.
      - Access key now supported.
      - TabIndex now supported. (important to be set meaningful so the access key works properly)
      - Included UseMnemonic property. (not available in a VB.Frame, thus being an advantage)
    15-Aug-2020
    - Some minor internal improvements.
    08-Aug-2020
    - Bugfix in the OLEDropMode property in the FrameW control.
      It was not possible to set it to OLEDropModeManual when windowless control(s) were contained in it.
    - It is now possible for the TbrButtonMenus collection to change the key on a particular TbrButtonMenu in the ToolBar control.
    06-Aug-2020
    - It is now possible for the TbrButtons collection to change the key on a particular TbrButton in the ToolBar control.
    29-Jul-2020
    - Included new RefreshMousePointer function in Common.bas.
    - All controls who receive CBN_DROPDOWN will call RefreshMousePointer function when current hCursor is NULL.
      This is a unresolved misbehavior in user32.dll ever since.
    26-Jul-2020
    - Internal improvement in the SelText property in the RichTextBox control.
    25-Jul-2020
    - It is now possible for the CbrBands collection to change the key on a particular CbrBand in the CoolBar control.
    23-Jul-2020
    - Internal improvement in the SysInfo control.
    20-Jul-2020
    - It is now possible for the SbrPanels collection to change the key on a particular SbrPanel in the StatusBar control.
    - Included the 'NodeRangeSelect' event in TreeView control with a Cancel parameter.
      It fires for each node when a range of nodes is about to be selected. (like 'NodeBeforeSelect', but for shift-range selection)
    16-Jul-2020
    - The GetEmptyMarkup event supports now right-to-left in the ListView control.
    15-Jul-2020
    - Added optional 'Index' param in the .WorkAreas.Add method (to insert before index) in the ListView control.
    12-Jul-2020
    - Reworked the .WorkAreas property in the ListView control.
      It is not anymore a property which just returns/sets an array of coordinates.
      Instead it returns now a collection to the new 'LvwWorkAreas' class.
      The collection is not 'private' and relies fully on LVM_GETWORKAREAS/LVM_SETWORKAREAS.
      The .ListItemIndices of a 'LvwWorkArea' returns all list items that belongs to a work area.
      Also the new .WorkArea property of a 'LvwListItem' returns the work area to which a list item belongs to.
    09-Jul-2020
    - Included MultiSelect property in the TreeView control.
      It can be set to 'None' (Default), 'All', 'VisibleOnly', 'RestrictSiblings'.
      The new 'SelectedNodes' property returns a collection to the new 'TvwSelectedNodes' class.
      With this class the count and the selected nodes can be retrieved or enumerated.
      The most recent select node has index 1 and the oldest select node has the last index. (sorted by history)
      Included the 'AnchorItem' property which returns the node from which a multiple selection starts.
      Included the 'SelectedIndex' function in the TvwNode class. It returns the index of the associated selected nodes collection.
    05-Jul-2020
    - Internal improvement in the TreeView control.
    01-Jul-2020
    - VirtualCombo control now works on comctl version 5.8x.
    - ItemBkColor now fired in a virtual ListView control.
    - Internal improvement for the HighlightHot property in the ListView control.
    30-Jun-2020
    - Included Left/Top/Width/Height (read-only) property in the ListSubItem of the ListView control. (LVM_GETSUBITEMRECT)
    - Included function 'FindNearestItem' in the ListView control. (LVFI_NEARESTXY)
    28-Jun-2020
    - Included CacheVirtualItems event in the ListView control. (LVN_ODCACHEHINT)
    - LVN_ODSTATECHANGED processed to enhance the ItemSelect event in a virtual ListView control.
    - Renamed param 'Index' to 'ItemIndex' in the GetVirtualItem event in the ListView control.
      Thus it does not clash anymore with the 'Index As Integer' param in a control array.
    - ItemSelect event can now pass a ListItem 'As Nothing' in a virtual ListView control. (LVN_ITEMCHANGED, iItem = -1)
      Because a virtual list view does only inform about each selected item and not for each deselected item.
    - It is now possible for the TbsTabs collection to change the key on a particular TbsTab in the TabStrip control.
    27-Jun-2020
    - It is now possible for the LvwGroups collection to change the key on a particular LvwGroup in the ListView control.
    - It is now possible for the ImlListImages collection to change the key on a particular ImlListImage in the ImageList control.
    26-Jun-2020
    - Included the FontWeight property in the CommonDialog class.
    23-Jun-2020
    - Included the VListBox control. (virtual list box control)
      The name 'VirtualList' would confuse as this is a common word for a virtual list view.
      Thus to avoid that the name must contain 'ListBox' and to keep it short then 'VListBox'.
    - TabbedTextOut API now used in a Checkbox/Option Style ListBoxW control when UseTabStops property is True.
    - Bugfix in the 32-bit scrolling in a multi-column ListBoxW and when WS_EX_LEFTSCROLLBAR is set.
    - Text property in ListBoxW now data-bindable to a VB.Data control.
    
    [...]
    
    11-Nov-2012
    - First release.
    Name:  ComCtlsDemo.jpg
Views: 49116
Size:  118.9 KB

    Warning: This Std-EXE version here is not really IDE-Safe as the design-time (form designer) user control subclassing (AddressOf pointer) can just become invalid when the IDE wants to. It is recommended to use the OCX version.
    Attached Files Attached Files
    Last edited by Krool; Apr 12th, 2024 at 12:31 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width