flat assembler
Message board for the users of flat assembler.

Index > Windows > Update required to COMCTL64.INC

Author
Thread Post new topic Reply to topic
Slor



Joined: 13 Oct 2020
Posts: 2
Slor 15 Oct 2020, 13:28
Hi! Long time user, first time poster... Smile

I was working on porting some old code to 64-bit this week when I ran into an issue with some TreeView constants in COMCTL64.INC currently, they are the same as in COMCTL32.INC:
Code:
TVI_ROOT = 0FFFF0000h
TVI_FIRST = 0FFFF0001h
TVI_LAST = 0FFFF0002h
TVI_SORT = 0FFFF0003h    

After a little bit of head-scratching over a porting failure, I found the 64-bit definitions needed to be expanded to be correct for use in TV_INSERTSTRUCT, and I used this:
Code:
TVI_ROOT = 0FFFFFFFFFFFF0000h
TVI_FIRST = 0FFFFFFFFFFFF0001h
TVI_LAST = 0FFFFFFFFFFFF0002h
TVI_SORT = 0FFFFFFFFFFFF0003h    

After a quick discussion with Tomasz, he recommends this may be most appropriate and useable for both 32-bit and 64-bit includes:
Code:
TVI_ROOT  = -10000h
TVI_FIRST = -10000h+1
TVI_LAST  = -10000h+2
TVI_SORT  = -10000h+3    

Either works in my testing, and the Windows SDK headers have it as this:
Code:
#define TVI_ROOT ((HTREEITEM)(ULONG_PTR)-0x10000)
#define TVI_FIRST ((HTREEITEM)(ULONG_PTR)-0x0FFFF)
#define TVI_LAST ((HTREEITEM)(ULONG_PTR)-0x0FFFE)
#define TVI_SORT ((HTREEITEM)(ULONG_PTR)-0x0FFFD)    

Tomasz suggested I post here for additional feedback from you fine folks to see if there might be any odd cases where either of them might fail before making changes to the official code.

Thanks,
James
Post 15 Oct 2020, 13:28
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20460
Location: In your JS exploiting you and your system
revolution 15 Oct 2020, 13:34
If ever there is a time that a 128-bit CPU is made then the negative values will still work. Smile

If it was me I'd just use the original values:
Code:
TVI_ROOT  = -0x10000
TVI_FIRST = -0x0FFFF
TVI_LAST  = -0x0FFFE
TVI_SORT  = -0x0FFFD    
Then I don't have to worry about the order of precedence, or doing manual conversions in my head when debugging.
Post 15 Oct 2020, 13:34
View user's profile Send private message Visit poster's website Reply with quote
ProMiNick



Joined: 24 Mar 2012
Posts: 806
Location: Russian Federation, Sochi
ProMiNick 15 Oct 2020, 22:05
I personaly prefer
Code:
HRESULT equ -$80000000+$80000000 xor

S_OK                            = HRESULT(0)
S_FALSE                         = HRESULT(1)
E_PENDING                       = HRESULT($8000000A)
E_NOTIMPL                       = HRESULT($80004001)
E_NOINTERFACE                   = HRESULT($80004002)
E_POINTER                       = HRESULT($80004003)
E_ABORT                         = HRESULT($80004004)
E_FAIL                          = HRESULT($80004005)
E_UNEXPECTED                    = HRESULT($8000FFFF)
CLASS_E_NOAGGREGATION           = HRESULT($80040110)
CLASS_E_CLASSNOTAVAILABLE       = HRESULT($80040111)
CLASS_E_NOTLICENSED             = HRESULT($80040112)
SELFREG_E_TYPELIB               = HRESULT($80040200)
SELFREG_E_CLASS                 = HRESULT($80040201)
E_ACCESSDENIED                  = HRESULT($80070005)
E_HANDLE                        = HRESULT($80070006)
E_OUTOFMEMORY                   = HRESULT($8007000E)
E_INVALIDARG                    = HRESULT($80070057)    


looks more natural than via negate numbers (very likely like HLL)

by the way never compare consts in 64 bit regs - it is buguos way.
MS recomend to use low parts(32 or 16 bit parts) of registers to detect constant.
I dont know any MS const that was a truly 64bit constant.
--------------------
In case of TVI
Code:
HTREEITEM equ -$10000 or

TVI_ROOT  = HTREEITEM(0)
TVI_FIRST = HTREEITEM(1)
TVI_LAST  = HTREEITEM(2)
TVI_SORT  = HTREEITEM(3)

    
Post 15 Oct 2020, 22:05
View user's profile Send private message Send e-mail Reply with quote
Slor



Joined: 13 Oct 2020
Posts: 2
Slor 15 Oct 2020, 23:09
ProMiNick wrote:
by the way never compare consts in 64 bit regs - it is buguos way.
MS recomend to use low parts(32 or 16 bit parts) of registers to detect constant.
I dont know any MS const that was a truly 64bit constant.

Maybe I'm misunderstanding your point here... The issue that caused me to find this was that the API in question was not satisfied with just the lower 32 bits of the TVI constants being correct. It only worked after making sure the upper 32 were set as well.
Post 15 Oct 2020, 23:09
View user's profile Send private message Reply with quote
ProMiNick



Joined: 24 Mar 2012
Posts: 806
Location: Russian Federation, Sochi
ProMiNick 15 Oct 2020, 23:46
I analize one of MS executbles in x86 & in x64.
MS passes params as it wants (I mean x64 version) with negate high part or with zeroed.
Some their code expects constants to be signextended, but some code immune to that.
So if MS required somewhere that thou pass sign extended constant never expect that in another place MS will return to thou sign extended constant (it could return contant with undetermined high part).
mov eax,HKEY_LOCAL_MACHINE
&
mov rax,-$80000000+$80000000 xor HKEY_LOCAL_MACHINE
they both pass constant correctly, but one of them pass zeroed high part while the other negate one.
Post 15 Oct 2020, 23:46
View user's profile Send private message Send e-mail Reply with quote
bitRAKE



Joined: 21 Jul 2003
Posts: 4079
Location: vpcmpistri
bitRAKE 16 Oct 2020, 15:23
ProMiNick wrote:
I dont know any MS const that was a truly 64bit constant.
Just to be pedantic: if the underlying type is 64-bit then the constant must be 64-bit. For example, INVALID_HANDLE_VALUE.

_________________
¯\(°_o)/¯ “languages are not safe - uses can be” Bjarne Stroustrup
Post 16 Oct 2020, 15:23
View user's profile Send private message Visit poster's website Reply with quote
ProMiNick



Joined: 24 Mar 2012
Posts: 806
Location: Russian Federation, Sochi
ProMiNick 18 Oct 2020, 21:00
I guess I would agree even MS in win10 SDK defines TVI_ enums this way
(by the way here it is) but structs are cutted off - this is common part for 32 & 64 bit
Code:
; COMCTL32.DLL constants

; Common control window classes
HOTKEY_CLASS       equ 'msctls_hotkey32'
PROGRESS_CLASS     equ 'msctls_progress32'
STATUS_CLASS       equ 'msctls_statusbar32'
TRACKBAR_CLASS     equ 'msctls_trackbar32'
UPDOWN_CLASS       equ 'msctls_updown32'
TOOLTIPS_CLASS     equ 'tooltips_class32'
ANIMATE_CLASS      equ 'SysAnimate32'
HEADER_CLASS       equ 'SysHeader32'
LISTVIEW_CLASS     equ 'SysListView32'
TREEVIEW_CLASS     equ 'SysTreeView32'
TABCONTROL_CLASS   equ 'SysTabControl32'
MONTHCAL_CLASS     equ 'SysMonthCal32'
DATETIMEPICK_CLASS equ 'SysDateTimePick32'
TOOLBAR_CLASS      equ 'ToolbarWindow32'
REBAR_CLASS        equ 'ReBarWindow32'
WC_HEADER          equ 'SysHeader32'
WC_TOOLBAR         equ 'ToolbarWindow32'
WC_LISTVIEW        equ 'SysListView32'
WC_TREEVIEW        equ 'SysTreeView32'
WC_COMBOBOXEX      equ 'ComboBoxEx32'
WC_TABCONTROL      equ 'SysTabControl32'
WC_PAGESCROLLER    equ 'SysPager'
WC_LINK            equ 'SysLink'
WC_NATIVEFONTCTL   equ 'NativeFontCtl'

; InitCommonControlsEx classes
ICC_LISTVIEW_CLASSES    = $0001
ICC_TREEVIEW_CLASSES    = $0002
ICC_BAR_CLASSES         = $0004
ICC_TAB_CLASSES         = $0008
ICC_UPDOWN_CLASS        = $0010
ICC_PROGRESS_CLASS      = $0020
ICC_HOTKEY_CLASS        = $0040
ICC_ANIMATE_CLASS       = $0080
ICC_WIN95_CLASSES       = $00FF
ICC_DATE_CLASSES        = $0100
ICC_USEREX_CLASSES      = $0200
ICC_COOL_CLASSES        = $0400
ICC_INTERNET_CLASSES    = $0800
ICC_PAGESCROLLER_CLASS  = $1000
ICC_NATIVEFNTCTL_CLASS  = $2000
ICC_STANDARD_CLASSES    = $4000
ICC_LINK_CLASS          = $8000
ICC_ALL_CLASSES         = $FFFF

; DRAWITEMSTRUCT control types (in addition to WINUSER definitions)
ODT_HEADER   = 100
ODT_TAB      = 101
ODT_LISTVIEW = 102

; Ranges for control message IDs
LVM_FIRST = $1000
TV_FIRST  = $1100
HDM_FIRST = $1200
TCM_FIRST = $1300
PGM_FIRST = $1400
ECM_FIRST = $1500
BCM_FIRST = $1600
CBM_FIRST = $1700
CCM_FIRST = $2000

MCM_FIRST = $1000
DTM_FIRST = $1000

; Ranges for control notification IDs
NM_FIRST   = 0
NM_LAST   = -99

LVN_FIRST  = -100
LVN_LAST   = -199

PSN_FIRST  = -200 ; MUST GO AWAY
PSN_LAST   = -299 ; TO ANOTHER HEADER

HDN_FIRST  = -300
HDN_LAST   = -399

TVN_FIRST  = -400
TVN_LAST   = -499

TTN_FIRST  = -520
TTN_LAST   = -549

TCN_FIRST  = -550
TCN_LAST   = -580

CDN_FIRST  = -601
CDN_LAST   = -699

TBN_FIRST  = -700
TBN_Last   = -720

UDN_FIRST  = -721
UDN_LAST   = -729

DTN_FIRST  = -740
DTN_LAST   = -745

MCN_FIRST  = -746
MCN_LAST   = -752

DTN_FIRST2 = -753
DTN_LAST2  = -799

CBEN_FIRST = -800
CBEN_LAST  = -830

RBN_FIRST  = -831
RBN_LAST   = -859

IPN_FIRST  = -860
IPN_LAST   = -879

SBN_FIRST  = -880
SBN_LAST   = -899

PGN_FIRST  = -900
PGN_LAST   = -950

WMN_FIRST  = -1000
WMN_LAST   = -1200

BCN_FIRST  = -1250
BCN_LAST   = -1350

TRBN_FIRST = -1501
TRBN_LAST  = -1519

; WH_MSGFILTER Filter Proc Codes (in addition to WINUSER definitions)
MSGF_COMMCTRL_BEGINDRAG  = $4200
MSGF_COMMCTRL_SIZEHEADER = $4201
MSGF_COMMCTRL_DRAGSELECT = $4202
MSGF_COMMCTRL_TOOLBARCUST= $4203

; Shared messages
CCM_SETBKCOLOR       = CCM_FIRST + 1
CCM_SETCOLORSCHEME   = CCM_FIRST + 2
CCM_GETCOLORSCHEME   = CCM_FIRST + 3
CCM_GETDROPTARGET    = CCM_FIRST + 4
CCM_SETUNICODEFORMAT = CCM_FIRST + 5
CCM_GETUNICODEFORMAT = CCM_FIRST + 6
CCM_SETVERSION       = CCM_FIRST + 7
CCM_GETVERSION       = CCM_FIRST + 8
CCM_SETNOTIFYWINDOW  = CCM_FIRST + 9
CCM_SETWINDOWTHEME   = CCM_FIRST + 11
CCM_DPISCALE         = CCM_FIRST + 12

; Generic WM_NOTIFY notification codes
NM_OUTOFMEMORY     = NM_FIRST - 1
NM_CLICK           = NM_FIRST - 2
NM_DBLCLK          = NM_FIRST - 3
NM_RETURN          = NM_FIRST - 4
NM_RCLICK          = NM_FIRST - 5
NM_RDBLCLK         = NM_FIRST - 6
NM_SETFOCUS        = NM_FIRST - 7
NM_KILLFOCUS       = NM_FIRST - 8
NM_CUSTOMDRAW      = NM_FIRST - 12
NM_HOVER           = NM_FIRST - 13
NM_NCHITTEST       = NM_FIRST - 14
NM_KEYDOWN         = NM_FIRST - 15
NM_RELEASEDCAPTURE = NM_FIRST - 16
NM_SETCURSOR       = NM_FIRST - 17
NM_CHAR            = NM_FIRST - 18
NM_TOOLTIPSCREATED = NM_FIRST - 19
NM_LDOWN           = NM_FIRST - 20
NM_RDOWN           = NM_FIRST - 21
NM_THEMECHANGED    = NM_FIRST - 22

;====== COMMON CONTROL STYLES ================================================
; Common control styles
CCS_TOP           = $00000001
CCS_NOMOVEY       = $00000002
CCS_BOTTOM        = $00000003
CCS_NORESIZE      = $00000004
CCS_NOPARENTALIGN = $00000008
CCS_ADJUSTABLE    = $00000020
CCS_NODIVIDER     = $00000040
CCS_VERT          = $00000080
CCS_LEFT          = CCS_VERT or CCS_TOP
CCS_RIGHT         = CCS_VERT or CCS_BOTTOM
CCS_NOMOVEX       = CCS_VERT or CCS_NOMOVEY

;==================== CUSTOM DRAW ==========================================
; Custom Draw return flags
CDRF_DODEFAULT         = $00000000
CDRF_NEWFONT           = $00000002
CDRF_SKIPDEFAULT       = $00000004
CDRF_NOTIFYPOSTPAINT   = $00000010
CDRF_NOTIFYITEMDRAW    = $00000020
CDRF_NOTIFYSUBITEMDRAW = $00000020
CDRF_NOTIFYPOSTERASE   = $00000040

; drawstage flags
CDDS_PREPAINT          = $00000001
CDDS_POSTPAINT         = $00000002
CDDS_PREERASE          = $00000003
CDDS_POSTERASE         = $00000004
CDDS_ITEM              = $00010000
CDDS_ITEMPREPAINT      = CDDS_ITEM or CDDS_PREPAINT
CDDS_ITEMPOSTPAINT     = CDDS_ITEM or CDDS_POSTPAINT
CDDS_ITEMPREERASE      = CDDS_ITEM or CDDS_PREERASE
CDDS_ITEMPOSTERASE     = CDDS_ITEM or CDDS_POSTERASE
CDDS_SUBITEM           = $00020000

