' api_commctrl.sbp
#ifndef _INC_COMMCTRL
#define _INC_COMMCTRL

#ifdef UNICODE
Const _FuncName_CreateStatusWindow = "CreateStatusWindowW"
#else
Const _FuncName_CreateStatusWindow = "CreateStatusWindowA"
#endif



'---------------------
' Initialize commands
'---------------------

Const ICC_LISTVIEW_CLASSES =   &H00000001
Const ICC_TREEVIEW_CLASSES =   &H00000002
Const ICC_BAR_CLASSES =        &H00000004
Const ICC_TAB_CLASSES =        &H00000008
Const ICC_UPDOWN_CLASS =       &H00000010
Const ICC_PROGRESS_CLASS =     &H00000020
Const ICC_HOTKEY_CLASS =       &H00000040
Const ICC_ANIMATE_CLASS =      &H00000080
Const ICC_WIN95_CLASSES =      &H000000FF
Const ICC_DATE_CLASSES =       &H00000100
Const ICC_USEREX_CLASSES =     &H00000200
Const ICC_COOL_CLASSES =       &H00000400
Const ICC_INTERNET_CLASSES =   &H00000800
Const ICC_PAGESCROLLER_CLASS = &H00001000
Const ICC_NATIVEFNTCTL_CLASS = &H00002000
Type INITCOMMONCONTROLSEX
	dwSize As DWord
	dwICC As DWord
End Type
Declare Function InitCommonControlsEx Lib "comctl32" (ByRef InitCtrls As INITCOMMONCONTROLSEX) As BOOL

Declare Sub InitCommonControls Lib "comctl32" ()


'----------------------------
' Common control shared item
'----------------------------

Const CCS_TOP =           &H00000001
Const CCS_NOMOVEY =       &H00000002
Const CCS_BOTTOM =        &H00000003
Const CCS_NORESIZE =      &H00000004
Const CCS_NOPARENTALIGN = &H00000008
Const CCS_ADJUSTABLE =    &H00000020
Const CCS_NODIVIDER =     &H00000040
Const CCS_VERT =          &H00000080
Const CCS_LEFT =          CCS_VERT or CCS_TOP
Const CCS_RIGHT =         CCS_VERT or CCS_BOTTOM
Const CCS_NOMOVEX =       CCS_VERT or CCS_NOMOVEY

Const CCM_FIRST =             &H2000
Const CCM_SETBKCOLOR =        CCM_FIRST+1
Const CCM_SETCOLORSCHEME =    CCM_FIRST+2
Const CCM_GETCOLORSCHEME =    CCM_FIRST+3
Const CCM_GETDROPTARGET =     CCM_FIRST+4
Const CCM_SETUNICODEFORMAT =  CCM_FIRST+5
Const CCM_GETUNICODEFORMAT =  CCM_FIRST+6

Type NMHDR
	hwndFrom As HWND
	idFrom As ULONG_PTR
	code As DWord
End Type

Const NM_FIRST =              0
Const NM_OUTOFMEMORY =        NM_FIRST-1
Const NM_CLICK =              NM_FIRST-2
Const NM_DBLCLK =             NM_FIRST-3
Const NM_RETURN =             NM_FIRST-4
Const NM_RCLICK =             NM_FIRST-5
Const NM_RDBLCLK =            NM_FIRST-6
Const NM_SETFOCUS =           NM_FIRST-7
Const NM_KILLFOCUS =          NM_FIRST-8
Const NM_CUSTOMDRAW =         NM_FIRST-12
Const NM_HOVER =              NM_FIRST-13
Const NM_NCHITTEST =          NM_FIRST-14
Const NM_KEYDOWN =            NM_FIRST-15
Const NM_RELEASEDCAPTURE =    NM_FIRST-16
Const NM_SETCURSOR =          NM_FIRST-17
Const NM_CHAR =               NM_FIRST-18


'-----------
' ImageList
'-----------

Type _System_DeclareHandle_HIMAGELIST:unused As DWord:End Type
TypeDef HIMAGELIST   = *_System_DeclareHandle_HIMAGELIST

Declare Function ImageList_AddIcon Lib "comctl32" (himl As HIMAGELIST, hIcon As HICON) As Long

Const ILC_MASK =     &H0001
Const ILC_COLOR =    &H0000
Const ILC_COLORDDB = &H00FE
Const ILC_COLOR4 =   &H0004
Const ILC_COLOR8 =   &H0008
Const ILC_COLOR16 =  &H0010
Const ILC_COLOR24 =  &H0018
Const ILC_COLOR32 =  &H0020
Declare Function ImageList_Create Lib "comctl32" (cx As Long, cy As Long, flags As DWord, cInitial As Long, cGrow As Long) As HIMAGELIST

Declare Function ImageList_Destroy Lib "comctl32" (himl As HIMAGELIST) As BOOL
Declare Function ImageList_GetIcon Lib "comctl32" (himl As HIMAGELIST, index As Long, flags As DWord) As HICON
Declare Function ImageList_GetImageCount Lib "comctl32" (himl As HIMAGELIST) As Long
Declare Function ImageList_LoadImage Lib "comctl32" (hi As HINSTANCE, lpbmp As BytePtr, cx As Long, cGrow As Long, crMask As DWord, uType As DWord, uFlags As DWord) As HIMAGELIST


'-----------
' ListView
'-----------

'Column
Const LVCF_FMT =              &H0001
Const LVCF_WIDTH =            &H0002
Const LVCF_TEXT =             &H0004
Const LVCF_SUBITEM =          &H0008
Const LVCF_IMAGE =            &H0010
Const LVCF_ORDER =            &H0020
Const LVCFMT_LEFT =            &H0000
Const LVCFMT_RIGHT =           &H0001
Const LVCFMT_CENTER =          &H0002
Const LVCFMT_JUSTIFYMASK =     &H0003
Const LVCFMT_IMAGE =           &H0800
Const LVCFMT_BITMAP_ON_RIGHT = &H1000
Const LVCFMT_COL_HAS_IMAGES =  &H8000
Type LVCOLUMN
	mask As DWord
	fmt As Long
	cx As Long
	pszText As LPSTR
	cchTextMax As Long
	iSubItem As Long
	iImage As Long
	iOrder As Long
End Type
TypeDef LPLVCOLUMN = *LVCOLUMN

