COMCTL32 Functions

The large table on this page is this study’s master list of functions that appear in the export directory of any known version of COMCTL32. It gives for each function just brief summaries of the applicable COMCTL32 versions and of the function’s status with respect to Microsoft’s documentation.

This master list is the key to other lists. More detail on each function’s availability and documentation status is to be found by looking for the function in the history lists, according to the function’s first version and to whether it is exported by name or with an ordinal. A separate list covers usage by other executable modules distributed with Windows (though presently specific to Windows XP Service Pack 1). Some functions link directly to an attempt at alternative documentation.

Additional explanatory notes follow the table.

Function Applicable Versions Documentation Status
AddMRUData (167) 3.50 and higher  
AddMRUStringA (153) 3.50 and higher  
AddMRUStringW (401) 3.50 and higher;
but not 4.00 (Windows)
documented in 2004-2006
Alloc (71) 3.50 and higher  
AttachScrollBars 6.10 and higher  
CCEnableScrollBar 6.10 and higher  
CCGetScrollInfo 6.10 and higher  
Cctl1632_ThunkData32 Windows only;
4.0 and higher
 
CCSetScrollInfo 6.10 and higher  
CreateCheckBoxImageList (18) 6.10 and higher  
CreateDUIPropertySheetPage (174) 6.10 and higher  
CreateMappedBitmap 3.50 and higher documented
CreateMRUListA (151) 3.50 and higher  
CreateMRUListW (400) 3.50 and higher;
but not 4.00 (Windows)
documented in 2004-2006
CreateMRUListLazyA (157) 4.71 and higher  
CreateMRUListLazyW (404) 4.71 and higher  
CreatePage (163) 3.50 and higher  
CreatePropertySheetPage 3.50 and higher documented
CreatePropertySheetPageA 3.50 and higher documented
CreatePropertySheetPageW 3.50 and higher documented
CreateProxyPage (164) 3.50 and higher  
CreateSmallerIcon (393) 6.10 and higher  
CreateStatusWindow 3.50 and higher documented
CreateStatusWindowA 3.50 and higher documented
CreateStatusWindowW 3.50 and higher documented
CreateToolbar 3.50 and higher  
CreateToolbarEx 3.50 and higher documented
CreateUpDownControl 3.50 and higher documented
DefSubclassProc (413) 4.72 and higher documented
DelMRUString (156) 3.50 and higher  
DestroyPropertySheetPage 3.50 and higher documented
DestroyPropsheetPageArray (165) 6.10 and higher  
DetachScrollBars 6.10 and higher  
DllGetVersion 4.70 and higher (documented)
DllInstall 4.71 and higher;
except 5.82 from Windows Vista and higher
(documented)
DoReaderMode (383) 4.70 and higher documented in 2004-2006
DPA_Clone (331) 3.50 and higher documented in 2005-2006
DPA_Create (328) 3.50 and higher documented for settlement
DPA_CreateEx (340) 3.50 and higher documented in 2005-2006
DPA_DeleteAllPtrs (337) 3.50 and higher documented for settlement
DPA_DeletePtr (336) 3.50 and higher documented for settlement
DPA_Destroy (329) 3.50 and higher documented for settlement
DPA_DestroyCallback (386) 4.71 and higher documented for settlement
DPA_EnumCallback (385) 4.71 and higher documented for settlement
DPA_GetPtr (332) 3.50 and higher documented for settlement
DPA_GetPtrIndex (333) 3.50 and higher documented in 2005-2006
DPA_GetSize 6.10 and higher documented
DPA_Grow (330) 3.50 and higher documented in 2006
DPA_InsertPtr (334) 3.50 and higher documented for settlement
DPA_LoadStream (9) 4.71 and higher documented in 2005
DPA_Merge (11) 4.71 and higher documented in 2005-2006
DPA_SaveStream (10) 4.71 and higher documented in 2005
DPA_Search (339) 3.50 and higher documented for settlement
DPA_SetPtr (335) 3.50 and higher documented for settlement
DPA_Sort (338) 3.50 and higher documented for settlement
DrawInsert 3.50 and higher documented
DrawScrollBar 6.10 and higher  
DrawShadowText 6.00 and higher documented
DrawSizeBox 6.10 and higher  
DrawStatusText 3.50 and higher documented
DrawStatusTextA 3.50 and higher documented
DrawStatusTextW 3.50 and higher documented
DrawTextWrap (415) 5.80 and higher documented in 2004-2006
DrawTextExPrivWrap (416) 5.80 and higher documented in 2004-2006
DSA_Clone 6.10 and higher documented
DSA_Create (320) 3.50 and higher documented for settlement
DSA_DeleteAllItems (327) 3.50 and higher documented in 2006
DSA_DeleteItem (326) 3.50 and higher documented in 2004-2006
DSA_Destroy (321) 3.50 and higher documented for settlement
DSA_DestroyCallback (388) 4.71 and higher documented for settlement
DSA_EnumCallback (387) 4.71 and higher documented in 2006
DSA_GetItem (322) 3.50 and higher documented in 2004-2006
DSA_GetItemPtr (323) 3.50 and higher documented for settlement
DSA_GetSize 6.10 and higher documented
DSA_InsertItem (324) 3.50 and higher documented for settlement
DSA_SetItem (325) 3.50 and higher documented in 2004-2006
DSA_Sort 6.10 and higher documented
EmulateTrackMouseEvent 4.0 (NT)  
EnumMRUListA (154) 3.50 and higher  
EnumMRUListW (403) 3.50 and higher;
but not 4.0 (Windows)
documented in 2004-2006
ExtTextOutWrap (417) 5.80 and higher documented in 2004-2006
FindMRUData (169) 3.50 and higher  
FindMRUStringA (155) 3.50 and higher  
FindMRUStringW (402) 3.50 and higher;
but not 4.0 (Windows)
 