; itemState flags
CDIS_SELECTED          = $0001
CDIS_GRAYED            = $0002
CDIS_DISABLED          = $0004
CDIS_CHECKED           = $0008
CDIS_FOCUS             = $0010
CDIS_DEFAULT           = $0020
CDIS_HOT               = $0040
CDIS_MARKED            = $0080
CDIS_INDETERMINATE     = $0100
CDIS_SHOWKEYBOARDCUES  = $0200

;====== IMAGE APIS ===========================================================
; Image list color values
CLR_NONE    = $FFFFFFFF
CLR_DEFAULT = $FF000000
CLR_HILIGHT = CLR_DEFAULT

; ImageList_LoadImage types SHOULD NOT BE HERE
IMAGE_BITMAP      = 0
IMAGE_ICON        = 1
IMAGE_CURSOR      = 2
IMAGE_ENHMETAFILE = 3

; ImageList_LoadImage flags SHOULD NOT BE HERE
LR_DEFAULTCOLOR     = 0000h
LR_MONOCHROME       = 0001h
LR_COLOR            = 0002h
LR_COPYRETURNORG    = 0004h
LR_COPYDELETEORG    = 0008h
LR_LOADFROMFILE     = 0010h
LR_LOADTRANSPARENT  = 0020h
LR_DEFAULTSIZE      = 0040h
LR_VGACOLOR         = 0080h
LR_LOADMAP3DCOLORS  = 1000h
LR_CREATEDIBSECTION = 2000h
LR_COPYFROMRESOURCE = 4000h
LR_SHARED           = 8000h

; Image list types
ILC_MASK          = $00000001
ILC_COLOR         = $00000000
ILC_COLORDDB      = $000000FE
ILC_COLOR4        = $00000004
ILC_COLOR8        = $00000008
ILC_COLOR16       = $00000010
ILC_COLOR24       = $00000018
ILC_COLOR32       = $00000020
ILC_PALETTE       = $00000800
ILC_MIRROR        = $00002000
ILC_PERITEMMIRROR = $00008000

; Image list draw flags
ILD_NORMAL        = $00000000
ILD_TRANSPARENT   = $00000001
ILD_BLEND25       = $00000002
ILD_FOCUS         = $00000002
ILD_BLEND50       = $00000004
ILD_BLEND         = $00000004
ILD_SELECTED      = $00000004
ILD_MASK          = $00000010
ILD_IMAGE         = $00000020
ILD_ROP           = $00000040
ILD_OVERLAYMASK   = $00000F00
ILD_PRESERVEALPHA = $00001000
ILD_SCALE         = $00002000
ILD_DPISCALE      = $00004000
ILD_ASYNC         = $00008000

; Image list state flags
ILS_NORMAL   = 0
ILS_GLOW     = 1
ILS_SHADOW   = 2
ILS_SATURATE = 4
ILS_ALPHA    = 8

; Image list copy flags
ILCF_MOVE = 0
ILCF_SWAP = 1

; Image list RW stream flags
ILP_NORMAL    = 0
ILP_DOWNLEVEL = 1

;======PROPERTY SHEET DEFINITIONS MUST GO AWAY TO ANOTHER HEADER ===========
; Property sheet page flags
PSP_DEFAULT             = $0000
PSP_DLGINDIRECT         = $0001
PSP_USEHICON            = $0002
PSP_USEICONID           = $0004
PSP_USETITLE            = $0008
PSP_HASHELP             = $0020
PSP_USEREFPARENT        = $0040
PSP_USECALLBACK         = $0080
PSP_PREMATURE           = $0400
PSP_HIDEHEADER          = $0800
PSP_USEHEADERTITLE      = $1000
PSP_USEHEADERSUBTITLE   = $2000
PSP_USEFUSIONCONTEXT    = $4000

; Property sheet page actions
PSPCB_RELEASE = 1
PSPCB_CREATE  = 2

; Property sheet header flags
PSH_DEFAULT       = 0000h
PSH_PROPTITLE     = 0001h
PSH_USEHICON      = 0002h
PSH_USEICONID     = 0004h
PSH_PROPSHEETPAGE = 0008h
PSH_MULTILINETABS = 0010h
PSH_WIZARD        = 0020h
PSH_USEPSTARTPAGE = 0040h
PSH_NOAPPLYNOW    = 0080h
PSH_USECALLBACK   = 0100h
PSH_HASHELP       = 0200h
PSH_MODELESS      = 0400h

; Property sheet actions
PSCB_INITIALIZED  = 1

; Property sheet return values
PSNRET_NOERROR              = 0
PSNRET_INVALID              = 1
PSNRET_INVALID_NOCHANGEPAGE = 2

; Property sheet buttons
PSBTN_BACK            = 0
PSBTN_NEXT            = 1
PSBTN_FINISH          = 2
PSBTN_OK              = 3
PSBTN_APPLYNOW        = 4
PSBTN_CANCEL          = 5
PSBTN_HELP            = 6
PSWIZB_BACK           = 1
PSWIZB_NEXT           = 2
PSWIZB_FINISH         = 4
PSWIZB_DISABLEDFINISH = 8
ID_PSRESTARTWINDOWS   = 2
ID_PSREBOOTSYSTEM     = ID_PSRESTARTWINDOWS or 1

; Property sheet sizes
PROP_SM_CXDLG  = 212
PROP_SM_CYDLG  = 188
PROP_MED_CXDLG = 227
PROP_MED_CYDLG = 215
PROP_LG_CXDLG  = 252
PROP_LG_CYDLG  = 218
WIZ_CXDLG      = 276
WIZ_CYDLG      = 140
WIZ_CXBMP      = 80
WIZ_BODYX      = 92
WIZ_BODYCX     = 184

; Property sheet messages
PSM_SETCURSEL       = WM_USER + 101
PSM_REMOVEPAGE      = WM_USER + 102
PSM_ADDPAGE         = WM_USER + 103
PSM_CHANGED         = WM_USER + 104
PSM_RESTARTWINDOWS  = WM_USER + 105
PSM_REBOOTSYSTEM    = WM_USER + 106
PSM_CANCELTOCLOSE   = WM_USER + 107
PSM_QUERYSIBLINGS   = WM_USER + 108
PSM_UNCHANGED       = WM_USER + 109
PSM_APPLY           = WM_USER + 110
PSM_SETTITLEA       = WM_USER + 111
PSM_SETTITLEW       = WM_USER + 120
PSM_SETWIZBUTTONS   = WM_USER + 112
PSM_PRESSBUTTON     = WM_USER + 113
PSM_SETCURSELID     = WM_USER + 114
PSM_SETFINISHTEXTA  = WM_USER + 115
PSM_SETFINISHTEXTW  = WM_USER + 121
PSM_GETTABCONTROL   = WM_USER + 116
PSM_ISDIALOGMESSAGE = WM_USER + 117

; Property sheet notifications
PSN_SETACTIVE   = PSN_FIRST - 0
PSN_KILLACTIVE  = PSN_FIRST - 1
PSN_APPLY       = PSN_FIRST - 2
PSN_RESET       = PSN_FIRST - 3
PSN_HELP        = PSN_FIRST - 5
PSN_WIZBACK     = PSN_FIRST - 6
PSN_WIZNEXT     = PSN_FIRST - 7
PSN_WIZFINISH   = PSN_FIRST - 8
PSN_QUERYCANCEL = PSN_FIRST - 9

shortnames \
PSM_SETTITLE,\
PSM_SETFINISHTEXT

;====== HEADER CONTROL =======================================================
; Header control styles
HDS_HORZ       = $0000
HDS_BUTTONS    = $0002
HDS_HOTTRACK   = $0004
HDS_HIDDEN     = $0008
HDS_DRAGDROP   = $0040
HDS_FULLDRAG   = $0080
HDS_FILTERBAR  = $0100
HDS_FLAT       = $0200
HDS_CHECKBOXES = $0400
HDS_NOSIZING   = $0800
HDS_OVERFLOW   = $1000

; Header item structure members flags
HDI_WIDTH      = $0001
HDI_HEIGHT     = HDI_WIDTH
HDI_TEXT       = $0002
HDI_FORMAT     = $0004
HDI_LPARAM     = $0008
HDI_BITMAP     = $0010
HDI_IMAGE      = $0020
HDI_DI_SETITEM = $0040
HDI_ORDER      = $0080
HDI_FILTER     = $0100
HDI_STATE      = $0200

; Header item format flags
HDF_LEFT            = $00000000
HDF_RIGHT           = $00000001
HDF_CENTER          = $00000002
HDF_JUSTIFYMASK     = $00000003
HDF_RTLREADING      = $00000004
HDF_CHECKBOX        = $00000040
HDF_CHECKED         = $00000080
HDF_FIXEDWIDTH      = $00000100
HDF_SORTDOWN        = $00000200
HDF_SORTUP          = $00000400
HDF_IMAGE           = $00000800
HDF_BITMAP_ON_RIGHT = $00001000
HDF_BITMAP          = $00002000
HDF_STRING          = $00004000
HDF_OWNERDRAW       = $00008000
HDF_SPLITBUTTON     = $01000000

; Header item filter types
HDFT_ISSTRING   = $0000
HDFT_ISNUMBER   = $0001
HDFT_ISDATE     = $0002
HDFT_HASNOVALUE = $8000

; Header item state
HDIS_FOCUSED = 1

; Hit test result flags
HHT_NOWHERE         = $0001
HHT_ONHEADER        = $0002
HHT_ONDIVIDER       = $0004
HHT_ONDIVOPEN       = $0008
HHT_ONFILTER        = $0010
HHT_ONFILTERBUTTON  = $0020
HHT_ABOVE           = $0100
HHT_BELOW           = $0200
HHT_TORIGHT         = $0400
HHT_TOLEFT          = $0800
HHT_ONITEMSTATEICON = $1000
HHT_ONDROPDOWN      = $2000
HHT_ONOVERFLOW      = $4000

; Header control messages
HDM_GETITEMCOUNT           = HDM_FIRST + 0
HDM_INSERTITEMA            = HDM_FIRST + 1
HDM_DELETEITEM             = HDM_FIRST + 2
HDM_GETITEMA               = HDM_FIRST + 3
HDM_SETITEMA               = HDM_FIRST + 4
HDM_LAYOUT                 = HDM_FIRST + 5
HDM_HITTEST                = HDM_FIRST + 6
HDM_GETITEMRECT            = HDM_FIRST + 7
HDM_SETIMAGELIST           = HDM_FIRST + 8
HDM_GETIMAGELIST           = HDM_FIRST + 9
HDM_INSERTITEMW            = HDM_FIRST + 10
HDM_GETITEMW               = HDM_FIRST + 11
HDM_SETITEMW               = HDM_FIRST + 12
HDM_ORDERTOINDEX           = HDM_FIRST + 15
HDM_CREATEDRAGIMAGE        = HDM_FIRST + 16
HDM_GETORDERARRAY          = HDM_FIRST + 17
HDM_SETORDERARRAY          = HDM_FIRST + 18
HDM_SETHOTDIVIDER          = HDM_FIRST + 19
HDM_SETBITMAPMARGIN        = HDM_FIRST + 20
HDM_GETBITMAPMARGIN        = HDM_FIRST + 21
HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22
HDM_EDITFILTER             = HDM_FIRST + 23
HDM_CLEARFILTER            = HDM_FIRST + 24
HDM_GETITEMDROPDOWNRECT    = HDM_FIRST + 25
HDM_GETOVERFLOWRECT        = HDM_FIRST + 26
HDM_GETFOCUSEDITEM         = HDM_FIRST + 27
HDM_SETFOCUSEDITEM         = HDM_FIRST + 28

; Header control WM_NOTIFY notification codes
HDN_ITEMCHANGINGA      = HDN_FIRST - 0
HDN_ITEMCHANGEDA       = HDN_FIRST - 1
HDN_ITEMCLICKA         = HDN_FIRST - 2
HDN_ITEMDBLCLICKA      = HDN_FIRST - 3
HDN_DIVIDERDBLCLICKA   = HDN_FIRST - 5
HDN_BEGINTRACKA        = HDN_FIRST - 6
HDN_ENDTRACKA          = HDN_FIRST - 7
HDN_TRACKA             = HDN_FIRST - 8
HDN_GETDISPINFOA       = HDN_FIRST - 9
HDN_BEGINDRAG          = HDN_FIRST - 10
HDN_ENDDRAG            = HDN_FIRST - 11
HDN_FILTERCHANGE       = HDN_FIRST - 12
HDN_FILTERBTNCLICK     = HDN_FIRST - 13
HDN_BEGINFILTEREDIT    = HDN_FIRST - 14
HDN_ENDFILTEREDIT      = HDN_FIRST - 15
HDN_ITEMSTATEICONCLICK = HDN_FIRST - 16
HDN_ITEMKEYDOWN        = HDN_FIRST - 17
HDN_DROPDOWN           = HDN_FIRST - 18
HDN_OVERFLOWCLICK      = HDN_FIRST - 19
HDN_ITEMCHANGINGW      = HDN_FIRST - 20
HDN_ITEMCHANGEDW       = HDN_FIRST - 21
HDN_ITEMCLICKW         = HDN_FIRST - 22
HDN_ITEMDBLCLICKW      = HDN_FIRST - 23
HDN_DIVIDERDBLCLICKW   = HDN_FIRST - 25
HDN_BEGINTRACKW        = HDN_FIRST - 26
HDN_ENDTRACKW          = HDN_FIRST - 27
HDN_TRACKW             = HDN_FIRST - 28
HDN_GETDISPINFOW       = HDN_FIRST - 29

shortnames \
HDM_INSERTITEM,\
HDM_GETITEM,\
HDM_SETITEM,\
HDN_ITEMCHANGING,\
HDN_ITEMCHANGED,\
HDN_ITEMCLICK,\
HDN_ITEMDBLCLICK,\
HDN_DIVIDERDBLCLICK,\
HDN_BEGINTRACK,\
HDN_ENDTRACK,\
HDN_TRACK,\
HDN_GETDISPINFO

;====== TOOLBAR CONTROL ======================================================
; Toolbar bitmap flags
CMB_MASKED = 2

; Toolbar button states
TBSTATE_CHECKED       = $01
TBSTATE_PRESSED       = $02
TBSTATE_ENABLED       = $04
TBSTATE_HIDDEN        = $08
TBSTATE_INDETERMINATE = $10
TBSTATE_WRAP          = $20
TBSTATE_ELLIPSES      = $40
TBSTATE_MARKED        = $80

; Toolbar button styles
BTNS_BUTTON          = $0000
BTNS_SEP             = $0001
BTNS_CHECK           = $0002
BTNS_GROUP           = $0004
BTNS_CHECKGROUP      = BTNS_GROUP or BTNS_CHECK
BTNS_DROPDOWN        = $0008
BTNS_AUTOSIZE        = $0010
BTNS_NOPREFIX        = $0020
BTNS_SHOWTEXT        = $0040
BTNS_WHOLEDROPDOWN   = $0080
TBSTYLE_TOOLTIPS     = $0100
TBSTYLE_WRAPABLE     = $0200
TBSTYLE_ALTDRAG      = $0400
TBSTYLE_FLAT         = $0800
TBSTYLE_LIST         = $1000
TBSTYLE_CUSTOMERASE  = $2000
TBSTYLE_REGISTERDROP = $4000
TBSTYLE_TRANSPARENT  = $8000
; Obsolete toolbar button styles
TBSTYLE_BUTTON       = BTNS_BUTTON
TBSTYLE_SEP          = BTNS_SEP
TBSTYLE_CHECK        = BTNS_CHECK
TBSTYLE_GROUP        = BTNS_GROUP
TBSTYLE_CHECKGROUP   = BTNS_CHECKGROUP
TBSTYLE_DROPDOWN     = BTNS_DROPDOWN
TBSTYLE_AUTOSIZE     = BTNS_AUTOSIZE
TBSTYLE_NOPREFIX     = BTNS_NOPREFIX