'Find item
Const LVFI_PARAM =     &H0001
Const LVFI_STRING =    &H0002
Const LVFI_PARTIAL =   &H0008
Const LVFI_WRAP =      &H0020
Const LVFI_NEARESTXY = &H0040
Type LVFINDINFO
	flags As DWord
	psz As LPSTR
	lParam As LPARAM
	pt As POINTAPI
	vkDirection As DWord
End Type
TypeDef LPLVFINDINFO = *LVFINDINFO

'Item
Const LVIF_TEXT =        &H0001
Const LVIF_IMAGE =       &H0002
Const LVIF_PARAM =       &H0004
Const LVIF_STATE =       &H0008
Const LVIF_INDENT =      &H0010
Const LVIF_NORECOMPUTE = &H0800
Const LVIF_DI_SETITEM =  &H1000
Type LVITEM
	mask As DWord
	iItem As Long
	iSubItem As Long
	state As DWord
	stateMask As DWord
	pszText As LPSTR
	cchTextMax As Long
	iImage As Long
	lParam As LPARAM
	iIndent As Long
End Type
TypeDef LPLVITEM = *LVITEM


Const LVM_FIRST =             &H1000      'ListView messages
Const LVM_GETBKCOLOR =        LVM_FIRST+0
Const LVM_SETBKCOLOR =        LVM_FIRST+1

Const LVSIL_NORMAL = 0
Const LVSIL_SMALL =  1
Const LVSIL_STATE =  2
Const LVM_GETIMAGELIST =      LVM_FIRST+2
Const LVM_SETIMAGELIST =      LVM_FIRST+3

Const LVM_GETITEMCOUNT =      LVM_FIRST+4
Function ListView_GetItemCount(hwnd As HWND) As Long
	ListView_GetItemCount=SendMessage(hwnd,LVM_GETITEMCOUNT,0,0) As Long
End Function
Const LVM_GETITEM =           LVM_FIRST+5
Const LVM_SETITEM =           LVM_FIRST+6
Function ListView_SetItem(hwnd As HWND, ByRef ref_lvItem As LVITEM) As Long
	ListView_SetItem=SendMessage(hwnd,LVM_SETITEM,0,VarPtr(ref_lvItem) As LPARAM) As Long
End Function
Const LVM_INSERTITEM =        LVM_FIRST+7
Function ListView_InsertItem(hwnd As HWND, ByRef ref_lvItem As LVITEM) As Long
	ListView_InsertItem=SendMessage(hwnd,LVM_INSERTITEM,0,VarPtr(ref_lvItem) As LPARAM) As Long
End Function
Const LVM_DELETEITEM =        LVM_FIRST+8
Function ListView_DeleteItem(hwnd As HWND, iItem As Long) As BOOL
	ListView_DeleteItem=SendMessage(hwnd,LVM_DELETEITEM,iItem,0) As BOOL
End Function
Const LVM_DELETEALLITEMS =    LVM_FIRST+9
Function ListView_DeleteAllItems(hwndLV As HWND) As BOOL
	ListView_DeleteAllItems=SendMessage(hwndLV,LVM_DELETEALLITEMS,0,0) As BOOL
End Function
Const LVM_GETCALLBACKMASK =   LVM_FIRST+10
Const LVM_SETCALLBACKMASK =   LVM_FIRST+11

Const LVNI_ALL =         &H0000
Const LVNI_FOCUSED =     &H0001
Const LVNI_SELECTED =    &H0002
Const LVNI_CUT =         &H0004
Const LVNI_DROPHILITED = &H0008
Const LVNI_ABOVE =       &H0100
Const LVNI_BELOW =       &H0200
Const LVNI_TOLEFT =      &H0400
Const LVNI_TORIGHT =     &H0800
Const LVM_GETNEXTITEM =       LVM_FIRST+12

Const LVM_FINDITEM =          LVM_FIRST+13
Function ListView_FindItem(hwnd As HWND, iStart As Long, ByRef ref_lvfi As LVFINDINFO) As Long
	ListView_FindItem=SendMessage(hwnd,LVM_FINDITEM,iStart As WPARAM,VarPtr(ref_lvfi) As LPARAM) As Long
End Function

Const LVM_GETITEMRECT =       LVM_FIRST+14
Const LVM_SETITEMPOSITION =   LVM_FIRST+15
Const LVM_GETITEMPOSITION =   LVM_FIRST+16
Const LVM_GETSTRINGWIDTH =    LVM_FIRST+17
Const LVM_HITTEST =           LVM_FIRST+18
Const LVM_ENSUREVISIBLE =     LVM_FIRST+19
Const LVM_SCROLL =            LVM_FIRST+20
Function ListView_Scroll(hwnd As HWND, dx As Long, dy As Long) As BOOL
	ListView_Scroll=SendMessage(hwnd,LVM_SCROLL,dx,dy) As BOOL
End Function
Const LVM_REDRAWITEMS =       LVM_FIRST+21
Const LVM_ARRANGE =           LVM_FIRST+22
Const LVM_EDITLABEL =         LVM_FIRST+23
Const LVM_GETEDITCONTROL =    LVM_FIRST+24
Const LVM_GETCOLUMN =         LVM_FIRST+25
Function ListView_GetColumn(hwnd As HWND, iCol As Long, ByRef ref_col As LVCOLUMN) As BOOL
	ListView_GetColumn=SendMessage(hwnd,LVM_GETCOLUMN,iCol,VarPtr(ref_col) As LPARAM) As BOOL
End Function
Const LVM_SETCOLUMN =         LVM_FIRST+26
Function ListView_SetColumn(hwnd As HWND, iCol As Long, ByRef ref_col As LVCOLUMN) As BOOL
	ListView_SetColumn=SendMessage(hwnd,LVM_SETCOLUMN,iCol,VarPtr(ref_col) As LPARAM) As BOOL
End Function
Const LVM_INSERTCOLUMN =      LVM_FIRST+27
Function ListView_InsertColumn(hWnd As HWND, iCol As Long, ByRef ref_lvColumn As LVCOLUMN) As Long
	ListView_InsertColumn=SendMessage(hWnd,LVM_INSERTCOLUMN ,iCol As WPARAM,VarPtr(ref_lvColumn) As LPARAM) As Long
End Function
Const LVM_DELETECOLUMN =      LVM_FIRST+28
Function ListView_DeleteColumn(hwnd As HWND, iCol As Long) As BOOL
	ListView_DeleteColumn=SendMessage(hwnd,LVM_DELETECOLUMN,iCol,0) As BOOL