FlatSB_EnableScrollBar 4.71 and higher documented
FlatSB_GetScrollInfo 4.71 and higher documented
FlatSB_GetScrollPos 4.71 and higher documented
FlatSB_GetScrollProp 4.71 and higher documented
FlatSB_GetScrollRange 4.71 and higher documented
FlatSB_SetScrollInfo 4.71 and higher documented
FlatSB_SetScrollPos 4.71 and higher documented
FlatSB_SetScrollProp 4.71 and higher documented
FlatSB_SetScrollRange 4.71 and higher documented
FlatSB_ShowScrollBar 4.71 and higher documented
Free (73) 3.50 and higher  
FreeMRUList (152) 3.50 and higher documented in 2004-2006
GetCharWidthWrap (418) 5.80 and higher  
GetEffectiveClientRect 3.50 and higher documented
GetMUILanguage 5.80 and higher documented
GetSize (74) 3.50 and higher  
GetTextExtentPointWrap (419) 5.80 and higher  
GetTextExtentPoint32Wrap (420) 5.80 and higher documented in 2004-2006
GetTitleFromPropSheetHeader (391) 6.10 and higher  
GetWindowSubclass (411) 4.72 and higher documented
HandleScrollCmd 6.10 and higher  
HIMAGELIST_QueryInterface 6.00 and higher documented in 2006
ImageList_Add 3.50 and higher documented
ImageList_AddIcon 3.50 and higher documented
ImageList_AddMasked 3.50 and higher documented
ImageList_BeginDrag 3.50 and higher documented
ImageList_CoCreateInstance 6.10 and higher documented
ImageList_Copy 4.0 (NT) and higher documented
ImageList_Create 3.50 and higher documented
ImageList_Destroy 3.50 and higher documented
ImageList_DestroyShared 6.10 from Windows 7, and higher  
ImageList_DragEnter 3.50 and higher documented
ImageList_DragLeave 3.50 and higher documented
ImageList_DragMove 3.50 and higher documented
ImageList_DragShowNolock 3.50 and higher documented
ImageList_Draw 3.50 and higher documented
ImageList_DrawEx 3.50 and higher documented
ImageList_DrawIndirect 4.71 and higher documented
ImageList_Duplicate 4.71 and higher documented
ImageList_EndDrag 3.50 and higher documented
ImageList_GetBkColor 3.50 and higher documented
ImageList_GetDragImage 3.50 and higher documented
ImageList_GetFlags 5.81 and higher  
ImageList_GetIcon 3.50 and higher documented
ImageList_GetIconSize 3.50 and higher documented
ImageList_GetImageCount 3.50 and higher documented
ImageList_GetImageInfo 3.50 and higher documented
ImageList_GetImageRect 3.50 and higher  
ImageList_LoadImage 3.50 and higher documented
ImageList_LoadImageA 3.50 and higher documented
ImageList_LoadImageW 3.50 and higher documented
ImageList_Merge 3.50 and higher documented
ImageList_Read 3.50 and higher documented
ImageList_ReadEx 6.0 and higher documented
ImageList_Remove 3.50 and higher documented
ImageList_Replace 3.50 and higher documented
ImageList_ReplaceIcon 3.50 and higher documented
ImageList_Resize 6.10 and higher  
ImageList_SetBkColor 3.50 and higher documented
ImageList_SetColorTable (390) 4.71 and higher documented in 2004-2006
ImageList_SetDragCursorImage 3.50 and higher documented
ImageList_SetFilter 4.0 (NT) and higher  
ImageList_SetFlags 5.80 and higher  
ImageList_SetIconSize 3.50 and higher documented
ImageList_SetImageCount 4.0 (NT) and higher documented
ImageList_SetOverlayImage 3.50 and higher documented
ImageList_Write 3.50 and higher documented
ImageList_WriteEx 6.0 and higher documented
InitCommonControls 3.50 and higher documented
InitCommonControlsEx 4.0 (NT) and higher documented
InitializeFlatSB 4.71 and higher documented
InitMUILanguage 5.80 and higher documented
IntlStrEqWorkerA (376) 4.70 and higher documented (SHLWAPI)
IntlStrEqWorkerW (377) 4.70 and higher documented (SHLWAPI)
LBItemFromPt 3.50 and higher documented
LoadIconMetric 6.10 and higher documented
LoadIconWithScaleDown 6.10 and higher documented
MakeDragList 3.50 and higher documented
Markup_Create (395) 6.10 and higher  
MenuHelp 3.50 and higher documented
MirrorIcon (414) 5.80 and higher documented in 2004-2006
PremultiplyAlphaChannel (392) 6.10 and higher  
PropertySheet 3.50 and higher documented
PropertySheetA 3.50 and higher documented
PropertySheetW 3.50 and higher documented
QuerySystemGestureStatus 6.10 and higher  
ReAlloc (72) 3.50 and higher  
RegisterClassNameW 5.82 and 6.0 from Windows XP SP2, and higher;
except 5.82 and 6.0 from Windows XP SP3
 