; Toolbar button extended styles
TBSTYLE_EX_DRAWDDARROWS       = $0001
TBSTYLE_EX_MULTICOLUMN        = $0002
TBSTYLE_EX_VERTICAL           = $0004
TBSTYLE_EX_MIXEDBUTTONS       = $0008
TBSTYLE_EX_HIDECLIPPEDBUTTONS = $0010
TBSTYLE_EX_DOUBLEBUFFER       = $0080

; Toolbar custom draw return flags
TBCDRF_NOEDGES        = $00010000
TBCDRF_HILITEHOTTRACK = $00020000
TBCDRF_NOOFFSET       = $00040000
TBCDRF_NOMARK         = $00080000
TBCDRF_NOETCHEDEFFECT = $00100000
TBCDRF_BLENDICON      = $00200000
TBCDRF_NOBACKGROUND   = $00400000
TBCDRF_USECDCOLORS    = $00800000

; System-defined button bitmaps
HINST_COMMCTRL       = -1
IDB_STD_SMALL_COLOR  = 0
IDB_STD_LARGE_COLOR  = 1
IDB_VIEW_SMALL_COLOR = 4
IDB_VIEW_LARGE_COLOR = 5
IDB_HIST_SMALL_COLOR = 8
IDB_HIST_LARGE_COLOR = 9
IDB_HIST_NORMAL      = 12
IDB_HIST_HOT         = 13
IDB_HIST_DISABLED    = 14
IDB_HIST_PRESSED     = 15

; Icon indexes for standard bitmap
STD_CUT        = 0
STD_COPY       = 1
STD_PASTE      = 2
STD_UNDO       = 3
STD_REDOW      = 4
STD_DELETE     = 5
STD_FILENEW    = 6
STD_FILEOPEN   = 7
STD_FILESAVE   = 8
STD_PRINTPRE   = 9
STD_PROPERTIES = 10
STD_HELP       = 11
STD_FIND       = 12
STD_REPLACE    = 13
STD_PRINT      = 14

; Icon indexes for standard view bitmap
VIEW_LARGEICONS    = 0
VIEW_SMALLICONS    = 1
VIEW_LIST          = 2
VIEW_DETAILS       = 3
VIEW_SORTNAME      = 4
VIEW_SORTSIZE      = 5
VIEW_SORTDATE      = 6
VIEW_SORTTYPE      = 7
VIEW_PARENTFOLDER  = 8
VIEW_NETCONNECT    = 9
VIEW_NETDISCONNECT = 10
VIEW_NEWFOLDER     = 11
VIEW_VIEWMENU      = 12

; Icon indexes for history bitmap
HIST_BACK           = 0
HIST_FORWARD        = 1
HIST_FAVORITES      = 2
HIST_ADDTOFAVORITES = 3
HIST_VIEWTREE       = 4

; Toolbar insertion mark flags
TBIMHT_BEFORE     = 0
TBIMHT_AFTER      = 1
TBIMHT_BACKGROUND = 2

; Toolbar bitmap flags
TBBF_LARGE = 1

; Toolbar buttoninfo structure members flags
TBIF_IMAGE   = $00000001
TBIF_TEXT    = $00000002
TBIF_STATE   = $00000004
TBIF_STYLE   = $00000008
TBIF_LPARAM  = $00000010
TBIF_COMMAND = $00000020
TBIF_SIZE    = $00000040
TBIF_BYINDEX = $80000000

; Toolbar metrics structure members flags
TBMF_PAD           = 1
TBMF_BARPAD        = 2
TBMF_BUTTONSPACING = 4

; Hot item change flags
HICF_OTHER          = $00000000
HICF_MOUSE          = $00000001
HICF_ARROWKEYS      = $00000002
HICF_ACCELERATOR    = $00000004
HICF_DUPACCEL       = $00000008
HICF_ENTERING       = $00000010
HICF_LEAVING        = $00000020
HICF_RESELECT       = $00000040
HICF_LMOUSE         = $00000080
HICF_TOGGLEDROPDOWN = $00000100

; Toolbar notify return flags
TBNRF_HIDEHELP     = 1
TBNRF_ENDCUSTOMIZE = 2

; Toolbar item display information structure members flags
TBNF_IMAGE      = $00000001
TBNF_TEXT       = $00000002
TBNF_DI_SETITEM = $10000000

; Return codes for TBN_DROPDOWN
TBDDRET_DEFAULT      = 0
TBDDRET_NODEFAULT    = 1
TBDDRET_TREATPRESSED = 2

; Toolbar messages
TB_ENABLEBUTTON          = WM_USER + 1
TB_CHECKBUTTON           = WM_USER + 2
TB_PRESSBUTTON           = WM_USER + 3
TB_HIDEBUTTON            = WM_USER + 4
TB_INDETERMINATE         = WM_USER + 5
TB_MARKBUTTON            = WM_USER + 6
TB_ISBUTTONENABLED       = WM_USER + 9
TB_ISBUTTONCHECKED       = WM_USER + 10
TB_ISBUTTONPRESSED       = WM_USER + 11
TB_ISBUTTONHIDDEN        = WM_USER + 12
TB_ISBUTTONINDETERMINATE = WM_USER + 13
TB_ISBUTTONHIGHLIGHTED   = WM_USER + 14
TB_SETSTATE              = WM_USER + 17
TB_GETSTATE              = WM_USER + 18
TB_ADDBITMAP             = WM_USER + 19
TB_ADDBUTTONSA           = WM_USER + 20
TB_INSERTBUTTONA         = WM_USER + 21
TB_DELETEBUTTON          = WM_USER + 22
TB_GETBUTTON             = WM_USER + 23
TB_BUTTONCOUNT           = WM_USER + 24
TB_COMMANDTOINDEX        = WM_USER + 25
TB_SAVERESTOREA          = WM_USER + 26
TB_CUSTOMIZE             = WM_USER + 27
TB_ADDSTRINGA            = WM_USER + 28
TB_GETITEMRECT           = WM_USER + 29
TB_BUTTONSTRUCTSIZE      = WM_USER + 30
TB_SETBUTTONSIZE         = WM_USER + 31
TB_SETBITMAPSIZE         = WM_USER + 32
TB_AUTOSIZE              = WM_USER + 33
TB_GETTOOLTIPS           = WM_USER + 35
TB_SETTOOLTIPS           = WM_USER + 36
TB_SETPARENT             = WM_USER + 37
TB_SETROWS               = WM_USER + 39
TB_GETROWS               = WM_USER + 40
TB_GETBITMAPFLAGS        = WM_USER + 41
TB_SETCMDID              = WM_USER + 42
TB_CHANGEBITMAP          = WM_USER + 43
TB_GETBITMAP             = WM_USER + 44
TB_GETBUTTONTEXTA        = WM_USER + 45
TB_REPLACEBITMAP         = WM_USER + 46
TB_SETINDENT             = WM_USER + 47
TB_SETIMAGELIST          = WM_USER + 48
TB_GETIMAGELIST          = WM_USER + 49
TB_LOADIMAGES            = WM_USER + 50
TB_GETRECT               = WM_USER + 51
TB_SETHOTIMAGELIST       = WM_USER + 52
TB_GETHOTIMAGELIST       = WM_USER + 53
TB_SETDISABLEDIMAGELIST  = WM_USER + 54
TB_GETDISABLEDIMAGELIST  = WM_USER + 55
TB_SETSTYLE              = WM_USER + 56
TB_GETSTYLE              = WM_USER + 57
TB_GETBUTTONSIZE         = WM_USER + 58
TB_SETBUTTONWIDTH        = WM_USER + 59
TB_SETMAXTEXTROWS        = WM_USER + 60
TB_GETTEXTROWS           = WM_USER + 61
TB_GETOBJECT             = WM_USER + 62
TB_GETBUTTONINFOW        = WM_USER + 63
TB_SETBUTTONINFOW        = WM_USER + 64
TB_GETBUTTONINFOA        = WM_USER + 65
TB_SETBUTTONINFOA        = WM_USER + 66
TB_INSERTBUTTONW         = WM_USER + 67
TB_ADDBUTTONSW           = WM_USER + 68
TB_HITTEST               = WM_USER + 69
TB_SETDRAWTEXTFLAGS      = WM_USER + 70
TB_GETHOTITEM            = WM_USER + 71
TB_SETHOTITEM            = WM_USER + 72
TB_SETANCHORHIGHLIGHT    = WM_USER + 73
TB_GETANCHORHIGHLIGHT    = WM_USER + 74
TB_GETBUTTONTEXTW        = WM_USER + 75
TB_SAVERESTOREW          = WM_USER + 76
TB_ADDSTRINGW            = WM_USER + 77
TB_MAPACCELERATORA       = WM_USER + 78
TB_GETINSERTMARK         = WM_USER + 79
TB_SETINSERTMARK         = WM_USER + 80
TB_INSERTMARKHITTEST     = WM_USER + 81
TB_MOVEBUTTON            = WM_USER + 82
TB_GETMAXSIZE            = WM_USER + 83
TB_SETEXTENDEDSTYLE      = WM_USER + 84
TB_GETEXTENDEDSTYLE      = WM_USER + 85
TB_GETPADDING            = WM_USER + 86
TB_SETPADDING            = WM_USER + 87
TB_SETINSERTMARKCOLOR    = WM_USER + 88
TB_GETINSERTMARKCOLOR    = WM_USER + 89
TB_MAPACCELERATORW       = WM_USER + 90
TB_GETSTRINGW            = WM_USER + 91
TB_GETSTRINGA            = WM_USER + 92
TB_SETBOUNDINGSIZE       = WM_USER + 93
TB_SETHOTITEM2           = WM_USER + 94
TB_HASACCELERATOR        = WM_USER + 95
TB_SETLISTGAP            = WM_USER + 96
TB_GETIMAGELISTCOUNT     = WM_USER + 98
TB_GETIDEALSIZE          = WM_USER + 99
TB_GETMETRICS            = WM_USER + 101
TB_SETMETRICS            = WM_USER + 102
TB_GETITEMDROPDOWNRECT   = WM_USER + 103
TB_SETPRESSEDIMAGELIST   = WM_USER + 104
TB_GETPRESSEDIMAGELIST   = WM_USER + 105

; Toolbar WM_NOTIFY notification codes
TBN_GETBUTTONINFOA  = TBN_FIRST - 0
TBN_BEGINDRAG       = TBN_FIRST - 1
TBN_ENDDRAG         = TBN_FIRST - 2
TBN_BEGINADJUST     = TBN_FIRST - 3
TBN_ENDADJUST       = TBN_FIRST - 4
TBN_RESET           = TBN_FIRST - 5
TBN_QUERYINSERT     = TBN_FIRST - 6
TBN_QUERYDELETE     = TBN_FIRST - 7
TBN_TOOLBARCHANGE   = TBN_FIRST - 8
TBN_CUSTHELP        = TBN_FIRST - 9
TBN_DROPDOWN        = TBN_FIRST - 10
TBN_CLOSEUP         = TBN_FIRST - 11
TBN_GETOBJECT       = TBN_FIRST - 12
TBN_HOTITEMCHANGE   = TBN_FIRST - 13
TBN_DRAGOUT         = TBN_FIRST - 14
TBN_DELETINGBUTTON  = TBN_FIRST - 15
TBN_GETDISPINFOA    = TBN_FIRST - 16
TBN_GETDISPINFOW    = TBN_FIRST - 17
TBN_GETINFOTIPA     = TBN_FIRST - 18
TBN_GETINFOTIPW     = TBN_FIRST - 19
TBN_GETBUTTONINFOW  = TBN_FIRST - 20
TBN_RESTORE         = TBN_FIRST - 21
TBN_SAVE            = TBN_FIRST - 22
TBN_INITCUSTOMIZE   = TBN_FIRST - 23
TBN_WRAPHOTITEM     = TBN_FIRST - 24
TBN_DUPACCELERATOR  = TBN_FIRST - 25
TBN_WRAPACCELERATOR = TBN_FIRST - 26
TBN_DRAGOVER        = TBN_FIRST - 27
TBN_MAPACCELERATOR  = TBN_FIRST - 28

shortnames \
TB_ADDBUTTONS,\
TB_ADDSTRING,\
TB_GETBUTTONINFO,\
TB_GETBUTTONTEXT,\
TB_GETSTRING,\
TB_INSERTBUTTON,\
TB_MAPACCELERATOR,\
TB_SAVERESTORE,\
TB_SETBUTTONINFO,\
TBN_GETBUTTONINFO,\
TBN_GETDISPINFO,\
TBN_GETINFOTIP

;====== REBAR CONTROL ========================================================
; ReBar styles
RBS_TOOLTIPS        = $0100
RBS_VARHEIGHT       = $0200
RBS_BANDBORDERS     = $0400
RBS_FIXEDORDER      = $0800
RBS_REGISTERDROP    = $1000
RBS_AUTOSIZE        = $2000
RBS_VERTICALGRIPPER = $4000
RBS_DBLCLKTOGGLE    = $8000

; ReBar band styles
RBBS_BREAK          = $0001
RBBS_FIXEDSIZE      = $0002
RBBS_CHILDEDGE      = $0004
RBBS_HIDDEN         = $0008
RBBS_NOVERT         = $0010
RBBS_FIXEDBMP       = $0020
RBBS_VARIABLEHEIGHT = $0040
RBBS_GRIPPERALWAYS  = $0080
RBBS_NOGRIPPER      = $0100
RBBS_USECHEVRON     = $0200
RBBS_HIDETITLE      = $0400
RBBS_TOPALIGN       = $0800

; ReBar band info structure members flags
RBBIM_STYLE           = $0001
RBBIM_COLORS          = $0002
RBBIM_TEXT            = $0004
RBBIM_IMAGE           = $0008
RBBIM_CHILD           = $0010
RBBIM_CHILDSIZE       = $0020
RBBIM_SIZE            = $0040
RBBIM_BACKGROUND      = $0080
RBBIM_ID              = $0100
RBBIM_IDEALSIZE       = $0200
RBBIM_LPARAM          = $0400
RBBIM_HEADERSIZE      = $0800
RBBIM_CHEVRONLOCATION = $1000
RBBIM_CHEVRONSTATE    = $2000

; flags for RB_SIZETORECT
RBSTR_CHANGERECT = 1

; NMREBAR structure members flags
RBNM_ID     = 1
RBNM_STYLE  = 2
RBNM_LPARAM = 4

; Hit test result flags
RBHT_NOWHERE  = $0001
RBHT_CAPTION  = $0002
RBHT_CLIENT   = $0003
RBHT_GRABBER  = $0004
RBHT_CHEVRON  = $0008
RBHT_SPLITTER = $0010