End Function
Const LVM_GETCOLUMNWIDTH =    LVM_FIRST+29
Const LVM_SETCOLUMNWIDTH =    LVM_FIRST+30
Function ListView_SetColumnWidth(hwnd As HWND, iCol As Long, cx As Long) As BOOL
	ListView_SetColumnWidth=SendMessage(hwnd,LVM_SETCOLUMNWIDTH,iCol,MAKELONG(cx,0) As LPARAM) As BOOL
End Function
Const LVM_GETHEADER =         LVM_FIRST+31
Const LVM_CREATEDRAGIMAGE =   LVM_FIRST+33
Const LVM_GETVIEWRECT =       LVM_FIRST+34
Const LVM_GETTEXTCOLOR =      LVM_FIRST+35
Const LVM_SETTEXTCOLOR =      LVM_FIRST+36
Const LVM_GETTEXTBKCOLOR =    LVM_FIRST+37
Const LVM_SETTEXTBKCOLOR =    LVM_FIRST+38
Const LVM_GETTOPINDEX =       LVM_FIRST+39
Const LVM_GETCOUNTPERPAGE =   LVM_FIRST+40
Const LVM_GETORIGIN =         LVM_FIRST+41
Const LVM_UPDATE =            LVM_FIRST+42

Const LVIS_FOCUSED        = &H0001
Const LVIS_SELECTED       = &H0002
Const LVIS_CUT            = &H0004
Const LVIS_DROPHILITED    = &H0008
Const LVIS_GLOW           = &H0010
Const LVIS_ACTIVATING     = &H0020
Const LVIS_OVERLAYMASK    = &H0F00
Const LVIS_STATEIMAGEMASK = &HF000
Const LVM_SETITEMSTATE =      LVM_FIRST+43
Function ListView_SetItemState(hwnd As HWND, i As Long, state As DWord, mask As DWord) As BOOL
	Dim lvItem As LVITEM
	lvItem.stateMask=mask
	lvItem.state=state
	ListView_SetItemState=SendMessage(hwnd,LVM_SETITEMSTATE,i,VarPtr(lvItem) As LPARAM) As DWord
End Function
Const LVM_GETITEMSTATE =      LVM_FIRST+44
Function ListView_GetItemState(hwnd As HWND, i As Long, mask As DWord) As DWord
	ListView_GetItemState=SendMessage(hwnd,LVM_GETITEMSTATE,i,mask As LPARAM) As DWord
End Function
Function ListView_GetCheckState(hwnd As HWND, iIndex As Long) As BOOL
	ListView_GetCheckState=((SendMessage(hwnd,LVM_GETITEMSTATE,iIndex,LVIS_STATEIMAGEMASK) As DWord)>>12)-1
End Function

Const LVM_GETITEMTEXT =       LVM_FIRST+45
Sub ListView_GetItemText(hwnd As HWND, iItem As Long, iSubItem As Long, pszText As LPSTR, cchTextMax As Long)
	Dim lvi As LVITEM
	lvi.iSubItem=iSubItem
	lvi.cchTextMax=cchTextMax
	lvi.pszText=pszText
	SendMessage(hwnd,LVM_GETITEMTEXT,iItem,VarPtr(lvi) As LPARAM)
End Sub
Const LVM_SETITEMTEXT =       LVM_FIRST+46
Sub ListView_SetItemText(hwnd As HWND, iItem As Long, iSubItem As Long, pszText As LPCSTR)
	Dim lvi As LVITEM
	lvi.iSubItem=iSubItem
	lvi.pszText=pszText
	SendMessage(hwnd,LVM_SETITEMTEXT,iItem,VarPtr(lvi) As LPARAM)
End Sub
Const LVM_SETITEMCOUNT =      LVM_FIRST+47
Const LVM_SORTITEMS =         LVM_FIRST+48
Function ListView_SortItems(hwnd As HWND, pfnCompare As VoidPtr, lParamSort As LPARAM) As BOOL
	ListView_SortItems=SendMessage(hwnd,LVM_SORTITEMS,lParamSort As WPARAM,pfnCompare As LPARAM) As BOOL
End Function
Const LVM_SETITEMPOSITION32 = LVM_FIRST+49
Const LVM_GETSELECTEDCOUNT =  LVM_FIRST+50
Const LVM_GETITEMSPACING =    LVM_FIRST+51
Const LVM_GETISEARCHSTRING =  LVM_FIRST+52
Const LVM_SETICONSPACING =    LVM_FIRST+53
Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST+54
Function ListView_SetExtendedListViewStyle(hwndLV As HWND, dwExStyle As DWord) As DWord
	ListView_SetExtendedListViewStyle=SendMessage(hwndLV,LVM_SETEXTENDEDLISTVIEWSTYLE,dwExStyle,dwExStyle) As DWord
End Function
Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST+55
Function ListView_GetExtendedListViewStyle(hwndLV As HWND) As DWord
	ListView_GetExtendedListViewStyle=SendMessage(hwndLV,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) As DWord
End Function
Const LVM_GETSUBITEMRECT =    LVM_FIRST+56
Const LVM_SUBITEMHITTEST =    LVM_FIRST+57
Const LVM_SETCOLUMNORDERARRAY = LVM_FIRST+58
Const LVM_GETCOLUMNORDERARRAY = LVM_FIRST+59
Const LVM_SETHOTITEM =        LVM_FIRST+60
Const LVM_GETHOTITEM =        LVM_FIRST+61
Const LVM_SETHOTCURSOR =      LVM_FIRST+62
Const LVM_GETHOTCURSOR =      LVM_FIRST+63
Const LVM_APPROXIMATEVIEWRECT = LVM_FIRST+64
Const LVM_SETWORKAREAS =      LVM_FIRST+65
Const LVM_GETSELECTIONMARK =  LVM_FIRST+66
Const LVM_SETSELECTIONMARK =  LVM_FIRST+67
Const LVM_SETBKIMAGE =        LVM_FIRST+68
Const LVM_GETBKIMAGE =        LVM_FIRST+69
Const LVM_GETWORKAREAS =      LVM_FIRST+70
Const LVM_SETHOVERTIME =      LVM_FIRST+71
Const LVM_GETHOVERTIME =      LVM_FIRST+72
Const LVM_GETNUMBEROFWORKAREAS = LVM_FIRST+73
Const LVM_SETTOOLTIPS =       LVM_FIRST+74
Const LVM_GETTOOLTIPS =       LVM_FIRST+78