RemoveWindowSubclass (412) 4.72 and higher documented
ScrollBar_Menu 6.10 and higher  
ScrollBar_MouseMove 6.10 and higher  
SendNotify (341) 3.50 and higher  
SendNotifyEx (342) 3.50 and higher;
but not 4.0 (Windows)
 
SetPathWordBreakProc (384) 4.70 and higher  
SetWindowSubclass (410) 4.72 and higher documented
SHGetProcessDword (389) 4.71 and higher  
ShowHideMenuCtl 3.50 and higher documented
SizeBoxHwnd 6.10 and higher  
SmoothScrollWindow (382) 4.70 and higher  
Str_GetPtrA (233) 3.50 and higher documented in 2004-2006
Str_GetPtrW (235) 3.50 and higher;
but not 4.0 (Windows)
documented in 2004-2006
Str_SetPtrA (234) 3.50 and higher documented in 2004-2006
Str_SetPtrW (236) 3.50 and higher;
but not 4.0 (Windows)
documented for settlement
StrChrA (350) 3.50 and higher documented (SHLWAPI)
StrChrW (358) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrChrIA (366) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrChrIW (367) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrCmpNA (352) 3.50 and higher documented (SHLWAPI)
StrCmpNW (360) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrCmpNIA (353) 3.50 and higher documented (SHLWAPI)
StrCmpNIW (361) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrCSpnA (356) 3.50 and higher documented (SHLWAPI)
StrCSpnW (364) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrCSpnIA (374) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrCSpnIW (375) 4.0 (NT) and higher documented (SHLWAPI)
StrRChrA (351) 3.50 and higher documented (SHLWAPI)
StrRChrW (359) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrRChrIA (368) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrRChrIW (369) 4.0 (NT) and higher documented (SHLWAPI)
StrRStrIA (372) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrRStrIW (373) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrStrA (354) 3.50 and higher documented (SHLWAPI)
StrStrW (362) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrStrIA (355) 3.50 and higher documented (SHLWAPI)
StrStrIW (363) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
StrToIntA (357) 3.50 and higher documented (SHLWAPI)
StrToIntW (365) 3.50 and higher;
but not 4.0 (Windows)
documented (SHLWAPI)
TaskDialog 6.10 and higher documented
TaskDialogIndirect 6.10 and higher documented
TextOutWrap (421) 5.80 and higher  
UninitializeFlatSB 4.71 and higher documented
WIN32SYSDLL 3.50 only (documented)
_TrackMouseEvent 4.70 and higher documented