; ReBar messages
RB_INSERTBANDA      = WM_USER + 1
RB_DELETEBAND       = WM_USER + 2
RB_GETBARINFO       = WM_USER + 3
RB_SETBARINFO       = WM_USER + 4
RB_GETBANDINFO      = WM_USER + 5
RB_SETBANDINFOA     = WM_USER + 6
RB_SETPARENT        = WM_USER + 7
RB_HITTEST          = WM_USER + 8
RB_GETRECT          = WM_USER + 9
RB_INSERTBANDW      = WM_USER + 10
RB_SETBANDINFOW     = WM_USER + 11
RB_GETBANDCOUNT     = WM_USER + 12
RB_GETROWCOUNT      = WM_USER + 13
RB_GETROWHEIGHT     = WM_USER + 14
RB_IDTOINDEX        = WM_USER + 16
RB_GETTOOLTIPS      = WM_USER + 17
RB_SETTOOLTIPS      = WM_USER + 18
RB_SETBKCOLOR       = WM_USER + 19
RB_GETBKCOLOR       = WM_USER + 20
RB_SETTEXTCOLOR     = WM_USER + 21
RB_GETTEXTCOLOR     = WM_USER + 22
RB_SIZETORECT       = WM_USER + 23
RB_BEGINDRAG        = WM_USER + 24
RB_ENDDRAG          = WM_USER + 25
RB_DRAGMOVE         = WM_USER + 26
RB_GETBARHEIGHT     = WM_USER + 27
RB_GETBANDINFOW     = WM_USER + 28
RB_GETBANDINFOA     = WM_USER + 29
RB_MINIMIZEBAND     = WM_USER + 30
RB_MAXIMIZEBAND     = WM_USER + 31
RB_GETDROPTARGET    = CCM_GETDROPTARGET
RB_GETBANDBORDERS   = WM_USER + 34
RB_SHOWBAND         = WM_USER + 35
RB_SETPALETTE       = WM_USER + 37
RB_GETPALETTE       = WM_USER + 38
RB_MOVEBAND         = WM_USER + 39
RB_GETBANDMARGINS   = WM_USER + 40
RB_SETEXTENDEDSTYLE = WM_USER + 41
RB_GETEXTENDEDSTYLE = WM_USER + 42
RB_PUSHCHEVRON      = WM_USER + 43
RB_SETBANDWIDTH     = WM_USER + 44
RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT

; ReBar notifications
RBN_HEIGHTCHANGE  = RBN_FIRST - 0
RBN_GETOBJECT     = RBN_FIRST - 1
RBN_LAYOUTCHANGED = RBN_FIRST - 2
RBN_AUTOSIZE      = RBN_FIRST - 3
RBN_BEGINDRAG     = RBN_FIRST - 4
RBN_ENDDRAG       = RBN_FIRST - 5
RBN_DELETINGBAND  = RBN_FIRST - 6
RBN_DELETEDBAND   = RBN_FIRST - 7
RBN_CHILDSIZE     = RBN_FIRST - 8
RBN_CHEVRONPUSHED = RBN_FIRST - 10
RBN_SPLITTERDRAG  = RBN_FIRST - 11
RBN_MINMAX        = RBN_FIRST - 21
RBN_AUTOBREAK     = RBN_FIRST - 22

shortnames \
RB_INSERTBAND,\
RB_SETBANDINFO

;====== TOOLTIPS CONTROL =====================================================
; Tooltip styles
TTS_ALWAYSTIP      = $0001
TTS_NOPREFIX       = $0002
TTS_NOANIMATE      = $0010
TTS_NOFADE         = $0020
TTS_BALLOON        = $0040
TTS_CLOSE          = $0080
TTS_USEVISUALSTYLE = $0100

; Tooltip flags
TTF_IDISHWND    = $0001
TTF_CENTERTIP   = $0002
TTF_RTLREADING  = $0004
TTF_SUBCLASS    = $0010
TTF_TRACK       = $0020
TTF_ABSOLUTE    = $0080
TTF_TRANSPARENT = $0100
TTF_PARSELINKS  = $1000
TTF_DI_SETITEM  = $8000

; Tooltip durations
TTDT_AUTOMATIC = 0
TTDT_RESHOW    = 1
TTDT_AUTOPOP   = 2
TTDT_INITIAL   = 3

; ToolTip Icons
TTI_NONE          = 0
TTI_INFO          = 1
TTI_WARNING       = 2
TTI_ERROR         = 3
TTI_INFO_LARGE    = 4
TTI_WARNING_LARGE = 5
TTI_ERROR_LARGE   = 6

; Tooltip messages
TTM_ACTIVATE        = WM_USER + 1
TTM_SETDELAYTIME    = WM_USER + 3
TTM_ADDTOOLA        = WM_USER + 4
TTM_DELTOOLA        = WM_USER + 5
TTM_NEWTOOLRECTA    = WM_USER + 6
TTM_RELAYEVENT      = WM_USER + 7
TTM_GETTOOLINFOA    = WM_USER + 8
TTM_SETTOOLINFOA    = WM_USER + 9
TTM_HITTESTA        = WM_USER + 10
TTM_GETTEXTA        = WM_USER + 11
TTM_UPDATETIPTEXTA  = WM_USER + 12
TTM_GETTOOLCOUNT    = WM_USER + 13
TTM_ENUMTOOLSA      = WM_USER + 14
TTM_GETCURRENTTOOLA = WM_USER + 15
TTM_WINDOWFROMPOINT = WM_USER + 16
TTM_TRACKACTIVATE   = WM_USER + 17
TTM_TRACKPOSITION   = WM_USER + 18
TTM_SETTIPBKCOLOR   = WM_USER + 19
TTM_SETTIPTEXTCOLOR = WM_USER + 20
TTM_GETDELAYTIME    = WM_USER + 21
TTM_GETTIPBKCOLOR   = WM_USER + 22
TTM_GETTIPTEXTCOLOR = WM_USER + 23
TTM_SETMAXTIPWIDTH  = WM_USER + 24
TTM_GETMAXTIPWIDTH  = WM_USER + 25
TTM_SETMARGIN       = WM_USER + 26
TTM_GETMARGIN       = WM_USER + 27
TTM_POP             = WM_USER + 28
TTM_UPDATE          = WM_USER + 29
TTM_GETBUBBLESIZE   = WM_USER + 30
TTM_ADJUSTRECT      = WM_USER + 31
TTM_SETTITLEA       = WM_USER + 32
TTM_SETTITLEW       = WM_USER + 33
TTM_POPUP           = WM_USER + 34
TTM_GETTITLE        = WM_USER + 35
TTM_ADDTOOLW        = WM_USER + 50
TTM_DELTOOLW        = WM_USER + 51
TTM_NEWTOOLRECTW    = WM_USER + 52
TTM_GETTOOLINFOW    = WM_USER + 53
TTM_SETTOOLINFOW    = WM_USER + 54
TTM_HITTESTW        = WM_USER + 55
TTM_GETTEXTW        = WM_USER + 56
TTM_UPDATETIPTEXTW  = WM_USER + 57
TTM_ENUMTOOLSW      = WM_USER + 58
TTM_GETCURRENTTOOLW = WM_USER + 59

; Tooltip notifications
TTN_GETDISPINFOA = TTN_FIRST - 0
TTN_SHOW         = TTN_FIRST - 1
TTN_POP          = TTN_FIRST - 2
TTN_LINKCLICK    = TTN_FIRST - 3
TTN_GETDISPINFOW = TTN_FIRST - 10

shortnames \
TTM_ADDTOOL,\
TTM_DELTOOL,\
TTM_ENUMTOOLS,\
TTM_GETCURRENTTOOL,\
TTM_GETTEXT,\
TTM_GETTOOLINFO,\
TTM_HITTEST,\
TTM_NEWTOOLRECT,\
TTM_SETTITLE,\
TTM_SETTOOLINFO,\
TTM_UPDATETIPTEXT,\
TTN_GETDISPINFO

;====== STATUS BAR CONTROL ===================================================
; Status bar styles
SBARS_SIZEGRIP = $0100
SBARS_TOOLTIPS = $0800

; Status bar drawing types
SBT_NOBORDERS    = $0100
SBT_POPOUT       = $0200
SBT_RTLREADING   = $0400
SBT_NOTABPARSING = $0800
SBT_OWNERDRAW    = $1000

; refers to the data saved for simple mode
SB_SIMPLEID =$00ff

; Status bar messages
SB_SETTEXTA       = WM_USER + 1
SB_GETTEXTA       = WM_USER + 2
SB_GETTEXTLENGTHA = WM_USER + 3
SB_SETPARTS       = WM_USER + 4
SB_GETPARTS       = WM_USER + 6
SB_GETBORDERS     = WM_USER + 7
SB_SETMINHEIGHT   = WM_USER + 8
SB_SIMPLE         = WM_USER + 9
SB_GETRECT        = WM_USER + 10
SB_SETTEXTW       = WM_USER + 11
SB_GETTEXTLENGTHW = WM_USER + 12
SB_GETTEXTW       = WM_USER + 13
SB_ISSIMPLE       = WM_USER + 14
SB_SETICON        = WM_USER + 15
SB_SETTIPTEXTA    = WM_USER + 16
SB_SETTIPTEXTW    = WM_USER + 17
SB_GETTIPTEXTA    = WM_USER + 18
SB_GETTIPTEXTW    = WM_USER + 19
SB_GETICON        = WM_USER + 20

; Status bar notifications
SBN_SIMPLEMODECHANGE = SBN_FIRST - 0

shortnames \
SB_GETTEXT,\
SB_GETTEXTLENGTH,\
SB_GETTIPTEXT,\
SB_SETTEXT,\
SB_SETTIPTEXT

;====== TRACKBAR CONTROL =====================================================
; Trackbar styles
TBS_AUTOTICKS        = $0001
TBS_VERT             = $0002
TBS_HORZ             = $0000
TBS_TOP              = $0004
TBS_BOTTOM           = $0000
TBS_LEFT             = $0004
TBS_RIGHT            = $0000
TBS_BOTH             = $0008
TBS_NOTICKS          = $0010
TBS_ENABLESELRANGE   = $0020
TBS_FIXEDLENGTH      = $0040
TBS_NOTHUMB          = $0080
TBS_TOOLTIPS         = $0100
TBS_REVERSED         = $0200
TBS_DOWNISLEFT       = $0400
TBS_NOTIFYBEFOREMOVE = $0800
TBS_TRANSPARENTBKGND = $1000

; TrackBar Tip Side flags
TBTS_TOP    = 0
TBTS_LEFT   = 1
TBTS_BOTTOM = 2
TBTS_RIGHT  = 3

; custom draw item specs
TBCD_TICS    = $0001
TBCD_THUMB   = $0002
TBCD_CHANNEL = $0003

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

; Trackbar notifications
TB_LINEUP             = 0
TB_LINEDOWN           = 1
TB_PAGEUP             = 2
TB_PAGEDOWN           = 3
TB_THUMBPOSITION      = 4
TB_THUMBTRACK         = 5
TB_TOP                = 6
TB_BOTTOM             = 7
TB_ENDTRACK           = 8
TRBN_THUMBPOSCHANGING = TRBN_FIRST-1

;====== DRAG LIST CONTROL ====================================================
; DragListInfo uNotifications
DL_BEGINDRAG  = WM_USER+133
DL_DRAGGING   = WM_USER+134
DL_DROPPED    = WM_USER+135
DL_CANCELDRAG = WM_USER+136

; DragList message handling result codes
DL_CURSORSET  = 0
DL_STOPCURSOR = 1
DL_COPYCURSOR = 2
DL_MOVECURSOR = 3

DRAGLISTMSGSTRING equ 'commctrl_DragListMsg'

;====== UPDOWN CONTROL =======================================================
; Up-down control styles
UDS_WRAP        = $0001
UDS_SETBUDDYINT = $0002
UDS_ALIGNRIGHT  = $0004
UDS_ALIGNLEFT   = $0008
UDS_AUTOBUDDY   = $0010
UDS_ARROWKEYS   = $0020
UDS_HORZ        = $0040
UDS_NOTHOUSANDS = $0080
UDS_HOTTRACK    = $0100

; Up-down control messages
UDM_SETRANGE   = WM_USER + 101
UDM_GETRANGE   = WM_USER + 102
UDM_SETPOS     = WM_USER + 103
UDM_GETPOS     = WM_USER + 104
UDM_SETBUDDY   = WM_USER + 105
UDM_GETBUDDY   = WM_USER + 106
UDM_SETACCEL   = WM_USER + 107
UDM_GETACCEL   = WM_USER + 108
UDM_SETBASE    = WM_USER + 109
UDM_GETBASE    = WM_USER + 110
UDM_SETRANGE32 = WM_USER + 111
UDM_GETRANGE32 = WM_USER + 112
UDM_SETPOS32   = WM_USER + 113
UDM_GETPOS32   = WM_USER + 114

; Up-down control notifications
UDN_DELTAPOS = UDN_FIRST - 1

;====== PROGRESS CONTROL =====================================================
; Progress bar control styles
PBS_SMOOTH        = $01
PBS_VERTICAL      = $04
PBS_MARQUEE       = $08
PBS_SMOOTHREVERSE = $10

; progress bar state
PBST_NORMAL = 1
PBST_ERROR  = 2
PBST_PAUSED = 3

; Progress bar messages
PBM_SETRANGE    = WM_USER + 1
PBM_SETPOS      = WM_USER + 2
PBM_DELTAPOS    = WM_USER + 3
PBM_SETSTEP     = WM_USER + 4
PBM_STEPIT      = WM_USER + 5
PBM_SETRANGE32  = WM_USER + 6
PBM_GETRANGE    = WM_USER + 7
PBM_GETPOS      = WM_USER + 8
PBM_SETBARCOLOR = WM_USER + 9
PBM_SETMARQUEE  = WM_USER + 10
PBM_GETSTEP     = WM_USER + 13
PBM_GETBKCOLOR  = WM_USER + 14
PBM_GETBARCOLOR = WM_USER + 15
PBM_SETSTATE    = WM_USER + 16
PBM_GETSTATE    = WM_USER + 17

;====== HOTKEY CONTROL =======================================================
; Hot key flags
HOTKEYF_SHIFT   = 1
HOTKEYF_CONTROL = 2
HOTKEYF_ALT     = 4
HOTKEYF_EXT     = 8

; Key combination flags
HKCOMB_NONE = 01h
HKCOMB_S    = 02h
HKCOMB_C    = 04h
HKCOMB_A    = 08h
HKCOMB_SC   = 10h
HKCOMB_SA   = 20h
HKCOMB_CA   = 40h
HKCOMB_SCA  = 80h

; Hot-key control messages
HKM_SETHOTKEY = WM_USER + 1
HKM_GETHOTKEY = WM_USER + 2
HKM_SETRULES  = WM_USER + 3

;====== SysLink control =========================================
INVALID_LINK_INDEX = -1
MAX_LINKID_TEXT    = 48
L_MAX_URL_LENGTH   = 2048 + 32 + 3

; SysLink control styles
LWS_TRANSPARENT    = $0001
LWS_IGNORERETURN   = $0002
LWS_NOPREFIX       = $0004
LWS_USEVISUALSTYLE = $0008
LWS_USECUSTOMTEXT  = $0010
LWS_RIGHT          = $0020

; Link item structure members flags
LIF_ITEMINDEX = 1
LIF_STATE     = 2
LIF_ITEMID    = 4
LIF_URL       = 8

; Link item states
LIS_FOCUSED       = $01
LIS_ENABLED       = $02
LIS_VISITED       = $04
LIS_HOTTRACK      = $08
LIS_DEFAULTCOLORS = $10