Type NMLISTVIEW
	hdr As NMHDR
	iItem As Long
	iSubItem As Long
	uNewState As DWord
	uOldState As DWord
	uChanged As DWord
	ptAction As POINTAPI
	lParam As LPARAM
End Type

Type NMLVDISPINFO
	hdr As NMHDR
	item As LVITEM
End Type

Type NMLVKEYDOWN
	hdr As NMHDR
	wVKey As Word
	flags As DWord
End Type

Const LVN_FIRST =             -100
Const LVN_ITEMCHANGING =      LVN_FIRST-0
Const LVN_ITEMCHANGED =       LVN_FIRST-1
Const LVN_INSERTITEM =        LVN_FIRST-2
Const LVN_DELETEITEM =        LVN_FIRST-3
Const LVN_DELETEALLITEMS =    LVN_FIRST-4
Const LVN_BEGINLABELEDIT =    LVN_FIRST-5
Const LVN_ENDLABELEDIT =      LVN_FIRST-6
Const LVN_COLUMNCLICK =       LVN_FIRST-8
Const LVN_BEGINDRAG =         LVN_FIRST-9
Const LVN_BEGINRDRAG =        LVN_FIRST-11
Const LVN_ODCACHEHINT =       LVN_FIRST-13
Const LVN_ODFINDITEM =        LVN_FIRST-52
Const LVN_ITEMACTIVATE =      LVN_FIRST-14
Const LVN_ODSTATECHANGED =    LVN_FIRST-15
Const LVN_HOTTRACK =          LVN_FIRST-21
Const LVN_GETDISPINFO =       LVN_FIRST-50
Const LVN_SETDISPINFO =       LVN_FIRST-51
Const LVN_KEYDOWN =           LVN_FIRST-55

Const LVS_ICON =              &H0000
Const LVS_REPORT =            &H0001
Const LVS_SMALLICON =         &H0002
Const LVS_LIST =              &H0003
Const LVS_SINGLESEL =         &H0004
Const LVS_SHOWSELALWAYS =     &H0008
Const LVS_SORTASCENDING =     &H0010
Const LVS_SORTDESCENDING =    &H0020
Const LVS_SHAREIMAGELISTS =   &H0040
Const LVS_NOLABELWRAP =       &H0080
Const LVS_AUTOARRANGE =       &H0100
Const LVS_EDITLABELS =        &H0200
Const LVS_OWNERDATA =         &H1000
Const LVS_NOSCROLL =          &H2000
Const LVS_ALIGNTOP =          &H0000
Const LVS_ALIGNLEFT =         &H0800
Const LVS_OWNERDRAWFIXED =    &H0400
Const LVS_NOCOLUMNHEADER =    &H4000
Const LVS_NOSORTHEADER =      &H8000

Const LVS_EX_GRIDLINES =        &H00000001
Const LVS_EX_SUBITEMIMAGES =    &H00000002
Const LVS_EX_CHECKBOXES =       &H00000004
Const LVS_EX_TRACKSELECT =      &H00000008
Const LVS_EX_HEADERDRAGDROP =   &H00000010
Const LVS_EX_FULLROWSELECT =    &H00000020
Const LVS_EX_ONECLICKACTIVATE = &H00000040
Const LVS_EX_TWOCLICKACTIVATE = &H00000080
Const LVS_EX_FLATSB =           &H00000100
Const LVS_EX_REGIONAL =         &H00000200
Const LVS_EX_INFOTIP =          &H00000400
Const LVS_EX_UNDERLINEHOT =     &H00000800
Const LVS_EX_UNDERLINECOLD =    &H00001000
Const LVS_EX_MULTIWORKAREAS =   &H00002000


'----------------------
' ProgressBar Control
'----------------------

Const PBS_SMOOTH =            &H01
Const PBS_VERTICAL =          &H04

Const PBM_SETRANGE =          WM_USER+1
Const PBM_SETPOS =            WM_USER+2
Const PBM_DELTAPOS =          WM_USER+3
Const PBM_SETSTEP =           WM_USER+4
Const PBM_STEPIT =            WM_USER+5
Const PBM_SETRANGE32 =        WM_USER+6
Type PBRANGE
	iLow As Long
	iHigh As Long
End Type
Const PBM_GETRANGE =          WM_USER+7
Const PBM_GETPOS =            WM_USER+8
Const PBM_SETBARCOLOR =       WM_USER+9
Const PBM_SETBKCOLOR =        CCM_SETBKCOLOR


'-------------------
' Statusbar Control
'-------------------

Const SBARS_SIZEGRIP = &H0100

Const SB_SETTEXT =          WM_USER+1
Const SB_GETTEXT =          WM_USER+2
Const SB_GETTEXTLENGTH =    WM_USER+3
Const SB_SETPARTS =         WM_USER+4
Const SB_GETPARTS =         WM_USER+6
Const SB_GETBORDERS =       WM_USER+7
Const SB_SETMINHEIGHT =     WM_USER+8
Const SB_SIMPLE =           WM_USER+9
Const SB_GETRECT =          WM_USER+10
Const SB_ISSIMPLE =         WM_USER+14
Const SB_SETICON =          WM_USER+15
Const SB_SETTIPTEXT =       WM_USER+16
Const SB_GETTIPTEXT =       WM_USER+18
Const SB_GETICON =          WM_USER+20
Const SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
Const SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
Const SB_SETBKCOLOR =       CCM_SETBKCOLOR

Const SBT_OWNERDRAW =  &H1000
Const SBT_NOBORDERS =  &H0100
Const SBT_POPOUT =     &H0200
Const SBT_RTLREADING = &H0400
Const SBT_TOOLTIPS =   &H0800

Const SBN_SIMPLEMODECHANGE = 880

Declare Function CreateStatusWindow Lib "comctl32" Alias _FuncName_CreateStatusWindow (style As Long, lpszText As LPCTSTR, hwndParent As HWND, wID As DWord) As HWND


'-----------------
' Toolbar Control
'-----------------

