Geoff Chappell - Software Analyst
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 |
Familiarity is assumed with the Reading Guide for the Windows Shell Study.
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.
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.
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.