; LinkWindow messages
LM_HITTEST        = WM_USER+0x300
LM_GETIDEALHEIGHT = WM_USER+0x301
LM_GETIDEALSIZE   = WM_USER+0x301
LM_SETITEM        = WM_USER+0x302
LM_GETITEM        = WM_USER+0x303

;====== LISTVIEW CONTROL =====================================================
; List view styles
LVS_ALIGNTOP        = $0000
LVS_ICON            = $0000
LVS_REPORT          = $0001
LVS_SMALLICON       = $0002
LVS_LIST            = $0003
LVS_TYPEMASK        = $0003
LVS_SINGLESEL       = $0004
LVS_SHOWSELALWAYS   = $0008
LVS_SORTASCENDING   = $0010
LVS_SORTDESCENDING  = $0020
LVS_SHAREIMAGELISTS = $0040
LVS_NOLABELWRAP     = $0080
LVS_AUTOARRANGE     = $0100
LVS_EDITLABELS      = $0200
LVS_OWNERDRAWFIXED  = $0400
LVS_ALIGNLEFT       = $0800
LVS_ALIGNMASK       = $0C00
LVS_OWNERDATA       = $1000
LVS_NOSCROLL        = $2000
LVS_NOCOLUMNHEADER  = $4000
LVS_NOSORTHEADER    = $8000
LVS_TYPESTYLEMASK   = $FC00

; List view extended styles
LVS_EX_GRIDLINES             = $00000001
LVS_EX_SUBITEMIMAGES         = $00000002
LVS_EX_CHECKBOXES            = $00000004
LVS_EX_TRACKSELECT           = $00000008
LVS_EX_HEADERDRAGDROP        = $00000010
LVS_EX_FULLROWSELECT         = $00000020
LVS_EX_ONECLICKACTIVATE      = $00000040
LVS_EX_TWOCLICKACTIVATE      = $00000080
LVS_EX_FLATSB                = $00000100
LVS_EX_REGIONAL              = $00000200
LVS_EX_INFOTIP               = $00000400
LVS_EX_UNDERLINEHOT          = $00000800
LVS_EX_UNDERLINECOLD         = $00001000
LVS_EX_MULTIWORKAREAS        = $00002000
LVS_EX_LABELTIP              = $00004000
LVS_EX_BORDERSELECT          = $00008000
LVS_EX_DOUBLEBUFFER          = $00010000
LVS_EX_HIDELABELS            = $00020000
LVS_EX_SINGLEROW             = $00040000
LVS_EX_SNAPTOGRID            = $00080000
LVS_EX_SIMPLESELECT          = $00100000
LVS_EX_JUSTIFYCOLUMNS        = $00200000
LVS_EX_TRANSPARENTBKGND      = $00400000
LVS_EX_TRANSPARENTSHADOWTEXT = $00800000
LVS_EX_AUTOAUTOARRANGE       = $01000000
LVS_EX_HEADERINALLVIEWS      = $02000000
LVS_EX_AUTOCHECKSELECT       = $08000000
LVS_EX_AUTOSIZECOLUMNS       = $10000000
LVS_EX_COLUMNSNAPPOINTS      = $40000000
LVS_EX_COLUMNOVERFLOW        = $80000000

; List view image list types
LVSIL_NORMAL      = 0
LVSIL_SMALL       = 1
LVSIL_STATE       = 2
LVSIL_GROUPHEADER = 3

; List view item structure members flags
LVIF_TEXT        = $00000001
LVIF_IMAGE       = $00000002
LVIF_PARAM       = $00000004
LVIF_STATE       = $00000008
LVIF_INDENT      = $00000010
LVIF_GROUPID     = $00000100
LVIF_COLUMNS     = $00000200
LVIF_NORECOMPUTE = $00000800
LVIF_DI_SETITEM  = $00001000
LVIF_COLFMT      = $00010000

; List view item states
LVIS_FOCUSED        = $0001
LVIS_SELECTED       = $0002
LVIS_CUT            = $0004
LVIS_DROPHILITED    = $0008
LVIS_GLOW           = $0010
LVIS_ACTIVATING     = $0020
LVIS_OVERLAYMASK    = $0F00
LVIS_STATEIMAGEMASK = $F000

; List view callback item values
LPSTR_TEXTCALLBACK = -1
I_INDENTCALLBACK   = -1
I_GROUPIDCALLBACK  = -1
I_GROUPIDNONE      = -2
I_IMAGECALLBACK    = -1
I_IMAGENONE        = -2
I_COLUMNSCALLBACK  = -1
I_CHILDRENCALLBACK = -1

; List view next item relations
LVNI_ALL           = $0000
LVNI_FOCUSED       = $0001
LVNI_SELECTED      = $0002
LVNI_CUT           = $0004
LVNI_DROPHILITED   = $0008
LVNI_VISIBLEORDER  = $0010
LVNI_PREVIOUS      = $0020
LVNI_VISIBLEONLY   = $0040
LVNI_SAMEGROUPONLY = $0080
LVNI_ABOVE         = $0100
LVNI_BELOW         = $0200
LVNI_TOLEFT        = $0400
LVNI_TORIGHT       = $0800
LVNI_DIRECTIONMASK = LVNI_ABOVE or LVNI_BELOW or LVNI_TOLEFT or LVNI_TORIGHT

; List view search types
LVFI_PARAM     = $01
LVFI_STRING    = $02
LVFI_SUBSTRING = $04
LVFI_PARTIAL   = $08
LVFI_WRAP      = $20
LVFI_NEARESTXY = $40

; List view item rectangle types
LVIR_BOUNDS       = 0
LVIR_ICON         = 1
LVIR_LABEL        = 2
LVIR_SELECTBOUNDS = 3

; List view alignment values
LVA_DEFAULT        = $0000
LVA_ALIGNLEFT      = $0001
LVA_ALIGNTOP       = $0002
LVA_ALIGNRIGHT     = $0003
LVA_ALIGNBOTTOM    = $0004
LVA_SNAPTOGRID     = $0005
LVA_SORTASCENDING  = $0100
LVA_SORTDESCENDING = $0200

; List view column structure members flags
LVCF_FMT          = $0001
LVCF_WIDTH        = $0002
LVCF_TEXT         = $0004
LVCF_SUBITEM      = $0008
LVCF_IMAGE        = $0010
LVCF_ORDER        = $0020
LVCF_MINWIDTH     = $0040
LVCF_DEFAULTWIDTH = $0080
LVCF_IDEALWIDTH   = $0100

; List view column alignment values
LVCFMT_LEFT               = $00000000
LVCFMT_RIGHT              = $00000001
LVCFMT_CENTER             = $00000002
LVCFMT_JUSTIFYMASK        = $00000003
LVCFMT_IMAGE              = $00000800
LVCFMT_BITMAP_ON_RIGHT    = $00001000
LVCFMT_COL_HAS_IMAGES     = $00008000
LVCFMT_FIXED_WIDTH        = $00000100
LVCFMT_NO_DPI_SCALE       = $00040000
LVCFMT_FIXED_RATIO        = $00080000
LVCFMT_LINE_BREAK         = $00100000
LVCFMT_FILL               = $00200000
LVCFMT_WRAP               = $00400000
LVCFMT_NO_TITLE           = $00800000
LVCFMT_SPLITBUTTON        = $01000000
LVCFMT_TILE_PLACEMENTMASK = LVCFMT_LINE_BREAK or LVCFMT_FILL

; List view column width values
LVSCW_AUTOSIZE           = -1
LVSCW_AUTOSIZE_USEHEADER = -2

; LVM_SETITEMCOUNT flags
LVSICF_NOINVALIDATEALL = 1
LVSICF_NOSCROLL        = 2

; List view background image flags
LVBKIF_SOURCE_NONE     = $00000000
LVBKIF_SOURCE_HBITMAP  = $00000001
LVBKIF_SOURCE_URL      = $00000002
LVBKIF_SOURCE_MASK     = $00000003
LVBKIF_STYLE_NORMAL    = $00000000
LVBKIF_STYLE_TILE      = $00000010
LVBKIF_STYLE_MASK      = $00000010
LVBKIF_FLAG_TILEOFFSET = $00000100
LVBKIF_TYPE_WATERMARK  = $10000000
LVBKIF_FLAG_ALPHABLEND = $20000000

; List view current view
LV_VIEW_ICON      = 0
LV_VIEW_DETAILS   = 1
LV_VIEW_SMALLICON = 2
LV_VIEW_LIST      = 3
LV_VIEW_TILE      = 4
LV_VIEW_MAX       = 4

; List view group structure members flags
LVGF_NONE              = $00000000
LVGF_HEADER            = $00000001
LVGF_FOOTER            = $00000002
LVGF_STATE             = $00000004
LVGF_ALIGN             = $00000008
LVGF_GROUPID           = $00000010
LVGF_SUBTITLE          = $00000100
LVGF_TASK              = $00000200
LVGF_DESCRIPTIONTOP    = $00000400
LVGF_DESCRIPTIONBOTTOM = $00000800
LVGF_TITLEIMAGE        = $00001000
LVGF_EXTENDEDIMAGE     = $00002000
LVGF_ITEMS             = $00004000
LVGF_SUBSET            = $00008000
LVGF_SUBSETITEMS       = $00010000

; List view group states
LVGS_NORMAL            = $00000000
LVGS_COLLAPSED         = $00000001
LVGS_HIDDEN            = $00000002
LVGS_NOHEADER          = $00000004
LVGS_COLLAPSIBLE       = $00000008
LVGS_FOCUSED           = $00000010
LVGS_SELECTED          = $00000020
LVGS_SUBSETED          = $00000040
LVGS_SUBSETLINKFOCUSED = $00000080

; List view group alignments
LVGA_HEADER_LEFT       = $00000001
LVGA_HEADER_CENTER     = $00000002
LVGA_HEADER_RIGHT      = $00000004
LVGA_FOOTER_LEFT       = $00000008
LVGA_FOOTER_CENTER     = $00000010
LVGA_FOOTER_RIGHT      = $00000020

; List view group rect specifier
LVGGR_GROUP      = 0
LVGGR_HEADER     = 1
LVGGR_LABEL      = 2
LVGGR_SUBSETLINK = 3

; List view group metrics structure members flags
LVGMF_NONE        = 0
LVGMF_BORDERSIZE  = 1
LVGMF_BORDERCOLOR = 2
LVGMF_TEXTCOLOR   = 4

; List view tile view info sizing
LVTVIF_AUTOSIZE    = 0
LVTVIF_FIXEDWIDTH  = 1
LVTVIF_FIXEDHEIGHT = 2
LVTVIF_FIXEDSIZE   = 3
LVTVIF_EXTENDED    = 4

; List view tile view info structure members flags
LVTVIM_TILESIZE    = 1
LVTVIM_COLUMNS     = 2
LVTVIM_LABELMARGIN = 4

; List view insert mark flags
LVIM_BEFORE = 0
LVIM_AFTER  = 1

; List view footer info flags
LVFF_ITEMCOUNT = 1

; List view footer item structure members flags
LVFIF_TEXT  = 1
LVFIF_STATE = 2

; List view footer item state
LVFIS_FOCUSED = 1

; List view item activate key flags
LVKF_ALT     = 1
LVKF_CONTROL = 2
LVKF_SHIFT   = 4

; List view custom draw item type
LVCDI_ITEM      = 0
LVCDI_GROUP     = 1
LVCDI_ITEMSLIST = 2


; List view custom draw return values
LVCDRF_NOSELECT     = $00010000
LVCDRF_NOGROUPFRAME = $00020000

; List view get info tip Flag
LVGIT_UNFOLDED = 1

; List view notify find item return values
LVNSCH_DEFAULT = -1
LVNSCH_ERROR   = -2
LVNSCH_IGNORE  = -3

; List view empty markup flag
EMF_CENTERED = 1

; List view hit test flags
LVHT_NOWHERE             = $00000001
LVHT_ONITEMICON          = $00000002
LVHT_ONITEMLABEL         = $00000004
LVHT_ONITEMSTATEICON     = $00000008
LVHT_ONITEM              = LVHT_ONITEMICON or LVHT_ONITEMLABEL or LVHT_ONITEMSTATEICON
LVHT_ABOVE               = $00000008
LVHT_BELOW               = $00000010
LVHT_TORIGHT             = $00000020
LVHT_TOLEFT              = $00000040
LVHT_EX_GROUP_STATEICON  = $01000000
LVHT_EX_GROUP_SUBSETLINK = $02000000
LVHT_EX_ONCONTENTS       = $04000000
LVHT_EX_FOOTER           = $08000000
LVHT_EX_GROUP_HEADER     = $10000000
LVHT_EX_GROUP_FOOTER     = $20000000
LVHT_EX_GROUP_COLLAPSE   = $40000000
LVHT_EX_GROUP_BACKGROUND = $80000000
LVHT_EX_GROUP            = LVHT_EX_GROUP_BACKGROUND or LVHT_EX_GROUP_COLLAPSE or LVHT_EX_GROUP_FOOTER or LVHT_EX_GROUP_HEADER or LVHT_EX_GROUP_STATEICON or LVHT_EX_GROUP_SUBSETLINK