Const TBSTATE_CHECKED =       &H01
Const TBSTATE_PRESSED =       &H02
Const TBSTATE_ENABLED =       &H04
Const TBSTATE_HIDDEN =        &H08
Const TBSTATE_INDETERMINATE = &H10
Const TBSTATE_WRAP =          &H20
Const TBSTATE_ELLIPSES =      &H40
Const TBSTATE_MARKED =        &H80

Const TBSTYLE_BUTTON =          &H0000
Const TBSTYLE_SEP =             &H0001
Const TBSTYLE_CHECK =           &H0002
Const TBSTYLE_GROUP =           &H0004
Const TBSTYLE_CHECKGROUP =      TBSTYLE_GROUP or TBSTYLE_CHECK
Const TBSTYLE_DROPDOWN =        &H0008
Const TBSTYLE_AUTOSIZE =        &H0010
Const TBSTYLE_NOPREFIX =        &H0020
Const TBSTYLE_TOOLTIPS =        &H0100
Const TBSTYLE_WRAPABLE =        &H0200
Const TBSTYLE_ALTDRAG =         &H0400
Const TBSTYLE_FLAT =            &H0800
Const TBSTYLE_LIST =            &H1000
Const TBSTYLE_CUSTOMERASE =     &H2000
Const TBSTYLE_REGISTERDROP =    &H4000
Const TBSTYLE_TRANSPARENT =     &H8000
Const TBSTYLE_EX_DRAWDDARROWS = &H00000001

Type TBBUTTON
	iBitmap As Long
	idCommand As Long
	fsState As Byte
	fsStyle As Byte
#ifdef _WIN64
	bReserved[ELM(6)] As Byte
#else
	bReserved[ELM(2)] As Byte
#endif
	dwData As DWord
	iString As Long
End Type

Const TB_ENABLEBUTTON =          WM_USER+1
Const TB_CHECKBUTTON =           WM_USER+2
Const TB_PRESSBUTTON =           WM_USER+3
Const TB_HIDEBUTTON =            WM_USER+4
Const TB_INDETERMINATE =         WM_USER+5
Const TB_MARKBUTTON =            WM_USER+6
Const TB_ISBUTTONENABLED =       WM_USER+9
Const TB_ISBUTTONCHECKED =       WM_USER+10
Const TB_ISBUTTONPRESSED =       WM_USER+11
Const TB_ISBUTTONHIDDEN =        WM_USER+12
Const TB_ISBUTTONINDETERMINATE = WM_USER+13
Const TB_ISBUTTONHIGHLIGHTED =   WM_USER+14
Const TB_SETSTATE =              WM_USER+17
Const TB_GETSTATE =              WM_USER+18
Const TB_ADDBITMAP =             WM_USER+19
Const TB_ADDBUTTONS =            WM_USER+20
Const TB_INSERTBUTTON =          WM_USER+21
Const TB_DELETEBUTTON =          WM_USER+22
Const TB_GETBUTTON =             WM_USER+23
Const TB_BUTTONCOUNT =           WM_USER+24
Const TB_COMMANDTOINDEX =        WM_USER+25
Const TB_SAVERESTORE =           WM_USER+26
Const TB_CUSTOMIZE =             WM_USER+27
Const TB_ADDSTRING =             WM_USER+28
Const TB_GETITEMRECT =           WM_USER+29
Const TB_BUTTONSTRUCTSIZE =      WM_USER+30
Const TB_SETBUTTONSIZE =         WM_USER+31
Const TB_SETBITMAPSIZE =         WM_USER+32
Const TB_AUTOSIZE =              WM_USER+33
Const TB_GETTOOLTIPS =           WM_USER+35
Const TB_SETTOOLTIPS =           WM_USER+36
Const TB_SETPARENT =             WM_USER+37
Const TB_SETROWS =               WM_USER+39
Const TB_GETROWS =               WM_USER+40
Const TB_SETCMDID =              WM_USER+42
Const TB_CHANGEBITMAP =          WM_USER+43
Const TB_GETBITMAP =             WM_USER+44
Const TB_GETBUTTONTEXT =         WM_USER+45
Const TB_REPLACEBITMAP =         WM_USER+46
Const TB_SETINDENT =             WM_USER+47
Const TB_SETIMAGELIST =          WM_USER+48
Const TB_GETIMAGELIST =          WM_USER+49
Const TB_LOADIMAGES =            WM_USER+50
Const TB_GETRECT =               WM_USER+51
Const TB_SETHOTIMAGELIST =       WM_USER+52
Const TB_GETHOTIMAGELIST =       WM_USER+53
Const TB_SETDISABLEDIMAGELIST =  WM_USER+54
Const TB_GETDISABLEDIMAGELIST =  WM_USER+55
Const TB_SETSTYLE =              WM_USER+56
Const TB_GETSTYLE =              WM_USER+57
Const TB_GETBUTTONSIZE =         WM_USER+58
Const TB_SETBUTTONWIDTH =        WM_USER+59
Const TB_SETMAXTEXTROWS =        WM_USER+60
Const TB_GETTEXTROWS =           WM_USER+61
Const TB_GETOBJECT =             WM_USER+62
Const TB_GETBUTTONINFO =         WM_USER+65
Const TB_SETBUTTONINFO =         WM_USER+66
Const TB_GETHOTITEM =            WM_USER+71
Const TB_SETHOTITEM =            WM_USER+72
Const TB_SETANCHORHIGHLIGHT =    WM_USER+73
Const TB_GETANCHORHIGHLIGHT =    WM_USER+74
Const TB_MAPACCELERATOR =        WM_USER+78
Const TB_GETINSERTMARK =         WM_USER+79
Const TB_SETINSERTMARK =         WM_USER+80
Const TB_INSERTMARKHITTEST =     WM_USER+81
Const TB_MOVEBUTTON =            WM_USER+82
Const TB_GETMAXSIZE =            WM_USER+83
Const TB_SETEXTENDEDSTYLE =      WM_USER+84
Const TB_GETEXTENDEDSTYLE =      WM_USER+85
Const TB_GETPADDING =            WM_USER+86
Const TB_SETPADDING =            WM_USER+87
Const TB_SETINSERTMARKCOLOR =    WM_USER+88
Const TB_GETINSERTMARKCOLOR =    WM_USER+89
Const TB_SETCOLORSCHEME =        CCM_SETCOLORSCHEME
Const TB_GETCOLORSCHEME =        CCM_GETCOLORSCHEME
Const TB_SETUNICODEFORMAT =      CCM_SETUNICODEFORMAT
Const TB_GETUNICODEFORMAT =      CCM_GETUNICODEFORMAT
Const TB_HITTEST =               WM_USER+69