Notes

Familiarity is assumed with the Reading Guide for the Windows Shell Study.

Names

Function names are reproduced from the export directory of the COMCTL32.DLL executable, wherever possible. For functions that are not exported by name (i.e., are exported only by ordinal) from any known COMCTL32 version, names are inferred from symbol files that Microsoft supplies for customer support. If a function is known as an ordinal-only export from at least one COMCTL32 version, then even if later versions also export the function by name, the ordinal persists and is given in brackets immediately after the function’s name.

Versions

The COMCTL32 versions shown for each function are inferred from a study of known releases, making reasonable assumptions about likely continuity, especially to suppose that a function will exist in future versions or that a function exists in all builds of a version if no counter-example is yet known.

Documentation Status

Except where otherwise stated, the reference for all comment on Microsoft’s documentation is the January 2007 edition of the Windows Vista Software Development Kit (as distributed by Microsoft on MSDN Disc 3667), especially but not only the section General Control Reference under Windows Controls. Some COMCTL32 functions are documented under headings that have no immediate relationship to COMCTL32. For instance, some are documented as Shell Functions under Windows Shell. I expect this scattering occurs because the documentation models someone’s notions of functionality, regardless of where the functionality actually got implemented. However it comes about, it makes as good a reminder as any for caution: that a function is not marked above as “documented” (or is marked on other pages as “undocumented”) does not mean for certain that Microsoft does not document it, just that I haven’t yet found where.

Functions that were documented among the Settlement Program Interfaces in late 2002 are labelled specifically as “documented for settlement”. Some functions that predate the January 2004 edition of the MSDN Library on CD (which was the previous reference version for this study) and were not documented therein have got documented since. These are labelled “documented” but with a year or range of years, with as much precision as I happen to know. For instance, a blog by Dave Massy of Microsoft drew attention in April 2005 to two more COMCTL32 functions that Microsoft had just documented, and declared explicitly that these had been overlooked for the settlement. These are labelled “documented in 2005”.

Some functions are not documented as exports from COMCTL32 but fit a general case described in the reading guide, such that it would be ungenerous to expect documentation specifically for COMCTL32. These are indicated by enclosing the whole documentation status in brackets.

A few functions are shown as documented but with “SHLWAPI” in brackets. Strictly speaking, these are undocumented as COMCTL32 functions. Each has an independent implementation in the Shell Light-Weight Utility (SHLWAPI) library and it is this other implementation, not the (earlier) one in COMCTL32, that Microsoft documents.