; List view messages
LVM_GETBKCOLOR               = LVM_FIRST + 0
LVM_SETBKCOLOR               = LVM_FIRST + 1
LVM_GETIMAGELIST             = LVM_FIRST + 2
LVM_SETIMAGELIST             = LVM_FIRST + 3
LVM_GETITEMCOUNT             = LVM_FIRST + 4
LVM_GETITEMA                 = LVM_FIRST + 5
LVM_SETITEMA                 = LVM_FIRST + 6
LVM_INSERTITEMA              = LVM_FIRST + 7
LVM_DELETEITEM               = LVM_FIRST + 8
LVM_DELETEALLITEMS           = LVM_FIRST + 9
LVM_GETCALLBACKMASK          = LVM_FIRST + 10
LVM_SETCALLBACKMASK          = LVM_FIRST + 11
LVM_GETNEXTITEM              = LVM_FIRST + 12
LVM_FINDITEMA                = LVM_FIRST + 13
LVM_GETITEMRECT              = LVM_FIRST + 14
LVM_SETITEMPOSITION          = LVM_FIRST + 15
LVM_GETITEMPOSITION          = LVM_FIRST + 16
LVM_GETSTRINGWIDTHA          = LVM_FIRST + 17
LVM_HITTEST                  = LVM_FIRST + 18
LVM_ENSUREVISIBLE            = LVM_FIRST + 19
LVM_SCROLL                   = LVM_FIRST + 20
LVM_REDRAWITEMS              = LVM_FIRST + 21
LVM_ARRANGE                  = LVM_FIRST + 22
LVM_EDITLABELA               = LVM_FIRST + 23
LVM_GETEDITCONTROL           = LVM_FIRST + 24
LVM_GETCOLUMNA               = LVM_FIRST + 25
LVM_SETCOLUMNA               = LVM_FIRST + 26
LVM_INSERTCOLUMNA            = LVM_FIRST + 27
LVM_DELETECOLUMN             = LVM_FIRST + 28
LVM_GETCOLUMNWIDTH           = LVM_FIRST + 29
LVM_SETCOLUMNWIDTH           = LVM_FIRST + 30
LVM_CREATEDRAGIMAGE          = LVM_FIRST + 33
LVM_GETVIEWRECT              = LVM_FIRST + 34
LVM_GETTEXTCOLOR             = LVM_FIRST + 35
LVM_SETTEXTCOLOR             = LVM_FIRST + 36
LVM_GETTEXTBKCOLOR           = LVM_FIRST + 37
LVM_SETTEXTBKCOLOR           = LVM_FIRST + 38
LVM_GETTOPINDEX              = LVM_FIRST + 39
LVM_GETCOUNTPERPAGE          = LVM_FIRST + 40
LVM_GETORIGIN                = LVM_FIRST + 41
LVM_UPDATE                   = LVM_FIRST + 42
LVM_SETITEMSTATE             = LVM_FIRST + 43
LVM_GETITEMSTATE             = LVM_FIRST + 44
LVM_GETITEMTEXTA             = LVM_FIRST + 45
LVM_SETITEMTEXTA             = LVM_FIRST + 46
LVM_SETITEMCOUNT             = LVM_FIRST + 47
LVM_SORTITEMS                = LVM_FIRST + 48
LVM_SETITEMPOSITION32        = LVM_FIRST + 49
LVM_GETSELECTEDCOUNT         = LVM_FIRST + 50
LVM_GETITEMSPACING           = LVM_FIRST + 51
LVM_GETISEARCHSTRINGA        = LVM_FIRST + 52
LVM_SETICONSPACING           = LVM_FIRST + 53
LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54
LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
LVM_GETSUBITEMRECT           = LVM_FIRST + 56
LVM_SUBITEMHITTEST           = LVM_FIRST + 57
LVM_SETCOLUMNORDERARRAY      = LVM_FIRST + 58
LVM_GETCOLUMNORDERARRAY      = LVM_FIRST + 59
LVM_SETHOTITEM               = LVM_FIRST + 60
LVM_GETHOTITEM               = LVM_FIRST + 61
LVM_SETHOTCURSOR             = LVM_FIRST + 62
LVM_GETHOTCURSOR             = LVM_FIRST + 63
LVM_APPROXIMATEVIEWRECT      = LVM_FIRST + 64
LVM_SETWORKAREAS             = LVM_FIRST + 65
LVM_GETSELECTIONMARK         = LVM_FIRST + 66
LVM_SETSELECTIONMARK         = LVM_FIRST + 67
LVM_SETBKIMAGEA              = LVM_FIRST + 68
LVM_GETBKIMAGEA              = LVM_FIRST + 69
LVM_GETWORKAREAS             = LVM_FIRST + 70
LVM_SETHOVERTIME             = LVM_FIRST + 71
LVM_GETHOVERTIME             = LVM_FIRST + 72
LVM_GETNUMBEROFWORKAREAS     = LVM_FIRST + 73
LVM_SETTOOLTIPS              = LVM_FIRST + 74
LVM_GETITEMW                 = LVM_FIRST + 75
LVM_SETITEMW                 = LVM_FIRST + 76
LVM_INSERTITEMW              = LVM_FIRST + 77
LVM_GETTOOLTIPS              = LVM_FIRST + 78
LVM_SORTITEMSEX              = LVM_FIRST + 81
LVM_FINDITEMW                = LVM_FIRST + 83
LVM_GETSTRINGWIDTHW          = LVM_FIRST + 87
LVM_GETGROUPSTATE            = LVM_FIRST + 92
LVM_GETFOCUSEDGROUP          = LVM_FIRST + 93
LVM_GETCOLUMNW               = LVM_FIRST + 95
LVM_SETCOLUMNW               = LVM_FIRST + 96
LVM_INSERTCOLUMNW            = LVM_FIRST + 97
LVM_GETGROUPRECT             = LVM_FIRST + 98
LVM_GETITEMTEXTW             = LVM_FIRST + 115
LVM_SETITEMTEXTW             = LVM_FIRST + 116
LVM_GETISEARCHSTRINGW        = LVM_FIRST + 117
LVM_EDITLABELW               = LVM_FIRST + 118
LVM_SETBKIMAGEW              = LVM_FIRST + 138
LVM_GETBKIMAGEW              = LVM_FIRST + 139
LVM_SETSELECTEDCOLUMN        = LVM_FIRST + 140
LVM_SETVIEW                  = LVM_FIRST + 142
LVM_GETVIEW                  = LVM_FIRST + 143
LVM_INSERTGROUP              = LVM_FIRST + 145
LVM_SETGROUPINFO             = LVM_FIRST + 147
LVM_GETGROUPINFO             = LVM_FIRST + 149
LVM_REMOVEGROUP              = LVM_FIRST + 150
LVM_MOVEGROUP                = LVM_FIRST + 151
LVM_GETGROUPCOUNT            = LVM_FIRST + 152
LVM_GETGROUPINFOBYINDEX      = LVM_FIRST + 153
LVM_MOVEITEMTOGROUP          = LVM_FIRST + 154
LVM_SETGROUPMETRICS          = LVM_FIRST + 155
LVM_GETGROUPMETRICS          = LVM_FIRST + 156
LVM_ENABLEGROUPVIEW          = LVM_FIRST + 157
LVM_SORTGROUPS               = LVM_FIRST + 158
LVM_INSERTGROUPSORTED        = LVM_FIRST + 159
LVM_REMOVEALLGROUPS          = LVM_FIRST + 160
LVM_HASGROUP                 = LVM_FIRST + 161
LVM_SETTILEVIEWINFO          = LVM_FIRST + 162
LVM_GETTILEVIEWINFO          = LVM_FIRST + 163
LVM_SETTILEINFO              = LVM_FIRST + 164
LVM_GETTILEINFO              = LVM_FIRST + 165
LVM_SETINSERTMARK            = LVM_FIRST + 166
LVM_GETINSERTMARK            = LVM_FIRST + 167
LVM_INSERTMARKHITTEST        = LVM_FIRST + 168
LVM_GETINSERTMARKRECT        = LVM_FIRST + 169
LVM_SETINSERTMARKCOLOR       = LVM_FIRST + 170
LVM_GETINSERTMARKCOLOR       = LVM_FIRST + 171
LVM_SETINFOTIP               = LVM_FIRST + 173
LVM_GETSELECTEDCOLUMN        = LVM_FIRST + 174
LVM_ISGROUPVIEWENABLED       = LVM_FIRST + 175
LVM_GETOUTLINECOLOR          = LVM_FIRST + 176
LVM_SETOUTLINECOLOR          = LVM_FIRST + 177
LVM_CANCELEDITLABEL          = LVM_FIRST + 179
LVM_MAPINDEXTOID             = LVM_FIRST + 180
LVM_MAPIDTOINDEX             = LVM_FIRST + 181
LVM_ISITEMVISIBLE            = LVM_FIRST + 182
LVM_GETEMPTYTEXT             = LVM_FIRST + 204
LVM_GETFOOTERRECT            = LVM_FIRST + 205
LVM_GETFOOTERINFO            = LVM_FIRST + 206
LVM_GETFOOTERITEMRECT        = LVM_FIRST + 207
LVM_GETFOOTERITEM            = LVM_FIRST + 208
LVM_GETITEMINDEXRECT         = LVM_FIRST + 209
LVM_SETITEMINDEXSTATE        = LVM_FIRST + 210
LVM_GETNEXTITEMINDEX         = LVM_FIRST + 211

; List view notifications
LVN_ITEMCHANGING        = LVN_FIRST - 0
LVN_ITEMCHANGED         = LVN_FIRST - 1
LVN_INSERTITEM          = LVN_FIRST - 2
LVN_DELETEITEM          = LVN_FIRST - 3
LVN_DELETEALLITEMS      = LVN_FIRST - 4
LVN_BEGINLABELEDITA     = LVN_FIRST - 5
LVN_ENDLABELEDITA       = LVN_FIRST - 6
LVN_COLUMNCLICK         = LVN_FIRST - 8
LVN_BEGINDRAG           = LVN_FIRST - 9
LVN_BEGINRDRAG          = LVN_FIRST - 11
LVN_ODCACHEHINT         = LVN_FIRST - 13
LVN_ITEMACTIVATE        = LVN_FIRST - 14
LVN_ODSTATECHANGED      = LVN_FIRST - 15
LVN_HOTTRACK            = LVN_FIRST - 21
LVN_GETDISPINFOA        = LVN_FIRST - 50
LVN_SETDISPINFOA        = LVN_FIRST - 51
LVN_ODFINDITEMA         = LVN_FIRST - 52
LVN_KEYDOWN             = LVN_FIRST - 55
LVN_MARQUEEBEGIN        = LVN_FIRST - 56
LVN_GETINFOTIPA         = LVN_FIRST - 57
LVN_GETINFOTIPW         = LVN_FIRST - 58
LVN_INCREMENTALSEARCHA  = LVN_FIRST - 62
LVN_INCREMENTALSEARCHW  = LVN_FIRST - 63
LVN_COLUMNDROPDOWN      = LVN_FIRST - 64
LVN_COLUMNOVERFLOWCLICK = LVN_FIRST - 66
LVN_BEGINLABELEDITW     = LVN_FIRST - 75
LVN_ENDLABELEDITW       = LVN_FIRST - 76
LVN_GETDISPINFOW        = LVN_FIRST - 77
LVN_SETDISPINFOW        = LVN_FIRST - 78
LVN_ODFINDITEMW         = LVN_FIRST - 79
LVN_BEGINSCROLL         = LVN_FIRST - 80
LVN_ENDSCROLL           = LVN_FIRST - 81
LVN_LINKCLICK           = LVN_FIRST - 84
LVN_GETEMPTYMARKUP      = LVN_FIRST - 87

shortnames \
LVM_EDITLABEL,\
LVM_FINDITEM,\
LVM_GETBKIMAGE,\
LVM_GETCOLUMN,\
LVM_GETISEARCHSTRING,\
LVM_GETITEM,\
LVM_GETITEMTEXT,\
LVM_GETSTRINGWIDTH,\
LVM_INSERTCOLUMN,\
LVM_INSERTITEM,\
LVM_SETBKIMAGE,\
LVM_SETCOLUMN,\
LVM_SETITEM,\
LVM_SETITEMTEXT,\
LVN_BEGINLABELEDIT,\
LVN_ENDLABELEDIT,\
LVN_GETDISPINFO,\
LVN_INCREMENTALSEARCH,\
LVN_ODFINDITEM,\
LVN_SETDISPINFO

;====== TREEVIEW CONTROL =====================================================
; Tree view styles
TVS_HASBUTTONS      = $0001
TVS_HASLINES        = $0002
TVS_LINESATROOT     = $0004
TVS_EDITLABELS      = $0008
TVS_DISABLEDRAGDROP = $0010
TVS_SHOWSELALWAYS   = $0020
TVS_RTLREADING      = $0040
TVS_NOTOOLTIPS      = $0080
TVS_CHECKBOXES      = $0100
TVS_TRACKSELECT     = $0200
TVS_SINGLEEXPAND    = $0400
TVS_INFOTIP         = $0800
TVS_FULLROWSELECT   = $1000
TVS_NOSCROLL        = $2000
TVS_NONEVENHEIGHT   = $4000
TVS_NOHSCROLL       = $8000

; Tree view extended styles
TVS_EX_NOSINGLECOLLAPSE    = $0001
TVS_EX_MULTISELECT         = $0002
TVS_EX_DOUBLEBUFFER        = $0004
TVS_EX_NOINDENTSTATE       = $0008
TVS_EX_RICHTOOLTIP         = $0010
TVS_EX_AUTOHSCROLL         = $0020
TVS_EX_FADEINOUTEXPANDOS   = $0040
TVS_EX_PARTIALCHECKBOXES   = $0080
TVS_EX_EXCLUSIONCHECKBOXES = $0100
TVS_EX_DIMMEDCHECKBOXES    = $0200
TVS_EX_DRAWIMAGEASYNC      = $0400

; Tree view item structure members flags
TVIF_TEXT          = $0001
TVIF_IMAGE         = $0002
TVIF_PARAM         = $0004
TVIF_STATE         = $0008
TVIF_HANDLE        = $0010
TVIF_SELECTEDIMAGE = $0020
TVIF_CHILDREN      = $0040
TVIF_INTEGRAL      = $0080
TVIF_STATEEX       = $0100
TVIF_EXPANDEDIMAGE = $0200
TVIF_DI_SETITEM    = $1000

; Tree view item states
TVIS_FOCUSED        = $0001
TVIS_SELECTED       = $0002
TVIS_CUT            = $0004
TVIS_DROPHILITED    = $0008
TVIS_BOLD           = $0010
TVIS_EXPANDED       = $0020
TVIS_EXPANDEDONCE   = $0040
TVIS_EXPANDPARTIAL  = $0080
TVIS_OVERLAYMASK    = $0F00
TVIS_STATEIMAGEMASK = $F000
TVIS_USERMASK       = $F000

; Tree view item extended states
TVIS_EX_FLAT     = 1
TVIS_EX_DISABLED = 2
TVIS_EX_ALL      = 2

; Tree view predefined item values
TVI_ROOT  = -$10000
TVI_FIRST = -$10000 + 1
TVI_LAST  = -$10000 + 2
TVI_SORT  = -$10000 + 3

; Tree view action flags
TVE_COLLAPSE      = $0001
TVE_EXPAND        = $0002
TVE_TOGGLE        = $0003
TVE_EXPANDPARTIAL = $4000
TVE_COLLAPSERESET = $8000

; Tree view image list types
TVSIL_NORMAL = 0
TVSIL_STATE  = 2

; Tree view next item types
TVGN_ROOT            = $0000
TVGN_NEXT            = $0001
TVGN_PREVIOUS        = $0002
TVGN_PARENT          = $0003
TVGN_CHILD           = $0004
TVGN_FIRSTVISIBLE    = $0005
TVGN_NEXTVISIBLE     = $0006
TVGN_PREVIOUSVISIBLE = $0007
TVGN_DROPHILITE      = $0008
TVGN_CARET           = $0009
TVGN_LASTVISIBLE     = $000A
TVGN_NEXTSELECTED    = $000B
TVSI_NOSINGLEEXPAND  = $8000

; Tree view set border flags
TVSBF_XBORDER = 1
TVSBF_YBORDER = 2

; Tree view get item part rect ID
TVGIPR_BUTTON = 1

; Tree view action flags
TVC_UNKNOWN    = 0
TVC_BYMOUSE    = 1
TVC_BYKEYBOARD = 2

TVNRET_DEFAULT = 0
TVNRET_SKIPOLD = 1
TVNRET_SKIPNEW = 2

; Tree view custom draw return flag
TVCDRF_NOIMAGES = $00010000

; Tree view hit test flags
TVHT_NOWHERE         = $0001
TVHT_ONITEMICON      = $0002
TVHT_ONITEMLABEL     = $0004
TVHT_ONITEMINDENT    = $0008
TVHT_ONITEMBUTTON    = $0010
TVHT_ONITEMRIGHT     = $0020
TVHT_ONITEMSTATEICON = $0040
TVHT_ONITEM          = TVHT_ONITEMICON or TVHT_ONITEMLABEL or TVHT_ONITEMSTATEICON
TVHT_ABOVE           = $0100
TVHT_BELOW           = $0200
TVHT_TORIGHT         = $0400
TVHT_TOLEFT          = $0800