Type TOOLTIPTEXT
	hdr As NMHDR
	lpszText As LPSTR
	szText[79] As Byte
	hinst As HINSTANCE
	uFlags As DWord
	lParam As LPARAM
End Type

Const TTN_NEEDTEXT = -520

Declare Function CreateToolbarEx Lib "comctl32" (hWnd As HWND, ws As DWord, wID As DWord, nBitmaps As Long, hBMInst As HINSTANCE, wBMID As DWord, lpButtons As VoidPtr, iNumButtons As Long, dxButton As Long, dyButton As Long, dxBitmap As Long, dyBitmap As Long, uStructSize As DWord) As HWND


'-----------------------
' ToolTip Control
'-----------------------

Const TOOLTIPS_CLASS = "tooltips_class32"

Const TTS_ALWAYSTIP = &H01
Const TTS_NOPREFIX  = &H02
Const TTS_NOANIMATE = &H10
Const TTS_NOFADE    = &H20
Const TTS_BALLOON   = &H40
Const TTS_CLOSE     = &H80

Const TTF_IDISHWND    = &H0001
Const TTF_CENTERTIP   = &H0002
Const TTF_RTLREADING  = &H0004
Const TTF_SUBCLASS    = &H0010
Const TTF_TRACK       = &H0020
Const TTF_ABSOLUTE    = &H0080
Const TTF_TRANSPARENT = &H0100
Const TTF_PARSELINKS  = &H1000
Const TTF_DI_SETITEM  = &H8000       ' valid only on the TTN_NEEDTEXT callback

Type TOOLINFO
	cbSize As DWord
	uFlags As DWord
	hwnd As HWND
	uId As ULONG_PTR
	rect As RECT
	hinst As HINSTANCE
	lpszText as LPSTR
	lParam As LPARAM
	lpReserved As VoidPtr
End Type

Const TTM_ACTIVATE           = (WM_USER + 1)
Const TTM_SETDELAYTIME       = (WM_USER + 3)
Const TTM_ADDTOOL            = (WM_USER + 4)
Const TTM_DELTOOL            = (WM_USER + 5)
Const TTM_NEWTOOLRECT        = (WM_USER + 6)
Const TTM_RELAYEVENT         = (WM_USER + 7)
Const TTM_GETTOOLINFO        = (WM_USER + 8)
Const TTM_SETTOOLINFO        = (WM_USER + 9)
Const TTM_HITTEST            = (WM_USER +10)
Const TTM_GETTEXT            = (WM_USER +11)
Const TTM_UPDATETIPTEXT      = (WM_USER +12)
Const TTM_GETTOOLCOUNT       = (WM_USER +13)
Const TTM_ENUMTOOLS          = (WM_USER +14)
Const TTM_GETCURRENTTOOL     = (WM_USER + 15)
Const TTM_WINDOWFROMPOINT    = (WM_USER + 16)
Const TTM_TRACKACTIVATE      = (WM_USER + 17)  ' wParam = TRUE/FALSE start end  lparam = LPTOOLINFO
Const TTM_TRACKPOSITION      = (WM_USER + 18)  ' lParam = dwPos
Const TTM_SETTIPBKCOLOR      = (WM_USER + 19)
Const TTM_SETTIPTEXTCOLOR    = (WM_USER + 20)
Const TTM_GETDELAYTIME       = (WM_USER + 21)
Const TTM_GETTIPBKCOLOR      = (WM_USER + 22)
Const TTM_GETTIPTEXTCOLOR    = (WM_USER + 23)
Const TTM_SETMAXTIPWIDTH     = (WM_USER + 24)
Const TTM_GETMAXTIPWIDTH     = (WM_USER + 25)
Const TTM_SETMARGIN          = (WM_USER + 26)  ' lParam = lprc
Const TTM_GETMARGIN          = (WM_USER + 27)  ' lParam = lprc
Const TTM_POP                = (WM_USER + 28)
Const TTM_UPDATE             = (WM_USER + 29)
Const TTM_GETBUBBLESIZE      = (WM_USER + 30)
Const TTM_ADJUSTRECT         = (WM_USER + 31)
Const TTM_SETTITLE           = (WM_USER + 32)  ' wParam = TTI_*, lParam = char* szTitle


'-------------------
' TrackBar Control
'-------------------

Const TBS_AUTOTICKS =         &H0001
Const TBS_VERT =              &H0002
Const TBS_HORZ =              &H0000
Const TBS_TOP =               &H0004
Const TBS_BOTTOM =            &H0000
Const TBS_LEFT =              &H0004
Const TBS_RIGHT =             &H0000
Const TBS_BOTH =              &H0008
Const TBS_NOTICKS =           &H0010
Const TBS_ENABLESELRANGE =    &H0020
Const TBS_FIXEDLENGTH =       &H0040
Const TBS_NOTHUMB =           &H0080
Const TBS_TOOLTIPS =          &H0100

Const TBM_GETPOS =            WM_USER
Const TBM_GETRANGEMIN =       WM_USER+1
Const TBM_GETRANGEMAX =       WM_USER+2
Const TBM_GETTIC =            WM_USER+3
Const TBM_SETTIC =            WM_USER+4
Const TBM_SETPOS =            WM_USER+5
Const TBM_SETRANGE =          WM_USER+6
Const TBM_SETRANGEMIN =       WM_USER+7
Const TBM_SETRANGEMAX =       WM_USER+8
Const TBM_CLEARTICS =         WM_USER+9
Const TBM_SETSEL =            WM_USER+10
Const TBM_SETSELSTART =       WM_USER+11
Const TBM_SETSELEND =         WM_USER+12
Const TBM_GETPTICS =          WM_USER+14
Const TBM_GETTICPOS =         WM_USER+15
Const TBM_GETNUMTICS =        WM_USER+16
Const TBM_GETSELSTART =       WM_USER+17
Const TBM_GETSELEND =         WM_USER+18
Const TBM_CLEARSEL =          WM_USER+19
Const TBM_SETTICFREQ =        WM_USER+20
Const TBM_SETPAGESIZE =       WM_USER+21
Const TBM_GETPAGESIZE =       WM_USER+22
Const TBM_SETLINESIZE =       WM_USER+23
Const TBM_GETLINESIZE =       WM_USER+24
Const TBM_GETTHUMBRECT =      WM_USER+25
Const TBM_GETCHANNELRECT =    WM_USER+26
Const TBM_SETTHUMBLENGTH =    WM_USER+27
Const TBM_GETTHUMBLENGTH =    WM_USER+28
Const TBM_SETTOOLTIPS =       WM_USER+29
Const TBM_GETTOOLTIPS =       WM_USER+30
Const TBM_SETTIPSIDE =        WM_USER+31
Const TBTS_TOP =              0
Const TBTS_LEFT =             1
Const TBTS_BOTTOM =           2
Const TBTS_RIGHT =            3

Const TBM_SETBUDDY =          WM_USER+32
Const TBM_GETBUDDY =          WM_USER+33
Const TBM_SETUNICODEFORMAT =  CCM_SETUNICODEFORMAT
Const TBM_GETUNICODEFORMAT =  CCM_GETUNICODEFORMAT


'-------------------
' TreeView Control
'-------------------

Type _System_DeclareHandle_HTREEITEM:unused As DWord:End Type
TypeDef HTREEITEM   = *_System_DeclareHandle_HTREEITEM

Const TV_FIRST = &H1100             'TreeView messages

Const TVM_INSERTITEM  = TV_FIRST + 0
Function TreeView_InsertItem(hWnd As HWND, ByRef ref_is As TV_INSERTSTRUCT) As HTREEITEM
	Return SendMessage(hWnd,TVM_INSERTITEM,0,VarPtr(ref_is) As LPARAM) As HTREEITEM
End Function

Const TVM_DELETEITEM  = TV_FIRST + 1
Function TreeView_DeleteItem(hWnd As HWND, hitem As HTREEITEM) As BOOL
	Return SendMessage(hWnd,TVM_DELETEITEM,0,hitem As LPARAM) As BOOL
End Function
Function TreeView_DeleteAllItems(hWnd As HWND) As BOOL
	Return SendMessage(hWnd,TVM_DELETEITEM,0,TVI_ROOT As LPARAM) As BOOL
End Function

Const TVM_EXPAND = TV_FIRST + 2
Function TreeView_Expand(hWnd As HWND, hitem As HTREEITEM, code As DWord) As BOOL
	TreeView_Expand=SendMessage(hWnd,TVM_EXPAND,code As WPARAM,hitem As LPARAM) As BOOL
End Function

Const TVE_COLLAPSE      = &H0001
Const TVE_EXPAND        = &H0002
Const TVE_TOGGLE        = &H0003
Const TVE_EXPANDPARTIAL = &H4000
Const TVE_COLLAPSERESET = &H8000

Const TVM_GETITEMRECT = TV_FIRST + 4
Function TreeView_GetItemRect(hWnd As HWND, hitem As HTREEITEM, ByRef refRect As RECT, code As DWord) As BOOL
	memcpy(VarPtr(refRect),VarPtr(hitem),SizeOf(HTREEITEM))
	TreeView_GetItemRect=SendMessage(hWnd,TVM_GETITEMRECT,code As WPARAM,VarPtr(refRect) As LPARAM) As BOOL
End Function

Const TVM_GETCOUNT = TV_FIRST + 5
Function TreeView_GetCount(hWnd As HWND) As DWord
	TreeView_GetCount=SendMessage(hWnd,TVM_GETCOUNT,0,0) As DWord
End Function

Const TVM_GETINDENT = TV_FIRST + 6
Function TreeView_GetIndent(hWnd As HWND) As DWord
	TreeView_GetIndent=SendMessage(hWnd,TVM_GETINDENT,0,0) As DWord
End Function

Const TVM_SETINDENT = TV_FIRST + 7
Function TreeView_SetIndent(hWnd As HWND, indent As DWord) As DWord
	TreeView_SetIndent=SendMessage(hWnd,TVM_SETINDENT,indent As WPARAM,0) As DWord
End Function

Const TVM_GETIMAGELIST = TV_FIRST + 8
Function TreeView_GetImageList(hWnd As HWND, iImage As DWord) As HIMAGELIST
	TreeView_GetImageList=SendMessage(hWnd,TVM_GETIMAGELIST,iImage As WPARAM,0) As HIMAGELIST
End Function

Const TVSIL_NORMAL = 0
Const TVSIL_STATE  = 2

Const TVM_SETIMAGELIST = TV_FIRST + 9
Function TreeView_SetImageList(hWnd As HWND, himl As HIMAGELIST, iImage As DWord) As HIMAGELIST
	TreeView_SetImageList=SendMessage(hWnd,TVM_SETIMAGELIST,iImage As WPARAM,himl As LPARAM) As HIMAGELIST
End Function

Const TVM_GETNEXTITEM = TV_FIRST + 10
Function TreeView_GetNextItem(hWnd As HWND, hitem As HTREEITEM, code As DWord) As HTREEITEM
	TreeView_GetNextItem=SendMessage(hWnd,TVM_GETNEXTITEM,code As WPARAM,hitem As LPARAM) As HTREEITEM
End Function

Const TVM_SELECTITEM =			&H110B
Const TVM_GETITEM =				&H110C
Const TVM_SETITEM =				&H110D
Const TVM_GETVISIBLECOUNT =		&H1110
Const TVM_HITTEST =				&H1111
Const TVM_SORTCHILDREN =		&H1113
Const TVM_SETBKCOLOR =			&H111D
Const TVM_SETTEXTCOLOR =		&H111E
Const TVM_GETBKCOLOR =			&H111F
Const TVM_GETTEXTCOLOR =		&H1120

Const TVI_ROOT   = ((-&H10000) As HTREEITEM)
Const TVI_FIRST  = ((-&H0FFFF) As HTREEITEM)
Const TVI_LAST   = ((-&H0FFFE) As HTREEITEM)
Const TVI_SORT   = ((-&H0FFFD) As HTREEITEM)

Type TVITEM
	mask As DWord
	hItem As HTREEITEM
	state As DWord
	stateMask As DWord
	pszText As LPSTR
	cchTextMax As Long
	iImage As Long
	iSelectedImage As Long
	cChildren As Long
	lParam As LPARAM
End Type

Type TVINSERTSTRUCT
	hParent As HTREEITEM
	hInsertAfter As HTREEITEM
	item As TVITEM