; Tree view messages
TVM_INSERTITEMA       = TV_FIRST + 0
TVM_DELETEITEM        = TV_FIRST + 1
TVM_EXPAND            = TV_FIRST + 2
TVM_GETITEMRECT       = TV_FIRST + 4
TVM_GETCOUNT          = TV_FIRST + 5
TVM_GETINDENT         = TV_FIRST + 6
TVM_SETINDENT         = TV_FIRST + 7
TVM_GETIMAGELIST      = TV_FIRST + 8
TVM_SETIMAGELIST      = TV_FIRST + 9
TVM_GETNEXTITEM       = TV_FIRST + 10
TVM_SELECTITEM        = TV_FIRST + 11
TVM_GETITEMA          = TV_FIRST + 12
TVM_SETITEMA          = TV_FIRST + 13
TVM_EDITLABELA        = TV_FIRST + 14
TVM_GETEDITCONTROL    = TV_FIRST + 15
TVM_GETVISIBLECOUNT   = TV_FIRST + 16
TVM_HITTEST           = TV_FIRST + 17
TVM_CREATEDRAGIMAGE   = TV_FIRST + 18
TVM_SORTCHILDREN      = TV_FIRST + 19
TVM_ENSUREVISIBLE     = TV_FIRST + 20
TVM_SORTCHILDRENCB    = TV_FIRST + 21
TVM_ENDEDITLABELNOW   = TV_FIRST + 22
TVM_GETISEARCHSTRINGA = TV_FIRST + 23
TVM_INSERTITEMW       = TV_FIRST + 50
TVM_GETITEMW          = TV_FIRST + 62
TVM_SETITEMW          = TV_FIRST + 63
TVM_GETISEARCHSTRINGW = TV_FIRST + 64
TVM_EDITLABELW        = TV_FIRST + 65

; Tree view notifications
TVN_SELCHANGINGA    = TVN_FIRST - 1
TVN_SELCHANGEDA     = TVN_FIRST - 2
TVN_GETDISPINFOA    = TVN_FIRST - 3
TVN_SETDISPINFOA    = TVN_FIRST - 4
TVN_ITEMEXPANDINGA  = TVN_FIRST - 5
TVN_ITEMEXPANDEDA   = TVN_FIRST - 6
TVN_BEGINDRAGA      = TVN_FIRST - 7
TVN_BEGINRDRAGA     = TVN_FIRST - 8
TVN_DELETEITEMA     = TVN_FIRST - 9
TVN_BEGINLABELEDITA = TVN_FIRST - 10
TVN_ENDLABELEDITA   = TVN_FIRST - 11
TVN_KEYDOWN         = TVN_FIRST - 12
TVN_GETINFOTIPA     = TVN_FIRST - 13
TVN_GETINFOTIPW     = TVN_FIRST - 14
TVN_SINGLEEXPAND    = TVN_FIRST - 15
TVN_ITEMCHANGINGA   = TVN_FIRST - 16
TVN_ITEMCHANGINGW   = TVN_FIRST - 17
TVN_ITEMCHANGEDA    = TVN_FIRST - 18
TVN_ITEMCHANGEDW    = TVN_FIRST - 19
TVN_ASYNCDRAW       = TVN_FIRST - 20
TVN_SELCHANGINGW    = TVN_FIRST - 50
TVN_SELCHANGEDW     = TVN_FIRST - 51
TVN_GETDISPINFOW    = TVN_FIRST - 52
TVN_SETDISPINFOW    = TVN_FIRST - 53
TVN_ITEMEXPANDINGW  = TVN_FIRST - 54
TVN_ITEMEXPANDEDW   = TVN_FIRST - 55
TVN_BEGINDRAGW      = TVN_FIRST - 56
TVN_BEGINRDRAGW     = TVN_FIRST - 57
TVN_DELETEITEMW     = TVN_FIRST - 58
TVN_BEGINLABELEDITW = TVN_FIRST - 59
TVN_ENDLABELEDITW   = TVN_FIRST - 60

shortnames \
TVM_EDITLABEL,\
TVM_GETISEARCHSTRING,\
TVM_GETITEM,\
TVM_INSERTITEM,\
TVM_SETITEM,\
TVN_BEGINDRAG,\
TVN_BEGINLABELEDIT,\
TVN_BEGINRDRAG,\
TVN_DELETEITEM,\
TVN_ENDLABELEDIT,\
TVN_GETDISPINFO,\
TVN_GETINFOTIP,\
TVN_ITEMCHANGED,\
TVN_ITEMCHANGING,\
TVN_ITEMEXPANDED,\
TVN_ITEMEXPANDING,\
TVN_SELCHANGED,\
TVN_SELCHANGING,\
TVN_SETDISPINFO

;====== COMBOBOXEX CONTROL ===================================================
; ComboBoxEx item structure members flags
CBEIF_TEXT          = $00000001
CBEIF_IMAGE         = $00000002
CBEIF_SELECTEDIMAGE = $00000004
CBEIF_OVERLAY       = $00000008
CBEIF_INDENT        = $00000010
CBEIF_LPARAM        = $00000020
CBEIF_DI_SETITEM    = $10000000

CBES_EX_NOEDITIMAGE       = $00000001
CBES_EX_NOEDITIMAGEINDENT = $00000002
CBES_EX_PATHWORDBREAKPROC = $00000004
CBES_EX_NOSIZELIMIT       = $00000008
CBES_EX_CASESENSITIVE     = $00000010
CBES_EX_TEXTENDELLIPSIS   = $00000020

CBENF_KILLFOCUS = 1
CBENF_RETURN    = 2
CBENF_ESCAPE    = 3
CBENF_DROPDOWN  = 4

; ComboBoxEx messages
CBEM_INSERTITEMA       = WM_USER + 1
CBEM_SETIMAGELIST      = WM_USER + 2
CBEM_GETIMAGELIST      = WM_USER + 3
CBEM_GETITEMA          = WM_USER + 4
CBEM_SETITEMA          = WM_USER + 5
CBEM_GETCOMBOCONTROL   = WM_USER + 6
CBEM_GETEDITCONTROL    = WM_USER + 7
CBEM_SETEXSTYLE        = WM_USER + 8
CBEM_GETEXSTYLE        = WM_USER + 9
CBEM_GETEXTENDEDSTYLE  = WM_USER + 9
CBEM_HASEDITCHANGED    = WM_USER + 10
CBEM_INSERTITEMW       = WM_USER + 11
CBEM_SETITEMW          = WM_USER + 12
CBEM_GETITEMW          = WM_USER + 13
CBEM_SETEXTENDEDSTYLE  = WM_USER + 14

; ComboBoxEx notifications
CBEN_GETDISPINFOA = CBEN_FIRST - 0
CBEN_INSERTITEM   = CBEN_FIRST - 1
CBEN_DELETEITEM   = CBEN_FIRST - 2
CBEN_BEGINEDIT    = CBEN_FIRST - 4
CBEN_ENDEDITA     = CBEN_FIRST - 5
CBEN_ENDEDITW     = CBEN_FIRST - 6
CBEN_GETDISPINFOW = CBEN_FIRST - 7
CBEN_DRAGBEGINA   = CBEN_FIRST - 8
CBEN_DRAGBEGINW   = CBEN_FIRST - 9

shortnames \
CBEM_GETITEM,\
CBEM_INSERTITEM,\
CBEM_SETITEM,\
CBEN_DRAGBEGIN,\
CBEN_ENDEDIT,\
CBEN_GETDISPINFO

;====== TAB CONTROL ==========================================================
; Tab control styles
TCS_TABS              = $0000
TCS_SINGLELINE        = $0000
TCS_RIGHTJUSTIFY      = $0000
TCS_SCROLLOPPOSITE    = $0001
TCS_BOTTOM            = $0002
TCS_RIGHT             = $0002
TCS_MULTISELECT       = $0004
TCS_FLATBUTTONS       = $0008
TCS_FORCEICONLEFT     = $0010
TCS_FORCELABELLEFT    = $0020
TCS_HOTTRACK          = $0040
TCS_VERTICAL          = $0080
TCS_BUTTONS           = $0100
TCS_MULTILINE         = $0200
TCS_FIXEDWIDTH        = $0400
TCS_RAGGEDRIGHT       = $0800
TCS_FOCUSONBUTTONDOWN = $1000
TCS_OWNERDRAWFIXED    = $2000
TCS_TOOLTIPS          = $4000
TCS_FOCUSNEVER        = $8000

; Tab control exstyles
TCS_EX_FLATSEPARATORS = 1
TCS_EX_REGISTERDROP   = 2

; Tab control item structure members flags
TCIF_TEXT       = $0001
TCIF_IMAGE      = $0002
TCIF_RTLREADING = $0004
TCIF_PARAM      = $0008
TCIF_STATE      = $0010

; Tab control item states
TCIS_BUTTONPRESSED = 1
TCIS_HIGHLIGHTED   = 2

; Tab control hit test flags
TCHT_NOWHERE     = 1
TCHT_ONITEMICON  = 2
TCHT_ONITEMLABEL = 4
TCHT_ONITEM      = TCHT_ONITEMICON or TCHT_ONITEMLABEL

; Tab control messages
TCM_GETIMAGELIST     = TCM_FIRST + 2
TCM_SETIMAGELIST     = TCM_FIRST + 3
TCM_GETITEMCOUNT     = TCM_FIRST + 4
TCM_GETITEMA         = TCM_FIRST + 5
TCM_SETITEMA         = TCM_FIRST + 6
TCM_INSERTITEMA      = TCM_FIRST + 7
TCM_DELETEITEM       = TCM_FIRST + 8
TCM_DELETEALLITEMS   = TCM_FIRST + 9
TCM_GETITEMRECT      = TCM_FIRST + 10
TCM_GETCURSEL        = TCM_FIRST + 11
TCM_SETCURSEL        = TCM_FIRST + 12
TCM_HITTEST          = TCM_FIRST + 13
TCM_SETITEMEXTRA     = TCM_FIRST + 14
TCM_ADJUSTRECT       = TCM_FIRST + 40
TCM_SETITEMSIZE      = TCM_FIRST + 41
TCM_REMOVEIMAGE      = TCM_FIRST + 42
TCM_SETPADDING       = TCM_FIRST + 43
TCM_GETROWCOUNT      = TCM_FIRST + 44
TCM_GETTOOLTIPS      = TCM_FIRST + 45
TCM_SETTOOLTIPS      = TCM_FIRST + 46
TCM_GETCURFOCUS      = TCM_FIRST + 47
TCM_SETCURFOCUS      = TCM_FIRST + 48
TCM_SETMINTABWIDTH   = TCM_FIRST + 49
TCM_DESELECTALL      = TCM_FIRST + 50
TCM_HIGHLIGHTITEM    = TCM_FIRST + 51
TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52
TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53
TCM_GETITEMW         = TCM_FIRST + 60
TCM_SETITEMW         = TCM_FIRST + 61
TCM_INSERTITEMW      = TCM_FIRST + 62

; Tab control notifications
TCN_KEYDOWN     = TCN_FIRST - 0
TCN_SELCHANGE   = TCN_FIRST - 1
TCN_SELCHANGING = TCN_FIRST - 2
TCN_GETOBJECT   = TCN_FIRST - 3
TCN_FOCUSCHANGE = TCN_FIRST - 4

shortnames \
TCM_GETITEM,\
TCM_INSERTITEM,\
TCM_SETITEM

;====== ANIMATE CONTROL ======================================================
; Animation control styles
ACS_CENTER      = 1
ACS_TRANSPARENT = 2
ACS_AUTOPLAY    = 4
ACS_TIMER       = 8

; Animation control messages
ACM_OPENA     = WM_USER + 100
ACM_PLAY      = WM_USER + 101
ACM_STOP      = WM_USER + 102
ACM_OPENW     = WM_USER + 103
ACM_ISPLAYING = WM_USER + 104

; Animation control notifications
ACN_START = 1
ACN_STOP  = 2

shortnames \
ACM_OPEN

;====== MONTHCAL CONTROL ======================================================
; Month calendar styles
MCS_DAYSTATE         = $0001
MCS_MULTISELECT      = $0002
MCS_WEEKNUMBERS      = $0004
MCS_NOTODAYCIRCLE    = $0008
MCS_NOTODAY          = $0010
MCS_NOTRAILINGDATES  = $0040
MCS_SHORTDAYSOFWEEK  = $0080
MCS_NOSELCHANGEONNAV = $0100

; Month calendar color codes
MCSC_BACKGROUND   = 0
MCSC_TEXT         = 1
MCSC_TITLEBK      = 2
MCSC_TITLETEXT    = 3
MCSC_MONTHBK      = 4
MCSC_TRAILINGTEXT = 5

MCMV_MONTH   = 0
MCMV_YEAR    = 1
MCMV_DECADE  = 2
MCMV_CENTURY = 3
MCMV_MAX     = MCMV_CENTURY

MCGIP_CALENDARCONTROL = 0
MCGIP_NEXT            = 1
MCGIP_PREV            = 2
MCGIP_FOOTER          = 3
MCGIP_CALENDAR        = 4
MCGIP_CALENDARHEADER  = 5
MCGIP_CALENDARBODY    = 6
MCGIP_CALENDARROW     = 7
MCGIP_CALENDARCELL    = 8

MCGIF_DATE = 1
MCGIF_RECT = 2
MCGIF_NAME = 4

GMR_VISIBLE  = 0
GMR_DAYSTATE = 1

; Month calendar hit test flags
MCHT_NOWHERE          = $00000000
MCHT_TITLE            = $00010000
MCHT_CALENDAR         = $00020000
MCHT_TODAYLINK        = $00030000
MCHT_NEXT             = $01000000
MCHT_PREV             = $02000000
MCHT_TITLEBK          = MCHT_TITLE
MCHT_TITLEMONTH       = MCHT_TITLE or 1
MCHT_TITLEYEAR        = MCHT_TITLE or 2
MCHT_TITLEBTNNEXT     = MCHT_TITLE or MCHT_NEXT or 3
MCHT_TITLEBTNPREV     = MCHT_TITLE or MCHT_PREV or 3
MCHT_CALENDARBK       = MCHT_CALENDAR
MCHT_CALENDARDATE     = MCHT_CALENDAR or 1
MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE or MCHT_NEXT
MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE or MCHT_PREV
MCHT_CALENDARDAY      = MCHT_CALENDAR or 2
MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR or 3
MCHT_CALENDARDATEMIN  = MCHT_CALENDAR or 4
MCHT_CALENDARDATEMAX  = MCHT_CALENDAR or 5

; Month calendar messages
MCM_GETCURSEL           = MCM_FIRST + 1
MCM_SETCURSEL           = MCM_FIRST + 2
MCM_GETMAXSELCOUNT      = MCM_FIRST + 3
MCM_SETMAXSELCOUNT      = MCM_FIRST + 4
MCM_GETSELRANGE         = MCM_FIRST + 5
MCM_SETSELRANGE         = MCM_FIRST + 6
MCM_GETMONTHRANGE       = MCM_FIRST + 7
MCM_SETDAYSTATE         = MCM_FIRST + 8
MCM_GETMINREQRECT       = MCM_FIRST + 9
MCM_SETCOLOR            = MCM_FIRST + 10
MCM_GETCOLOR            = MCM_FIRST + 11
MCM_SETTODAY            = MCM_FIRST + 12
MCM_GETTODAY            = MCM_FIRST + 13
MCM_HITTEST             = MCM_FIRST + 14
MCM_SETFIRSTDAYOFWEEK   = MCM_FIRST + 15
MCM_GETFIRSTDAYOFWEEK   = MCM_FIRST + 16
MCM_GETRANGE            = MCM_FIRST + 17
MCM_SETRANGE            = MCM_FIRST + 18
MCM_GETMONTHDELTA       = MCM_FIRST + 19
MCM_SETMONTHDELTA       = MCM_FIRST + 20
MCM_GETMAXTODAYWIDTH    = MCM_FIRST + 21
MCM_GETCURRENTVIEW      = MCM_FIRST + 22
MCM_GETCALENDARCOUNT    = MCM_FIRST + 23
MCM_GETCALENDARGRIDINFO = MCM_FIRST + 24
MCM_GETCALID            = MCM_FIRST + 27
MCM_SETCALID            = MCM_FIRST + 28
MCM_SIZERECTTOMIN       = MCM_FIRST + 29
MCM_SETCALENDARBORDER   = MCM_FIRST + 30
MCM_GETCALENDARBORDER   = MCM_FIRST + 31
MCM_SETCURRENTVIEW      = MCM_FIRST + 32