End Type
TypeDef TV_INSERTSTRUCT = TVINSERTSTRUCT

Const TVIF_TEXT =             	&H0001
Const TVIF_IMAGE =            	&H0002
Const TVIF_PARAM =            	&H0004
Const TVIF_STATE =            	&H0008
Const TVIF_HANDLE =           	&H0010
Const TVIF_SELECTEDIMAGE =    	&H0020
Const TVIF_CHILDREN =         	&H0040
Const TVIF_INTEGRAL =         	&H0080
Const TVIS_SELECTED =         	&H0002
Const TVIS_CUT =              	&H0004
Const TVIS_DROPHILITED =      	&H0008
Const TVIS_BOLD =             	&H0010
Const TVIS_EXPANDED =         	&H0020
Const TVIS_EXPANDEDONCE =     	&H0040
Const TVIS_EXPANDPARTIAL =    	&H0080
Const TVIS_OVERLAYMASK =      	&H0F00
Const TVIS_STATEIMAGEMASK =   	&HF000
Const TVIS_USERMASK =         	&HF000

Type NMTREEVIEW
	hdr As NMHDR
	action As DWord
	itemOld As TVITEM
	itemNew As TVITEM
	ptDrag As POINTAPI
End Type

Const TVN_FIRST =             	-400
Const TVN_SELCHANGING =       	TVN_FIRST-1
Const TVN_SELCHANGED =        	TVN_FIRST-2
Const TVN_GETDISPINFO =       	TVN_FIRST-3
Const TVN_SETDISPINFO =       	TVN_FIRST-4
Const TVN_ITEMEXPANDING =     	TVN_FIRST-5
Const TVN_ITEMEXPANDED =      	TVN_FIRST-6
Const TVN_BEGINDRAG =         	TVN_FIRST-7
Const TVN_BEGINRDRAG =        	TVN_FIRST-8
Const TVN_DELETEITEM =        	TVN_FIRST-9
Const TVN_BEGINLABELEDIT =    	TVN_FIRST-10
Const TVN_ENDLABELEDIT =      	TVN_FIRST-11
Const TVN_KEYDOWN =           	TVN_FIRST-12
Const TVN_GETINFOTIP =        	TVN_FIRST-13
Const TVN_SINGLEEXPAND =      	TVN_FIRST-15

Const TVGN_ROOT =				&H0000
Const TVGN_NEXT =				&H0001
Const TVGN_PREVIOUS	=			&H0002
Const TVGN_PARENT =				&H0003
Const TVGN_CHILD =				&H0004
Const TVGN_FIRSTVISIBLE =		&H0005
Const TVGN_NEXTVISIBLE =		&H0006
Const TVGN_PREVIOUSVISIBLE =	&H0007
Const TVGN_DROPHILITE =			&H0008
Const TVGN_CARET =				&H0009
Const TVGN_LASTVISIBLE =		&H000A

'-----------------
' UpDown Control
'-----------------

Declare Function CreateUpDownControl Lib "comctl32" (dwStyle As DWord, x As Long, y As Long, cx As Long, cy As Long, hParent As HWND, nID As Long, hInst As HINSTANCE, hBuddy As HWND, nUpper As Long, nLower As Long, nPos As Long) As HWND

Const UDS_WRAP =              &H0001
Const UDS_SETBUDDYINT =       &H0002
Const UDS_ALIGNRIGHT =        &H0004
Const UDS_ALIGNLEFT =         &H0008
Const UDS_AUTOBUDDY =         &H0010
Const UDS_ARROWKEYS =         &H0020
Const UDS_HORZ =              &H0040
Const UDS_NOTHOUSANDS =       &H0080
Const UDS_HOTTRACK =          &H0100

Const UDM_SETRANGE =          WM_USER+101
Const UDM_GETRANGE =          WM_USER+102
Const UDM_SETPOS =            WM_USER+103
Const UDM_GETPOS =            WM_USER+104
Const UDM_SETBUDDY =          WM_USER+105
Const UDM_GETBUDDY =          WM_USER+106
Const UDM_SETACCEL =          WM_USER+107
Const UDM_GETACCEL =          WM_USER+108
Const UDM_SETBASE =           WM_USER+109
Const UDM_GETBASE =           WM_USER+110
Const UDM_SETRANGE32 =        WM_USER+111
Const UDM_GETRANGE32 =        WM_USER+112

Type NMUPDOWN
	hdr As NMHDR
	iPos As Long
	iDelta As Long
End Type

Const UDN_FIRST =             -721
Const UDN_DELTAPOS =          UDN_FIRST-1



'--------------------
' Calender Contorl
'--------------------

Const MONTHCAL_CLASS = "SysMonthCal32"

Const MCS_DAYSTATE       = &H0001
Const MCS_MULTISELECT    = &H0002
Const MCS_WEEKNUMBERS    = &H0004
Const MCS_NOTODAYCIRCLE  = &H0008
Const MCS_NOTODAY        = &H0010

Const MCM_FIRST          = &H1000
Const MCM_GETCURSEL      = (MCM_FIRST + 1)
Const MCM_SETCURSEL      = (MCM_FIRST + 2)
Const MCM_GETMAXSELCOUNT = (MCM_FIRST + 3)
Const MCM_SETMAXSELCOUNT = (MCM_FIRST + 4)
Const MCM_GETSELRANGE    = (MCM_FIRST + 5)
Const MCM_SETSELRANGE    = (MCM_FIRST + 6)
Const MCM_GETMONTHRANGE  = (MCM_FIRST + 7)
Const MCM_SETDAYSTATE    = (MCM_FIRST + 8)
Const MCM_GETMINREQRECT  = (MCM_FIRST + 9)
Const MCM_SETCOLOR       = (MCM_FIRST + 10)
Const MCM_GETCOLOR       = (MCM_FIRST + 11)
Const MCM_SETTODAY       = (MCM_FIRST + 12)
Const MCM_GETTODAY       = (MCM_FIRST + 13)
Const MCM_HITTEST        = (MCM_FIRST + 14)

Const MCN_FIRST = &HFFFFFD12

Type NMSELCHANGE
	nmhdr As NMHDR
	stSelStart As SYSTEMTIME
	stSelEnd As SYSTEMTIME
End Type

Const MCN_SELCHANGE = MCN_FIRST + &H1


#endif '_INC_COMMCTRL