; Month calendar notifications
MCN_SELECT      = MCN_FIRST
MCN_GETDAYSTATE = MCN_FIRST - 1
MCN_SELCHANGE   = MCN_FIRST - 3
MCN_VIEWCHANGE  = MCN_FIRST - 4

;====== DATETIMEPICK CONTROL ==================================================
; Date-time pick control styles
DTS_SHORTDATEFORMAT        = $0000
DTS_UPDOWN                 = $0001
DTS_SHOWNONE               = $0002
DTS_LONGDATEFORMAT         = $0004
DTS_TIMEFORMAT             = $0009
DTS_SHORTDATECENTURYFORMAT = $000C
DTS_APPCANPARSE            = $0010
DTS_RIGHTALIGN             = $0020

GDTR_MIN = 1
GDTR_MAX = 2

GDT_ERROR = -1
GDT_VALID = 0
GDT_NONE  = 1

; Date-time pick control messages
DTM_GETSYSTEMTIME         = DTM_FIRST + 1
DTM_SETSYSTEMTIME         = DTM_FIRST + 2
DTM_GETRANGE              = DTM_FIRST + 3
DTM_SETRANGE              = DTM_FIRST + 4
DTM_SETFORMATA            = DTM_FIRST + 5
DTM_SETMCCOLOR            = DTM_FIRST + 6
DTM_GETMCCOLOR            = DTM_FIRST + 7
DTM_GETMONTHCAL           = DTM_FIRST + 8
DTM_SETMCFONT             = DTM_FIRST + 9
DTM_GETMCFONT             = DTM_FIRST + 10
DTM_SETMCSTYLE            = DTM_FIRST + 11
DTM_GETMCSTYLE            = DTM_FIRST + 12
DTM_CLOSEMONTHCAL         = DTM_FIRST + 13
DTM_GETDATETIMEPICKERINFO = DTM_FIRST + 14
DTM_GETIDEALSIZE          = DTM_FIRST + 15
DTM_SETFORMATW            = DTM_FIRST + 50

; Date-time pick control notifications
DTN_DATETIMECHANGE = DTN_FIRST2 - 6
DTN_USERSTRINGA    = DTN_FIRST2 - 5
DTN_WMKEYDOWNA     = DTN_FIRST2 - 4
DTN_FORMATA        = DTN_FIRST2 - 3
DTN_FORMATQUERYA   = DTN_FIRST2 - 2
DTN_DROPDOWN       = DTN_FIRST2 - 1
DTN_CLOSEUP        = DTN_FIRST2
DTN_USERSTRINGW    = DTN_FIRST - 5
DTN_WMKEYDOWNW     = DTN_FIRST - 4
DTN_FORMATW        = DTN_FIRST - 3
DTN_FORMATQUERYW   = DTN_FIRST - 2

shortnames \
DTM_SETFORMAT,\
DTN_FORMAT,\
DTN_FORMATQUERY,\
DTN_USERSTRING,\
DTN_WMKEYDOWN

;====== IP ADDRESS EDIT CONTROL ===============================================
; IP control messages
IPM_CLEARADDRESS = WM_USER + 100
IPM_SETADDRESS   = WM_USER + 101
IPM_GETADDRESS   = WM_USER + 102
IPM_SETRANGE     = WM_USER + 103
IPM_SETFOCUS     = WM_USER + 104
IPM_ISBLANK      = WM_USER + 105

;====== PAGER CONTROL =========================================================
; Pager control styles
PGS_VERT       = 0
PGS_HORZ       = 1
PGS_AUTOSCROLL = 2
PGS_DRAGNDROP  = 4

; Pager button state
PGF_INVISIBLE = 0
PGF_NORMAL    = 1
PGF_GRAYED    = 2
PGF_DEPRESSED = 4
PGF_HOT       = 8

PGB_TOPORLEFT     = 0
PGB_BOTTOMORRIGHT = 1

PGF_SCROLLUP    = 1
PGF_SCROLLDOWN  = 2
PGF_SCROLLLEFT  = 4
PGF_SCROLLRIGHT = 8

PGK_SHIFT   = 1
PGK_CONTROL = 2
PGK_MENU    = 4

PGF_CALCWIDTH  = 1
PGF_CALCHEIGHT = 2

; Pager control messages
PGM_SETCHILD       = PGM_FIRST + 1
PGM_RECALCSIZE     = PGM_FIRST + 2
PGM_FORWARDMOUSE   = PGM_FIRST + 3
PGM_SETBKCOLOR     = PGM_FIRST + 4
PGM_GETBKCOLOR     = PGM_FIRST + 5
PGM_SETBORDER      = PGM_FIRST + 6
PGM_GETBORDER      = PGM_FIRST + 7
PGM_SETPOS         = PGM_FIRST + 8
PGM_GETPOS         = PGM_FIRST + 9
PGM_SETBUTTONSIZE  = PGM_FIRST + 10
PGM_GETBUTTONSIZE  = PGM_FIRST + 11
PGM_GETBUTTONSTATE = PGM_FIRST + 12
PGM_SETSCROLLINFO  = PGM_FIRST + 13

; Pager control notifications
PGN_SCROLL        = PGN_FIRST - 1
PGN_CALCSIZE      = PGN_FIRST - 2
PGN_HOTITEMCHANGE = PGN_FIRST - 3

;====== NATIVE FONT CONTROL ===================================================
; Native Font styles
NFS_EDIT         = $0001
NFS_STATIC       = $0002
NFS_LISTCOMBO    = $0004
NFS_BUTTON       = $0008
NFS_ALL          = $0010
NFS_USEFONTASSOC = $0020

;====================== Button Control ========================================
; Button styles
BS_SPLITBUTTON    = $0000000C
BS_DEFSPLITBUTTON = $0000000D
BS_COMMANDLINK    = $0000000E
BS_DEFCOMMANDLINK = $0000000F

; Split Button info structure members flags
BCSIF_GLYPH = $0001
BCSIF_IMAGE = $0002
BCSIF_STYLE = $0004
BCSIF_SIZE  = $0008

; Split Button style flags
BCSS_NOSPLIT   = $0001
BCSS_STRETCH   = $0002
BCSS_ALIGNLEFT = $0004
BCSS_IMAGE     = $0008

BUTTON_IMAGELIST_ALIGN_LEFT   = 0
BUTTON_IMAGELIST_ALIGN_RIGHT  = 1
BUTTON_IMAGELIST_ALIGN_TOP    = 2
BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
BUTTON_IMAGELIST_ALIGN_CENTER = 4

BST_HOT            = $0200
BST_DROPDOWNPUSHED = $0400

BCCL_NOGLYPH = -1

; Button control messages
BCM_GETIDEALSIZE     = BCM_FIRST + 1
BCM_SETIMAGELIST     = BCM_FIRST + 2
BCM_GETIMAGELIST     = BCM_FIRST + 3
BCM_SETTEXTMARGIN    = BCM_FIRST + 4
BCM_GETTEXTMARGIN    = BCM_FIRST + 5
BCM_SETDROPDOWNSTATE = BCM_FIRST + 6
BCM_SETSPLITINFO     = BCM_FIRST + 7
BCM_GETSPLITINFO     = BCM_FIRST + 8
BCM_SETNOTE          = BCM_FIRST + 9
BCM_GETNOTE          = BCM_FIRST + 10
BCM_GETNOTELENGTH    = BCM_FIRST + 11
BCM_SETSHIELD        = BCM_FIRST + 12

; Button control notifications
BCN_HOTITEMCHANGE = BCN_FIRST + 1
BCN_DROPDOWN      = BCN_FIRST + 2

;====================== Static Control ========================================
;====================== Edit Control ==========================================
; Edit Control messages
EM_SETCUEBANNER   = ECM_FIRST + 1
EM_GETCUEBANNER   = ECM_FIRST + 2
EM_SHOWBALLOONTIP = ECM_FIRST + 3
EM_HIDEBALLOONTIP = ECM_FIRST + 4
EM_SETHILITE      = ECM_FIRST + 5
EM_GETHILITE      = ECM_FIRST + 6
EM_NOSETFOCUS     = ECM_FIRST + 7
EM_TAKEFOCUS      = ECM_FIRST + 8

;====================== Listbox Control =======================================
;====================== Combobox Control ======================================
; Combobox messages
CB_SETMINVISIBLE = CBM_FIRST + 1
CB_GETMINVISIBLE = CBM_FIRST + 2
CB_SETCUEBANNER  = CBM_FIRST + 3
CB_GETCUEBANNER  = CBM_FIRST + 4
;====================== Scrollbar Control =====================================
;===================== Task Dialog ============================================
; Task Dialog flags
TDF_ENABLE_HYPERLINKS           = $00000001
TDF_USE_HICON_MAIN              = $00000002
TDF_USE_HICON_FOOTER            = $00000004
TDF_ALLOW_DIALOG_CANCELLATION   = $00000008
TDF_USE_COMMAND_LINKS           = $00000010
TDF_USE_COMMAND_LINKS_NO_ICON   = $00000020
TDF_EXPAND_FOOTER_AREA          = $00000040
TDF_EXPANDED_BY_DEFAULT         = $00000080
TDF_VERIFICATION_FLAG_CHECKED   = $00000100
TDF_SHOW_PROGRESS_BAR           = $00000200
TDF_SHOW_MARQUEE_PROGRESS_BAR   = $00000400
TDF_CALLBACK_TIMER              = $00000800
TDF_POSITION_RELATIVE_TO_WINDOW = $00001000
TDF_RTL_LAYOUT                  = $00002000
TDF_NO_DEFAULT_RADIO_BUTTON     = $00004000
TDF_CAN_BE_MINIMIZED            = $00008000
TDF_NO_SET_FOREGROUND           = $00010000
TDF_SIZE_TO_CONTENT             = $01000000

TD_WARNING_ICON     = -1
TD_ERROR_ICON       = -2
TD_INFORMATION_ICON = -3
TD_SHIELD_ICON      = -4

; Task Dialog common button flags
TDCBF_OK_BUTTON     = $0001
TDCBF_YES_BUTTON    = $0002
TDCBF_NO_BUTTON     = $0004
TDCBF_CANCEL_BUTTON = $0008
TDCBF_RETRY_BUTTON  = $0010
TDCBF_CLOSE_BUTTON  = $0020

; Task Dialog messages
TDM_NAVIGATE_PAGE                       = WM_USER+101
TDM_CLICK_BUTTON                        = WM_USER+102
TDM_SET_MARQUEE_PROGRESS_BAR            = WM_USER+103
TDM_SET_PROGRESS_BAR_STATE              = WM_USER+104
TDM_SET_PROGRESS_BAR_RANGE              = WM_USER+105
TDM_SET_PROGRESS_BAR_POS                = WM_USER+106
TDM_SET_PROGRESS_BAR_MARQUEE            = WM_USER+107
TDM_SET_ELEMENT_TEXT                    = WM_USER+108
TDM_CLICK_RADIO_BUTTON                  = WM_USER+110
TDM_ENABLE_BUTTON                       = WM_USER+111
TDM_ENABLE_RADIO_BUTTON                 = WM_USER+112
TDM_CLICK_VERIFICATION                  = WM_USER+113
TDM_UPDATE_ELEMENT_TEXT                 = WM_USER+114
TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115
TDM_UPDATE_ICON                         = WM_USER+116

; Task Dialog notifications
TDN_CREATED                = 0
TDN_NAVIGATED              = 1
TDN_BUTTON_CLICKED         = 2
TDN_HYPERLINK_CLICKED      = 3
TDN_TIMER                  = 4
TDN_DESTROYED              = 5
TDN_RADIO_BUTTON_CLICKED   = 6
TDN_DIALOG_CONSTRUCTED     = 7
TDN_VERIFICATION_CLICKED   = 8
TDN_HELP                   = 9
TDN_EXPANDO_BUTTON_CLICKED = 10


    

And one messege in fasm official package had wrong name (last symbol S missed in name) - I don`t remember what exactly.
When I translate this header from C++ to fasm I could make mistakes too.

maybe someone suggests name for macro:
by analogy with api targeted for import names
Code:
macro api [name] { if used name
                    label name dword at name#A
                   end if }    

macro for simplifiing constant encoding variations (I used name shortnames for it)
Code:
macro shortnames [name] { name = name#A } ;which will do same thing for message & notification codes    
Post 18 Oct 2020, 21:00
View user's profile Send private message Send e-mail Reply with quote
bitRAKE



Joined: 21 Jul 2003
Posts: 4079
Location: vpcmpistri
bitRAKE 19 Oct 2020, 16:26
Might be better to adopt the Win10 PSDK naming of "CommCtrl" instead of the previous 32/64 naming - considering you are going for a more neutral translation.
Code:
struct INITCOMMONCONTROLSEX
dwSize  rd      1
dwICC   rd      1
end struct    
INITCOMMONCONTROLSEX.dwICC of $80000000 has some use, but I don't think it's documented? I remember $8000FFFF will register 30 classes in total. "ReaderModeCtl" is the new one (an accessibility feature, IIRC), plus new interfaces for the standard controls (Button, Static, Edit, ...).

_________________
¯\(°_o)/¯ “languages are not safe - uses can be” Bjarne Stroustrup
Post 19 Oct 2020, 16:26
View user's profile Send private message Visit poster's website Reply with quote
ProMiNick



Joined: 24 Mar 2012
Posts: 806
Location: Russian Federation, Sochi
ProMiNick 19 Oct 2020, 20:16
In my personal package I split constant & structs. So constants header has no 32/64 suffix.
But naming still COMCTL. COMMCTRL name associated explicity with win16 subsystem, while COMCTL with at least win32 one.
I forget word alias, so for above macro better name 'shortaliases' - macro meaning is intuitive by its name, and word alias would remain free.
If I found anywhere
Quote:
INITCOMMONCONTROLSEX.dwICC of $80000000
I will extend field size & add this value (E_UNEXPECTED = HRESULT($8000FFFF), so it is lowly likely that $8000FFFF is ICC_ALL_CLASSES too).

when some constants could require altering I used one I predefined in headers
sizeof.PTR =4/8, sizeof.TCHAR = 1/2, so
Code:
%isWin64% equ (sizeof.PTR eq 8)
%isUnicode% equ (sizeof.TCHAR eq 2)    
Post 19 Oct 2020, 20:16
View user's profile Send private message Send e-mail Reply with quote
bitRAKE



Joined: 21 Jul 2003
Posts: 4079
Location: vpcmpistri
bitRAKE 20 Oct 2020, 01:04
Seems like a very flexible setup.
Post 20 Oct 2020, 01:04
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.