diff options
Diffstat (limited to 'plugins/Libs/delphicommctrl.inc')
-rw-r--r-- | plugins/Libs/delphicommctrl.inc | 1594 |
1 files changed, 1594 insertions, 0 deletions
diff --git a/plugins/Libs/delphicommctrl.inc b/plugins/Libs/delphicommctrl.inc new file mode 100644 index 0000000000..c7fa1bc628 --- /dev/null +++ b/plugins/Libs/delphicommctrl.inc @@ -0,0 +1,1594 @@ +{*******************************************************************************
+ delpicommctrl.inc
+ -- included in KOL.pas --
+*******************************************************************************}
+
+{$IFNDEF FPC}
+{$IFNDEF TMSG_WINDOWS}
+ {$DEFINE TMSG_DECODED}
+{$ENDIF}
+{$ENDIF}
+{$IFDEF TMSG_DECODED}
+{$I MsgDecode.pas}
+type
+ TMsg = packed record
+ CASE Integer OF
+ 0: (
+ hwnd: HWND;
+ message: UINT;
+ wParam: WPARAM;
+ lParam: LPARAM;
+ time: DWORD;
+ pt: TPoint;
+ );
+ //1: ( Bmsg: Windows.TMsg; );
+ 2: ( Cmsg: TMsgDecoded; );
+ end;
+
+ tagMSG = TMsg;
+{$ENDIF TMSG_DECODED}
+
+
+////////////////////////////////////////////////////////////////////////////
+// this part of unit contains definitions moved here from CommCtrl.pas
+// (using of CommCtrl.pas in Delphi3 leads to increase size of executable
+// onto 30K)
+
+type
+ PTCItemA = ^TTCItemA;
+ PTCItemW = ^TTCItemW;
+ PTCItem = {$IFDEF UNICODE_CTRLS} PTCItemW {$ELSE} PTCItemA {$ENDIF};
+ tagTCITEMA = packed record
+ mask: UINT;
+ dwState: UINT;
+ dwStateMask: UINT;
+ pszText: PAnsiChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ lParam: LPARAM;
+ end;
+ tagTCITEMW = packed record
+ mask: UINT;
+ dwState: UINT;
+ dwStateMask: UINT;
+ pszText: PWideChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ lParam: LPARAM;
+ end;
+
+ PTCKeyDown = ^TTCKeyDown;
+ TTCKEYDOWN = packed record
+ hdr: TNMHDR;
+ wVKey: Word;
+ flags: UINT;
+ end;
+
+ tagTCITEM = {$IFDEF UNICODE_CTRLS} tagTCITEMW {$ELSE} tagTCITEMA {$ENDIF};
+ _TC_ITEMA = tagTCITEMA;
+ _TC_ITEMW = tagTCITEMW;
+ _TC_ITEM = {$IFDEF UNICODE_CTRLS} _TC_ITEMW {$ELSE} _TC_ITEMA {$ENDIF};
+ TTCItemA = tagTCITEMA;
+ TTCItemW = tagTCITEMW;
+ TTCItem = {$IFDEF UNICODE_CTRLS} TTCItemW {$ELSE} TTCItemA {$ENDIF};
+ TC_ITEMA = tagTCITEMA;
+ TC_ITEMW = tagTCITEMW;
+ TC_ITEM = {$IFDEF UNICODE_CTRLS} TC_ITEMW {$ELSE} TC_ITEMA {$ENDIF};
+
+
+const
+ CCM_FIRST = $2000; { Common control shared messages }
+ CCM_SETBKCOLOR = CCM_FIRST + 1; // lParam is bkColor
+ CCM_SETCOLORSCHEME = CCM_FIRST + 2; // lParam is color scheme
+ CCM_GETCOLORSCHEME = CCM_FIRST + 3; // fills in COLORSCHEME pointed to by lParam
+ CCM_GETDROPTARGET = CCM_FIRST + 4;
+ CCM_SETUNICODEFORMAT = CCM_FIRST + 5;
+ CCM_GETUNICODEFORMAT = CCM_FIRST + 6;
+
+ TCS_SCROLLOPPOSITE = $0001; // assumes multiline tab
+ TCS_BOTTOM = $0002;
+ TCS_RIGHT = $0002;
+ TCS_MULTISELECT = $0004; // allow multi-select in button mode
+ TCS_FLATBUTTONS = $0008;
+ TCS_FORCEICONLEFT = $0010;
+ TCS_FORCELABELLEFT = $0020;
+ TCS_HOTTRACK = $0040;
+ TCS_VERTICAL = $0080;
+ TCS_TABS = $0000;
+ TCS_BUTTONS = $0100;
+ TCS_SINGLELINE = $0000;
+ TCS_MULTILINE = $0200;
+ TCS_RIGHTJUSTIFY = $0000;
+ TCS_FIXEDWIDTH = $0400;
+ TCS_RAGGEDRIGHT = $0800;
+ TCS_FOCUSONBUTTONDOWN = $1000;
+ TCS_OWNERDRAWFIXED = $2000;
+ TCS_TOOLTIPS = $4000;
+ TCS_FOCUSNEVER = $8000;
+
+ TCS_EX_FLATSEPARATORS = $00000001;
+ TCS_EX_REGISTERDROP = $00000002;
+
+ TCM_FIRST = $1300; { 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; // optional wParam == mask
+ TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53;
+ TCM_GETITEMW = TCM_FIRST + 60;
+ TCM_SETITEMW = TCM_FIRST + 61;
+ TCM_INSERTITEMW = TCM_FIRST + 62;
+ TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
+ TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
+ TCM_GETITEM = {$IFDEF UNICODE_CTRLS} TCM_GETITEMW
+ {$ELSE} TCM_GETITEMA {$ENDIF};
+ TCM_SETITEM = {$IFDEF UNICODE_CTRLS} TCM_SETITEMW
+ {$ELSE} TCM_SETITEMA {$ENDIF};
+ TCM_INSERTITEM = {$IFDEF UNICODE_CTRLS} TCM_INSERTITEMW
+ {$ELSE} TCM_INSERTITEMA {$ENDIF};
+
+ TCN_FIRST = 0-550; { tab control }
+ TCN_LAST = 0-580;
+ TCN_KEYDOWN = TCN_FIRST - 0;
+ TCN_SELCHANGE = TCN_FIRST - 1;
+ TCN_SELCHANGING = TCN_FIRST - 2;
+ TCN_GETOBJECT = TCN_FIRST - 3;
+
+ TCIF_TEXT = $0001;
+ TCIF_IMAGE = $0002;
+ TCIF_RTLREADING = $0004;
+ TCIF_PARAM = $0008;
+ TCIF_STATE = $0010;
+
+ PBS_SMOOTH = 01;
+ PBS_VERTICAL = 04;
+
+ 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; // lParam = high, wParam = low
+ PBM_GETRANGE = WM_USER+7; // lParam = PPBRange or Nil
+ // wParam = False: Result = high
+ // wParam = True: Result = low
+ PBM_GETPOS = WM_USER+8;
+ PBM_SETBARCOLOR = WM_USER+9; // lParam = bar color
+ PBM_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
+
+ SB_SETTEXTA = WM_USER+1;
+ SB_GETTEXTA = WM_USER+2;
+ SB_GETTEXTLENGTHA = WM_USER+3;
+ SB_SETTIPTEXTA = WM_USER+16;
+ SB_GETTIPTEXTA = WM_USER+18;
+
+ SB_SETTEXTW = WM_USER+11;
+ SB_GETTEXTW = WM_USER+13;
+ SB_GETTEXTLENGTHW = WM_USER+12;
+ SB_SETTIPTEXTW = WM_USER+17;
+ SB_GETTIPTEXTW = WM_USER+19;
+
+ SB_SETTEXT = {$IFDEF UNICODE_CTRLS} SB_SETTEXTW {$ELSE} SB_SETTEXTA {$ENDIF};
+ SB_GETTEXT = {$IFDEF UNICODE_CTRLS} SB_GETTEXTW {$ELSE} SB_GETTEXTA {$ENDIF};
+ SB_GETTEXTLENGTH = {$IFDEF UNICODE_CTRLS} SB_GETTEXTLENGTHW {$ELSE} SB_GETTEXTLENGTHA {$ENDIF};
+ SB_SETTIPTEXT = {$IFDEF UNICODE_CTRLS} SB_SETTIPTEXTW {$ELSE} SB_SETTIPTEXTA {$ENDIF};
+ SB_GETTIPTEXT = {$IFDEF UNICODE_CTRLS} SB_GETTIPTEXTW {$ELSE} SB_GETTIPTEXTA {$ENDIF};
+
+ 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_ISSIMPLE = WM_USER+14;
+ SB_SETICON = WM_USER+15;
+ SB_GETICON = WM_USER+20;
+ SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
+ SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
+
+ SBT_OWNERDRAW = $1000;
+ SBT_NOBORDERS = $0100;
+ SBT_POPOUT = $0200;
+ SBT_RTLREADING = $0400;
+ SBT_TOOLTIPS = $0800;
+
+ SB_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
+
+ SBARS_SIZEGRIP = $0100;
+
+ { List View Styles }
+ 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_OWNERDATA = $1000;
+ LVS_NOSCROLL = $2000;
+
+ LVS_TYPESTYLEMASK = $FC00;
+
+ LVS_ALIGNTOP = $0000;
+ LVS_ALIGNLEFT = $0800;
+ LVS_ALIGNMASK = $0c00;
+
+ LVS_OWNERDRAWFIXED = $0400;
+ LVS_NOCOLUMNHEADER = $4000;
+ LVS_NOSORTHEADER = $8000;
+
+ { 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; // applies to report mode only
+ LVS_EX_ONECLICKACTIVATE = $00000040;
+ LVS_EX_TWOCLICKACTIVATE = $00000080;
+ LVS_EX_FLATSB = $00000100;
+ LVS_EX_REGIONAL = $00000200;
+ LVS_EX_INFOTIP = $00000400; // listview does InfoTips for you
+ LVS_EX_LABELTIP = $00004000;
+ LVS_EX_UNDERLINEHOT = $00000800;
+ LVS_EX_UNDERLINECOLD = $00001000;
+ LVS_EX_MULTIWORKAREAS = $00002000;
+
+ I_IMAGECALLBACK = -1;
+ I_SKIP = -2;
+ LVSIL_NORMAL = 0;
+ LVSIL_SMALL = 1;
+ LVSIL_STATE = 2;
+
+ { List View column styles }
+ LVCF_FMT = $0001;
+ LVCF_WIDTH = $0002;
+ LVCF_TEXT = $0004;
+ LVCF_SUBITEM = $0008;
+ LVCF_IMAGE = $0010;
+ LVCF_ORDER = $0020;
+ LVSCW_AUTOSIZE = -1;
+ LVSCW_AUTOSIZE_USEHEADER = -2;
+
+ LVCFMT_LEFT = $0000;
+ LVCFMT_RIGHT = $0001;
+ LVCFMT_CENTER = $0002;
+ LVCFMT_JUSTIFYMASK = $0003;
+
+ LVCFMT_IMAGE = $0800;
+ LVCFMT_BITMAP_ON_RIGHT = $1000;
+ LVCFMT_COL_HAS_IMAGES = $8000;
+
+ LVIF_TEXT = $0001;
+ LVIF_IMAGE = $0002;
+ LVIF_PARAM = $0004;
+ LVIF_STATE = $0008;
+ LVIF_INDENT = $0010;
+ //LVIF_NORECOMPUTE = $0800;
+ LVIF_DI_SETITEM = $1000;
+
+ LVIS_FOCUSED = $0001;
+ LVIS_SELECTED = $0002;
+ LVIS_CUT = $0004;
+ LVIS_DROPHILITED = $0008;
+ //LVIS_ACTIVATING = $0020;
+
+ LVIS_OVERLAYMASK = $0F00;
+ LVIS_STATEIMAGEMASK = $F000;
+
+ { List View messages }
+ LVM_FIRST = $1000; { ListView messages }
+ LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
+ LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
+ 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_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_GETHEADER = LVM_FIRST + 31;
+
+ 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_SETWORKAREA = 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_GETCOLUMNW = LVM_FIRST + 95;
+ LVM_SETCOLUMNW = LVM_FIRST + 96;
+ LVM_INSERTCOLUMNW = LVM_FIRST + 97;
+
+ 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_GETITEM = {$IFDEF UNICODE_CTRLS} LVM_GETITEMW {$ELSE} LVM_GETITEMA {$ENDIF};
+ LVM_SETITEM = {$IFDEF UNICODE_CTRLS} LVM_SETITEMW {$ELSE} LVM_SETITEMA {$ENDIF};
+ LVM_INSERTITEM = {$IFDEF UNICODE_CTRLS} LVM_INSERTITEMW {$ELSE} LVM_INSERTITEMA {$ENDIF};
+ LVM_GETCOLUMN = {$IFDEF UNICODE_CTRLS} LVM_GETCOLUMNW {$ELSE} LVM_GETCOLUMNA {$ENDIF};
+ LVM_SETCOLUMN = {$IFDEF UNICODE_CTRLS} LVM_SETCOLUMNW {$ELSE} LVM_SETCOLUMNA {$ENDIF};
+ LVM_INSERTCOLUMN = {$IFDEF UNICODE_CTRLS} LVM_INSERTCOLUMNW {$ELSE} LVM_INSERTCOLUMNA {$ENDIF};
+ LVM_GETITEMTEXT = {$IFDEF UNICODE_CTRLS} LVM_GETITEMTEXTW {$ELSE} LVM_GETITEMTEXTA {$ENDIF};
+ LVM_SETITEMTEXT = {$IFDEF UNICODE_CTRLS} LVM_SETITEMTEXTW {$ELSE} LVM_SETITEMTEXTA {$ENDIF};
+ LVM_EDITLABEL = {$IFDEF UNICODE_CTRLS} LVM_EDITLABELW {$ELSE} LVM_EDITLABELA {$ENDIF};
+ LVM_FINDITEM = {$IFDEF UNICODE_CTRLS} LVM_FINDITEMW {$ELSE} LVM_FINDITEMA {$ENDIF};
+ LVM_GETISEARCHSTRING = {$IFDEF UNICODE_CTRLS} LVM_GETISEARCHSTRINGW {$ELSE} LVM_GETISEARCHSTRINGA {$ENDIF};
+ LVM_GETSTRINGWIDTH = {$IFDEF UNICODE_CTRLS} LVM_GETSTRINGWIDTHW {$ELSE} LVM_GETSTRINGWIDTHA {$ENDIF};
+
+ LVM_SETBKIMAGE = {$IFDEF UNICODE_CTRLS} LVM_SETBKIMAGEW {$ELSE} LVM_SETBKIMAGEA {$ENDIF};
+ LVM_GETBKIMAGE = {$IFDEF UNICODE_CTRLS} LVM_GETBKIMAGEW {$ELSE} LVM_GETBKIMAGEA {$ENDIF};
+
+ LV_MAX_WORKAREAS = 16;
+
+ LVIR_BOUNDS = 0;
+ LVIR_ICON = 1;
+ LVIR_LABEL = 2;
+ LVIR_SELECTBOUNDS = 3;
+
+ LVHT_NOWHERE = $0001;
+ LVHT_ONITEMICON = $0002;
+ LVHT_ONITEMLABEL = $0004;
+ LVHT_ONITEMSTATEICON = $0008;
+ LVHT_ONITEM = LVHT_ONITEMICON or LVHT_ONITEMLABEL or
+ LVHT_ONITEMSTATEICON;
+ LVHT_ABOVE = $0008;
+ LVHT_BELOW = $0010;
+ LVHT_TORIGHT = $0020;
+ LVHT_TOLEFT = $0040;
+
+ LVNI_ALL = $0000;
+ LVNI_FOCUSED = $0001;
+ LVNI_SELECTED = $0002;
+ LVNI_CUT = $0004;
+ LVNI_DROPHILITED = $0008;
+
+ LVNI_ABOVE = $0100;
+ LVNI_BELOW = $0200;
+ LVNI_TOLEFT = $0400;
+ LVNI_TORIGHT = $0800;
+
+ { WM_NOTIFY codes }
+ NM_FIRST = 0- 0; { generic to all controls }
+ NM_LAST = 0- 99;
+ 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; // uses NMMOUSE struct
+ NM_KEYDOWN = NM_FIRST-15; // uses NMKEY struct
+ NM_RELEASEDCAPTURE = NM_FIRST-16;
+ NM_SETCURSOR = NM_FIRST-17; // uses NMMOUSE struct
+ NM_CHAR = NM_FIRST-18; // uses NMCHAR struct
+
+ LVN_FIRST = 0-100; { listview }
+ LVN_LAST = 0-199;
+ 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_COLUMNCLICK = LVN_FIRST-8;
+ LVN_BEGINDRAG = LVN_FIRST-9;
+ LVN_BEGINRDRAG = LVN_FIRST-11;
+ LVN_ODCACHEHINT = LVN_FIRST-13;
+ LVN_ODFINDITEMA = LVN_FIRST-52;
+ LVN_ODFINDITEMW = LVN_FIRST-79;
+ LVN_ITEMACTIVATE = LVN_FIRST-14;
+ LVN_ODSTATECHANGED = LVN_FIRST-15;
+ LVN_ODFINDITEM = {$IFDEF UNICODE_CTRLS} LVN_ODFINDITEMW {$ELSE} LVN_ODFINDITEMA {$ENDIF};
+ LVN_BEGINLABELEDITA = LVN_FIRST-5;
+ LVN_ENDLABELEDITA = LVN_FIRST-6;
+ LVN_BEGINLABELEDITW = LVN_FIRST-75;
+ LVN_ENDLABELEDITW = LVN_FIRST-76;
+ LVN_BEGINLABELEDIT = {$IFDEF UNICODE_CTRLS} LVN_BEGINLABELEDITW {$ELSE} LVN_BEGINLABELEDITA {$ENDIF};
+ LVN_ENDLABELEDIT = {$IFDEF UNICODE_CTRLS} LVN_ENDLABELEDITW {$ELSE} LVN_ENDLABELEDITA {$ENDIF};
+ LVN_HOTTRACK = LVN_FIRST-21;
+ LVN_GETDISPINFOA = LVN_FIRST-50;
+ LVN_SETDISPINFOA = LVN_FIRST-51;
+ LVN_GETDISPINFOW = LVN_FIRST-77;
+ LVN_SETDISPINFOW = LVN_FIRST-78;
+ LVN_GETDISPINFO = {$IFDEF UNICODE_CTRLS} LVN_GETDISPINFOW {$ELSE} LVN_GETDISPINFOA {$ENDIF};
+ LVN_SETDISPINFO = {$IFDEF UNICODE_CTRLS} LVN_SETDISPINFOW {$ELSE} LVN_SETDISPINFOA {$ENDIF};
+
+type
+ tagNMLVODSTATECHANGE = packed record
+ hdr: TNMHdr;
+ iFrom: Integer;
+ iTo: Integer;
+ uNewState: UINT;
+ uOldState: UINT;
+ end;
+ PNMLVODStateChange = ^TNMLVODStateChange;
+ TNMLVODStateChange = tagNMLVODSTATECHANGE;
+
+type
+ PLVColumn = ^TLVColumn;
+ TLVColumn = packed record
+ mask: DWORD;
+ fmt: DWORD;
+ cx: Integer;
+ pszText: PKOL_Char;
+ cchTextMax: Integer;
+ iSubItem: Integer;
+ // only IE4+ :
+ iImage: Integer;
+ iOrder: Integer;
+ end;
+
+ PLVItem = ^TLVItem;
+ TLVItem = packed record
+ mask: DWORD;
+ iItem: Integer;
+ iSubItem: Integer;
+ state: Integer;
+ stateMask: DWORD;
+ pszText: PKOL_Char;
+ cchTextMax: Integer;
+ iImage: Integer;
+ lParam: LParam;
+ iIndent: Integer; // only for IE3.0 and higher
+ end;
+
+ PLVDispInfo = ^TLVDispInfo;
+ TLVDispInfo = packed record
+ hdr: TNMHDR;
+ item: TLVItem;
+ end;
+
+ PLVFindInfoA = ^TLVFindInfo;
+ TLVFindInfo = packed record
+ flags: UINT;
+ psz: PKOLChar;
+ lParam: LPARAM;
+ pt: TPoint;
+ vkDirection: UINT;
+ end;
+ PLVFindInfoW = ^TLVFindInfoW;
+ TLVFindInfoW = packed record
+ flags: UINT;
+ psz: PWideChar;
+ lParam: LPARAM;
+ pt: TPoint;
+ vkDirection: UINT;
+ end;
+
+ TLVHitTestInfo = packed record
+ pt: TPoint;
+ flags: DWORD;
+ iItem: Integer;
+ iSubItem: Integer;
+ end;
+
+const
+ LVFI_PARAM = $0001;
+ LVFI_STRING = $0002;
+ LVFI_PARTIAL = $0008;
+ LVFI_WRAP = $0020;
+ LVFI_NEARESTXY = $0040;
+
+const
+ HDM_FIRST = $1200; { Header messages }
+ HDM_GETITEMW = HDM_FIRST + 11;
+ HDM_GETITEMA = HDM_FIRST + 3;
+ HDM_GETITEM = {$IFDEF UNICODE_CTRLS} HDM_GETITEMW {$ELSE} HDM_GETITEMA {$ENDIF};
+
+ HDI_WIDTH = $0001;
+
+type
+ PHDItemA = ^THDItemA;
+ PHDItemW = ^THDItemW;
+ PHDItem = {$IFDEF UNICODE_CTRLS} PHDItemW {$ELSE} PHDItemA {$ENDIF};
+ _HD_ITEMA = packed record
+ Mask: Cardinal;
+ cxy: Integer;
+ pszText: PAnsiChar;
+ hbm: HBITMAP;
+ cchTextMax: Integer;
+ fmt: Integer;
+ lParam: LPARAM;
+ iImage: Integer; // index of bitmap in ImageList
+ iOrder: Integer; // where to draw this item
+ end;
+ _HD_ITEMW = packed record
+ Mask: Cardinal;
+ cxy: Integer;
+ pszText: PWideChar;
+ hbm: HBITMAP;
+ cchTextMax: Integer;
+ fmt: Integer;
+ lParam: LPARAM;
+ iImage: Integer; // index of bitmap in ImageList
+ iOrder: Integer; // where to draw this item
+ end;
+ THDItemA = _HD_ITEMA;
+ THDItemW = _HD_ITEMW;
+ THDItem = {$IFDEF UNICODE_CTRLS} _HD_ITEMW {$ELSE} _HD_ITEMA {$ENDIF};
+
+const
+ 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;
+
+ 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_DI_SETITEM = $1000;
+
+ 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;
+
+ TV_FIRST = $1100; { TreeView messages }
+ TVM_INSERTITEMA = TV_FIRST + 0;
+ TVM_INSERTITEMW = TV_FIRST + 50;
+ TVM_INSERTITEM = {$IFDEF UNICODE_CTRLS} TVM_INSERTITEMW
+ {$ELSE} TVM_INSERTITEMA {$ENDIF};
+ TVM_DELETEITEM = TV_FIRST + 1;
+ TVM_EXPAND = TV_FIRST + 2;
+
+ TVE_COLLAPSE = $0001;
+ TVE_EXPAND = $0002;
+ TVE_TOGGLE = $0003;
+ TVE_EXPANDPARTIAL = $4000;
+ TVE_COLLAPSERESET = $8000;
+
+ 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;
+
+ TVSIL_NORMAL = 0;
+ TVSIL_STATE = 2;
+
+ TVM_SETIMAGELIST = TV_FIRST + 9;
+ TVM_GETNEXTITEM = TV_FIRST + 10;
+
+ 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;
+
+ TVM_SELECTITEM = TV_FIRST + 11;
+ TVM_GETITEMA = TV_FIRST + 12;
+ TVM_GETITEMW = TV_FIRST + 62;
+ TVM_GETITEM = {$IFDEF UNICODE_CTRLS} TVM_GETITEMW {$ELSE} TVM_GETITEMA {$ENDIF};
+ TVM_SETITEMA = TV_FIRST + 13;
+ TVM_SETITEMW = TV_FIRST + 63;
+ TVM_SETITEM = {$IFDEF UNICODE_CTRLS} TVM_SETITEMW {$ELSE} TVM_SETITEMA {$ENDIF};
+ TVM_EDITLABELA = TV_FIRST + 14;
+ TVM_EDITLABELW = TV_FIRST + 65;
+ TVM_EDITLABEL = {$IFDEF UNICODE_CTRLS} TVM_EDITLABELW {$ELSE} TVM_EDITLABELA {$ENDIF};
+ TVM_GETEDITCONTROL = TV_FIRST + 15;
+ TVM_GETVISIBLECOUNT = TV_FIRST + 16;
+ TVM_HITTEST = TV_FIRST + 17;
+
+ 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;
+
+ 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_GETISEARCHSTRINGW = TV_FIRST + 64;
+ TVM_GETISEARCHSTRING = {$IFDEF UNICODE_CTRLS} TVM_GETISEARCHSTRINGW {$ELSE} TVM_GETISEARCHSTRINGA {$ENDIF};
+ TVM_SETTOOLTIPS = TV_FIRST + 24;
+ TVM_GETTOOLTIPS = TV_FIRST + 25;
+ TVM_SETINSERTMARK = TV_FIRST + 26;
+ TVM_SETITEMHEIGHT = TV_FIRST + 27;
+ TVM_GETITEMHEIGHT = TV_FIRST + 28;
+ TVM_SETBKCOLOR = TV_FIRST + 29;
+ TVM_SETTEXTCOLOR = TV_FIRST + 30;
+ TVM_GETBKCOLOR = TV_FIRST + 31;
+ TVM_GETTEXTCOLOR = TV_FIRST + 32;
+ TVM_SETSCROLLTIME = TV_FIRST + 33;
+ TVM_GETSCROLLTIME = TV_FIRST + 34;
+ TVM_SETINSERTMARKCOLOR = TV_FIRST + 37;
+ TVM_GETINSERTMARKCOLOR = TV_FIRST + 38;
+ TVM_SETLINECOLOR = TV_FIRST + 40;
+
+ TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
+ TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
+
+ TVN_FIRST = 0-400; { treeview }
+ TVN_LAST = 0-499;
+ TVN_SELCHANGINGA = TVN_FIRST-1;
+ TVN_SELCHANGEDA = TVN_FIRST-2;
+ TVN_SELCHANGINGW = TVN_FIRST-50;
+ TVN_SELCHANGEDW = TVN_FIRST-51;
+ TVN_SELCHANGING = {$IFDEF UNICODE_CTRLS} TVN_SELCHANGINGW {$ELSE} TVN_SELCHANGINGA {$ENDIF};
+ TVN_SELCHANGED = {$IFDEF UNICODE_CTRLS} TVN_SELCHANGEDW {$ELSE} TVN_SELCHANGEDA {$ENDIF};
+
+ TVC_UNKNOWN = $0000;
+ TVC_BYMOUSE = $0001;
+ TVC_BYKEYBOARD = $0002;
+
+ TVN_GETDISPINFOA = TVN_FIRST-3;
+ TVN_SETDISPINFOA = TVN_FIRST-4;
+ TVN_GETDISPINFOW = TVN_FIRST-52;
+ TVN_SETDISPINFOW = TVN_FIRST-53;
+ TVN_GETDISPINFO = {$IFDEF UNICODE_CTRLS} TVN_GETDISPINFOW {$ELSE} TVN_GETDISPINFOA {$ENDIF};
+ TVN_SETDISPINFO = {$IFDEF UNICODE_CTRLS} TVN_SETDISPINFOW {$ELSE} TVN_SETDISPINFOA {$ENDIF};
+
+ 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_GETINFOTIPA = TVN_FIRST-13;
+ 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;
+ TVN_GETINFOTIPW = TVN_FIRST-14;
+ TVN_ITEMEXPANDING = {$IFDEF UNICODE_CTRLS} TVN_ITEMEXPANDINGW {$ELSE} TVN_ITEMEXPANDINGA {$ENDIF};
+ TVN_ITEMEXPANDED = {$IFDEF UNICODE_CTRLS} TVN_ITEMEXPANDEDW {$ELSE} TVN_ITEMEXPANDEDA {$ENDIF};
+ TVN_BEGINDRAG = {$IFDEF UNICODE_CTRLS} TVN_BEGINDRAGW {$ELSE} TVN_BEGINDRAGA {$ENDIF};
+ TVN_BEGINRDRAG = {$IFDEF UNICODE_CTRLS} TVN_BEGINRDRAGW {$ELSE} TVN_BEGINRDRAGA {$ENDIF};
+ TVN_DELETEITEM = {$IFDEF UNICODE_CTRLS} TVN_DELETEITEMW {$ELSE} TVN_DELETEITEMA {$ENDIF};
+ TVN_BEGINLABELEDIT = {$IFDEF UNICODE_CTRLS} TVN_BEGINLABELEDITW {$ELSE} TVN_BEGINLABELEDITA {$ENDIF};
+ TVN_ENDLABELEDIT = {$IFDEF UNICODE_CTRLS} TVN_ENDLABELEDITW {$ELSE} TVN_ENDLABELEDITA {$ENDIF};
+ TVN_GETINFOTIP = {$IFDEF UNICODE_CTRLS} TVN_GETINFOTIPW {$ELSE} TVN_GETINFOTIPA {$ENDIF};
+ TVN_KEYDOWN = TVN_FIRST-12;
+ TVN_SINGLEEXPAND = TVN_FIRST-15;
+
+ TVI_ROOT = $FFFF0000;
+ TVI_FIRST = $FFFF0001;
+ TVI_LAST = $FFFF0002;
+ TVI_SORT = $FFFF0003;
+
+type
+ PTVItemA = ^TTVItemA;
+ PTVItemW = ^TTVItemW;
+ PTVItem = {$IFDEF UNICODE_CTRLS} PTVItemW {$ELSE} PTVItemA {$ENDIF};
+ tagTVITEMA = packed record
+ mask: UINT;
+ hItem: THandle;
+ state: UINT;
+ stateMask: UINT;
+ pszText: PAnsiChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ iSelectedImage: Integer;
+ cChildren: Integer;
+ lParam: LPARAM;
+ end;
+ tagTVITEMW = packed record
+ mask: UINT;
+ hItem: THandle;
+ state: UINT;
+ stateMask: UINT;
+ pszText: PWideChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ iSelectedImage: Integer;
+ cChildren: Integer;
+ lParam: LPARAM;
+ end;
+ tagTVITEM = {$IFDEF UNICODE_CTRLS} tagTVITEMW {$ELSE} tagTVITEMA {$ENDIF};
+ _TV_ITEMA = tagTVITEMA;
+ _TV_ITEMW = tagTVITEMW;
+ _TV_ITEM = {$IFDEF UNICODE_CTRLS} _TV_ITEMW {$ELSE} _TV_ITEMA {$ENDIF};
+ TTVItemA = tagTVITEMA;
+ TTVItemW = tagTVITEMW;
+ TTVItem = {$IFDEF UNICODE_CTRLS} TTVItemW {$ELSE} TTVItemA {$ENDIF};
+ TV_ITEMA = tagTVITEMA;
+ TV_ITEMW = tagTVITEMW;
+ TV_ITEM = {$IFDEF UNICODE_CTRLS} TV_ITEMW {$ELSE} TV_ITEMA {$ENDIF};
+
+ // only used for Get and Set messages. no notifies
+ tagTVITEMEXA = packed record
+ mask: UINT;
+ hItem: THandle;
+ state: UINT;
+ stateMask: UINT;
+ pszText: PAnsiChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ iSelectedImage: Integer;
+ cChildren: Integer;
+ lParam: LPARAM;
+ iIntegral: Integer;
+ end;
+ tagTVITEMEXW = packed record
+ mask: UINT;
+ hItem: THandle;
+ state: UINT;
+ stateMask: UINT;
+ pszText: PWideChar;
+ cchTextMax: Integer;
+ iImage: Integer;
+ iSelectedImage: Integer;
+ cChildren: Integer;
+ lParam: LPARAM;
+ iIntegral: Integer;
+ end;
+ tagTVITEMEX = {$IFDEF UNICODE_CTRLS} tagTVITEMEXW {$ELSE} tagTVITEMEXA {$ENDIF};
+ PTVItemExA = ^TTVItemExA;
+ PTVItemExW = ^TTVItemExW;
+ PTVItemEx = {$IFDEF UNICODE_CTRLS} PTVItemExW {$ELSE} PTVItemExA {$ENDIF};
+ TTVItemExA = tagTVITEMEXA;
+ TTVItemExW = tagTVITEMEXW;
+ TTVItemEx = {$IFDEF UNICODE_CTRLS} TTVItemExW {$ELSE} TTVItemExA {$ENDIF};
+
+ PNMTreeViewA = ^TNMTreeViewA;
+ PNMTreeViewW = ^TNMTreeViewW;
+ PNMTreeView = {$IFDEF UNICODE_CTRLS} PNMTreeViewW {$ELSE} PNMTreeViewA {$ENDIF};
+ tagNMTREEVIEWA = packed record
+ hdr: TNMHDR;
+ action: Integer;
+ itemOld: TTVItemA;
+ itemNew: TTVItemA;
+ ptDrag: TPoint;
+ end;
+ tagNMTREEVIEWW = packed record
+ hdr: TNMHDR;
+ action: Integer;
+ itemOld: TTVItemW;
+ itemNew: TTVItemW;
+ ptDrag: TPoint;
+ end;
+ tagNMTREEVIEW = {$IFDEF UNICODE_CTRLS} tagNMTREEVIEWW {$ELSE} tagNMTREEVIEWA {$ENDIF};
+ _NM_TREEVIEWA = tagNMTREEVIEWA;
+ _NM_TREEVIEWW = tagNMTREEVIEWW;
+ _NM_TREEVIEW = {$IFDEF UNICODE_CTRLS} _NM_TREEVIEWW {$ELSE} _NM_TREEVIEWA {$ENDIF};
+ TNMTreeViewA = tagNMTREEVIEWA;
+ TNMTreeViewW = tagNMTREEVIEWW;
+ TNMTreeView = {$IFDEF UNICODE_CTRLS} TNMTreeViewW {$ELSE} TNMTreeViewA {$ENDIF};
+ NM_TREEVIEWA = tagNMTREEVIEWA;
+ NM_TREEVIEWW = tagNMTREEVIEWW;
+ NM_TREEVIEW = {$IFDEF UNICODE_CTRLS} NM_TREEVIEWW {$ELSE} NM_TREEVIEWA {$ENDIF};
+
+ tagNMCUSTOMDRAWINFO = packed record
+ hdr: TNMHdr;
+ dwDrawStage: DWORD;
+ hdc: HDC;
+ rc: TRect;
+ dwItemSpec: DWORD; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
+ uItemState: UINT;
+ lItemlParam: LPARAM;
+ end;
+ PNMCustomDraw = ^TNMCustomDraw;
+ TNMCustomDraw = tagNMCUSTOMDRAWINFO;
+
+const
+ // custom draw return flags
+ // values under 0x00010000 are reserved for global custom draw values.
+ // above that are for specific controls
+ CDRF_DODEFAULT = $00000000;
+ CDRF_NEWFONT = $00000002;
+ CDRF_SKIPDEFAULT = $00000004;
+ CDRF_NOTIFYPOSTPAINT = $00000010;
+ CDRF_NOTIFYITEMDRAW = $00000020;
+ CDRF_NOTIFYSUBITEMDRAW = $00000020; // flags are the same, we can distinguish by context
+ CDRF_NOTIFYPOSTERASE = $00000040;
+
+ // drawstage flags
+ // values under = $00010000 are reserved for global custom draw values.
+ // above that are for specific controls
+ CDDS_PREPAINT = $00000001;
+ CDDS_POSTPAINT = $00000002;
+ CDDS_PREERASE = $00000003;
+ CDDS_POSTERASE = $00000004;
+ // the = $000010000 bit means it's individual item specific
+ 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;
+
+type
+ tagNMLVCUSTOMDRAW = packed record
+ nmcd: TNMCustomDraw;
+ clrText: COLORREF;
+ clrTextBk: COLORREF;
+ iSubItem: Integer; // IE 4.0 and higher
+ end;
+ PNMLVCustomDraw = ^TNMLVCustomDraw;
+ TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
+
+
+
+
+ PTVDispInfoA = ^TTVDispInfoA;
+ PTVDispInfoW = ^TTVDispInfoW;
+ PTVDispInfo = {$IFDEF UNICODE_CTRLS} PTVDispInfoW {$ELSE} PTVDispInfoA {$ENDIF};
+ tagTVDISPINFOA = packed record
+ hdr: TNMHDR;
+ item: TTVItemA;
+ end;
+ tagTVDISPINFOW = packed record
+ hdr: TNMHDR;
+ item: TTVItemW;
+ end;
+ tagTVDISPINFO = {$IFDEF UNICODE_CTRLS} tagTVDISPINFOW {$ELSE} tagTVDISPINFOA {$ENDIF};
+ _TV_DISPINFOA = tagTVDISPINFOA;
+ _TV_DISPINFOW = tagTVDISPINFOW;
+ _TV_DISPINFO = {$IFDEF UNICODE_CTRLS} _TV_DISPINFOW {$ELSE} _TV_DISPINFOA {$ENDIF};
+ TTVDispInfoA = tagTVDISPINFOA;
+ TTVDispInfoW = tagTVDISPINFOW;
+ TTVDispInfo = {$IFDEF UNICODE_CTRLS} TTVDispInfoW {$ELSE} TTVDispInfoA {$ENDIF};
+ TV_DISPINFOA = tagTVDISPINFOA;
+ TV_DISPINFOW = tagTVDISPINFOW;
+ TV_DISPINFO = {$IFDEF UNICODE_CTRLS} TV_DISPINFOW {$ELSE} TV_DISPINFOA {$ENDIF};
+
+ tagNMMOUSE = packed record
+ hdr: TNMHdr;
+ dwItemSpec: DWORD;
+ dwItemData: DWORD;
+ pt: TPoint;
+ dwHitInfo: DWORD; // any specifics about where on the item or control the mouse is
+ end;
+ PNMMouse = ^TNMMouse;
+ TNMMouse = tagNMMOUSE;
+
+type
+ PTVHitTestInfo = ^TTVHitTestInfo;
+ TTVHitTestInfo = packed Record
+ pt: TPoint;
+ fl: DWORD;
+ hItem: THandle;
+ end;
+
+
+
+const
+
+ cctrl = 'comctl32.dll';
+
+ HINST_COMMCTRL = THandle(-1);
+
+ 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);
+
+ PROGRESS_CLASS: array[ 0..17 ] of KOLChar = ('m','s','c','t','l','s','_',
+ 'p','r','o','g','r','e','s','s','3','2',#0);
+ STATUSCLASSNAME: array[ 0..18 ] of KOLChar = ('m','s','c','t','l','s','_',
+ 's','t','a','t','u','s','b','a','r','3','2',#0);
+ WC_LISTVIEW: array[0..13] of KOLChar = ('S','y','s','L','i','s','t',
+ 'V','i','e','w','3','2',#0);
+ TOOLBARCLASSNAME: array[0..15] of KOLChar = ('T','o','o','l','b','a','r',
+ 'W','i','n','d','o','w','3','2',#0 );
+ TOOLTIPS_CLASS: array[0..16] of KOLChar = ('t','o','o','l','t','i','p','s','_',
+ 'c','l','a','s','s','3','2',#0);
+ WC_TREEVIEW: array[0..13] of KOLChar = ('S','y','s','T','r','e','e',
+ 'V','i','e','w','3','2',#0);
+ WC_TABCONTROL: array[0..15] of KOLChar = ('S','y','s','T','a','b','C','o','n','t',
+ 'r','o','l','3','2',#0);
+ DATETIMEPICK_CLASS: array[ 0..17 ] of KOLChar = (
+ 'S','y','s','D','a','t','e','T','i','m','e','P','i','c','k','3','2',#0 );
+
+ TBN_FIRST = 0-700; { toolbar }
+ TBN_LAST = 0-720;
+
+ TBCDRF_NOEDGES = $00010000; // Don't draw button edges
+ TBCDRF_HILITEHOTTRACK = $00020000; // Use color of the button bk when hottracked
+ TBCDRF_NOOFFSET = $00040000; // Don't offset button if pressed
+ TBCDRF_NOMARK = $00080000; // Don't draw default highlight of image/text for TBSTATE_MARKED
+ TBCDRF_NOETCHEDEFFECT = $00100000; // Don't draw etched effect for disabled items
+
+ 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_ADDBUTTONSW = WM_USER + 68;
+ TB_INSERTBUTTONA = WM_USER + 21;
+ TB_INSERTBUTTONW = WM_USER + 67;
+ 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_ADDSTRINGA = WM_USER + 28;
+ TB_GETBUTTONTEXTA = WM_USER + 45;
+ TBN_GETBUTTONINFOA = TBN_FIRST-0;
+
+ TB_GETBUTTONINFOW = WM_USER + 63;
+ TB_SETBUTTONINFOW = WM_USER + 64;
+ TB_GETBUTTONINFOA = WM_USER + 65;
+ TB_SETBUTTONINFOA = WM_USER + 66;
+ TB_GETBUTTONINFO = {$IFDEF UNICODE_CTRLS} TB_GETBUTTONINFOW {$ELSE} TB_GETBUTTONINFOA {$ENDIF};
+ TB_SETBUTTONINFO = {$IFDEF UNICODE_CTRLS} TB_SETBUTTONINFOW {$ELSE} TB_SETBUTTONINFOA {$ENDIF};
+
+ TB_SAVERESTOREW = WM_USER + 76;
+ TB_ADDSTRINGW = WM_USER + 77;
+ TB_GETBUTTONTEXTW = WM_USER + 75;
+ TBN_GETBUTTONINFOW = TBN_FIRST-20;
+ TB_SAVERESTORE = {$IFDEF UNICODE_CTRLS} TB_SAVERESTOREW {$ELSE} TB_SAVERESTOREA {$ENDIF};
+ TB_ADDSTRING = {$IFDEF UNICODE_CTRLS} TB_ADDSTRINGW {$ELSE} TB_ADDSTRINGA {$ENDIF};
+ TB_GETBUTTONTEXT = {$IFDEF UNICODE_CTRLS} TB_GETBUTTONTEXTW {$ELSE} TB_GETBUTTONTEXTA {$ENDIF};
+ TBN_GETBUTTONINFO = {$IFDEF UNICODE_CTRLS} TBN_GETBUTTONINFOW {$ELSE} TBN_GETBUTTONINFOA {$ENDIF};
+
+ TBN_DROPDOWN = TBN_FIRST-10;
+ TBN_CLOSEUP = TBN_FIRST-11;
+
+ TB_CUSTOMIZE = WM_USER + 27;
+ 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_SETCMDID = WM_USER + 42;
+ TB_CHANGEBITMAP = WM_USER + 43;
+ TB_GETBITMAP = WM_USER + 44;
+ 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; { wParam is the Cmd instead of index }
+ 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; // wParam == IID, lParam void **ppv
+ TB_GETHOTITEM = WM_USER + 71;
+ TB_SETHOTITEM = WM_USER + 72; // wParam == iHotItem
+ TB_SETANCHORHIGHLIGHT = WM_USER + 73; // wParam == TRUE/FALSE
+ TB_GETANCHORHIGHLIGHT = WM_USER + 74;
+ TB_MAPACCELERATORA = WM_USER + 78; // wParam == ch, lParam int * pidBtn
+
+ TB_SETEXTENDEDSTYLE = WM_USER + 84; // For TBSTYLE_EX_*
+ TB_GETEXTENDEDSTYLE = WM_USER + 85; // For TBSTYLE_EX_*
+ TB_INSERTBUTTON = {$IFDEF UNICODE_CTRLS} TB_INSERTBUTTONW {$ELSE} TB_INSERTBUTTONA {$ENDIF};
+ TB_ADDBUTTONS = {$IFDEF UNICODE_CTRLS} TB_ADDBUTTONSW {$ELSE} TB_ADDBUTTONSA {$ENDIF};
+
+ 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;
+
+ STD_CUT = 0;
+ STD_COPY = 1;
+ STD_PASTE = 2;
+ STD_UNDO = 3;
+ STD_REDO = 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 standard history bitmap }
+
+ HIST_BACK = 0;
+ HIST_FORWARD = 1;
+ HIST_FAVORITES = 2;
+ HIST_ADDTOFAVORITES = 3;
+ HIST_VIEWTREE = 4;
+
+ TBSTATE_CHECKED = $01;
+ TBSTATE_PRESSED = $02;
+ TBSTATE_ENABLED = $04;
+ TBSTATE_HIDDEN = $08;
+ TBSTATE_INDETERMINATE = $10;
+ TBSTATE_WRAP = $20;
+ TBSTATE_ELLIPSES = $40;
+ TBSTATE_MARKED = $80;
+
+ TBSTYLE_BUTTON = $00;
+ TBSTYLE_SEP = $01;
+ TBSTYLE_CHECK = $02;
+ TBSTYLE_GROUP = $04;
+ TBSTYLE_CHECKGROUP = TBSTYLE_GROUP or TBSTYLE_CHECK;
+ TBSTYLE_DROPDOWN = $08;
+ TBSTYLE_AUTOSIZE = $0010; // automatically calculate the cx of the button
+ TBSTYLE_NOPREFIX = $0020; // if this button should not have accel prefix
+
+ TBSTYLE_TOOLTIPS = $0100;
+ TBSTYLE_WRAPABLE = $0200;
+ TBSTYLE_ALTDRAG = $0400;
+ TBSTYLE_FLAT = $0800;
+ TBSTYLE_LIST = $1000;
+ TBSTYLE_CUSTOMERASE = $2000;
+ TBSTYLE_REGISTERDROP = $4000;
+ TBSTYLE_TRANSPARENT = $8000;
+ TBSTYLE_EX_DRAWDDARROWS = $00000001;
+
+ TBIF_IMAGE = $00000001;
+ TBIF_TEXT = $00000002;
+ TBIF_STATE = $00000004;
+ TBIF_STYLE = $00000008;
+ TBIF_LPARAM = $00000010;
+ TBIF_COMMAND = $00000020;
+ TBIF_SIZE = $00000040;
+ TBIF_BYINDEX = $80000000;
+
+ TTN_FIRST = 0-520; { tooltips }
+ TTN_LAST = 0-549;
+ TTN_NEEDTEXTA = TTN_FIRST - 0;
+ TTN_NEEDTEXT = TTN_FIRST - 0;
+ TTN_NEEDTEXTW = TTN_FIRST - 10;
+
+ TTS_ALWAYSTIP = $01;
+ TTS_NOPREFIX = $02;
+
+ 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_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_ENUMTOOLSA = WM_USER + 14;
+ TTM_GETCURRENTTOOLA = WM_USER + 15;
+
+ 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;
+ TTM_WINDOWFROMPOINT = WM_USER + 16;
+ TTM_TRACKACTIVATE = WM_USER + 17; // wParam = TRUE/FALSE start end lparam = LPTOOLINFO
+ TTM_TRACKPOSITION = WM_USER + 18; // lParam = dwPos
+ 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; // lParam = lprc
+ TTM_GETMARGIN = WM_USER + 27; // lParam = lprc
+ TTM_POP = WM_USER + 28;
+ TTM_POPUP = WM_USER + 34;
+ TTM_UPDATE = WM_USER + 29;
+
+ TTM_ADDTOOL = {$IFDEF UNICODE_CTRLS} TTM_ADDTOOLW {$ELSE} TTM_ADDTOOLA {$ENDIF};
+ TTM_DELTOOL = {$IFDEF UNICODE_CTRLS} TTM_DELTOOLW {$ELSE} TTM_DELTOOLA {$ENDIF};
+ TTM_NEWTOOLRECT = {$IFDEF UNICODE_CTRLS} TTM_NEWTOOLRECTW {$ELSE} TTM_NEWTOOLRECTA {$ENDIF};
+ TTM_GETTOOLINFO = {$IFDEF UNICODE_CTRLS} TTM_GETTOOLINFOW {$ELSE} TTM_GETTOOLINFOA {$ENDIF};
+ TTM_SETTOOLINFO = {$IFDEF UNICODE_CTRLS} TTM_SETTOOLINFOW {$ELSE} TTM_SETTOOLINFOA {$ENDIF};
+ TTM_HITTEST = {$IFDEF UNICODE_CTRLS} TTM_HITTESTW {$ELSE} TTM_HITTESTA {$ENDIF};
+ TTM_GETTEXT = {$IFDEF UNICODE_CTRLS} TTM_GETTEXTW {$ELSE} TTM_GETTEXTA {$ENDIF};
+ TTM_UPDATETIPTEXT = {$IFDEF UNICODE_CTRLS} TTM_UPDATETIPTEXTW {$ELSE} TTM_UPDATETIPTEXTA {$ENDIF};
+ TTM_ENUMTOOLS = {$IFDEF UNICODE_CTRLS} TTM_ENUMTOOLSW {$ELSE} TTM_ENUMTOOLSA {$ENDIF};
+ TTM_GETCURRENTTOOL = {$IFDEF UNICODE_CTRLS} TTM_GETCURRENTTOOLW {$ELSE} TTM_GETCURRENTTOOLA {$ENDIF};
+
+ TTM_RELAYEVENT = WM_USER + 7;
+ TTM_GETTOOLCOUNT = WM_USER +13;
+
+ TTF_IDISHWND = $0001;
+ TTF_CENTERTIP = $0002;
+ TTF_RTLREADING = $0004;
+ TTF_SUBCLASS = $0010;
+ TTF_TRACK = $0020;
+ TTF_ABSOLUTE = $0080;
+ TTF_TRANSPARENT = $0100;
+ TTF_DI_SETITEM = $8000; // valid only on the TTN_NEEDTEXT callback
+
+ LPSTR_TEXTCALLBACKA = LPSTR(-1);
+ LPSTR_TEXTCALLBACKW = LPWSTR(-1);
+ LPSTR_TEXTCALLBACK = {$IFDEF UNICODE_CTRLS} LPSTR_TEXTCALLBACKW {$ELSE} LPSTR_TEXTCALLBACKA {$ENDIF};
+
+ CW_USEDEFAULT = Integer($80000000);
+
+type
+ PTBAddBitmap = ^TTBAddBitmap;
+ TTBAddBitmap = packed record
+ hInst: THandle;
+ nID: UINT;
+ end;
+
+ PTBButton = ^TTBButton;
+ TTBButton = packed record
+ iBitmap: Integer;
+ idCommand: Integer;
+ fsState: Byte;
+ fsStyle: Byte;
+ bReserved: array[1..2] of Byte;
+ dwData: Longint;
+ iString: Integer;
+ end;
+
+ PTBButtonInfo = ^TTBButtonInfo;
+ TTBButtonInfo = packed record
+ cbSize: UINT;
+ dwMask: DWORD;
+ idCommand: Integer;
+ iImage: Integer;
+ fsState: Byte;
+ fsStyle: Byte;
+ cx: Word;
+ lParam: DWORD;
+ pszText: PKOLChar;
+ cchText: Integer;
+ end;
+
+ PColorMap = ^TColorMap;
+ TColorMap = packed record
+ cFrom: TColorRef;
+ cTo: TColorRef;
+ end;
+
+ PTBNotify = ^TTBnotify;
+ TTBNotify = packed record
+ hdr: TNMHdr;
+ iItem: Integer;
+ tbButton: TTBButton;
+ cchText: Integer;
+ pszText: PChar;
+ end;
+
+ PNMTBCustomDraw = ^TNMTBCustomDraw;
+ TNMTBCustomDraw = packed record
+ nmcd: TNMCUSTOMDRAW;
+ hbrMonoDither: HBrush;
+ hbrLines : HBrush;
+ hpenLines : HPen;
+ clrText : COLORREF;
+ clrMark : COLORREF;
+ clrTextHighlight: COLORREF;
+ clrBtnFace : COLORREF;
+ clrBtnHighlight : COLORREF;
+ clrHighlightHotTrack: COLORREF;
+ rcText : TRect;
+ nStringBkMode : Integer;
+ nHLStringBkMode : Integer;
+ iListGap : Integer;
+ end;
+
+ PTooltipText = ^TTooltipText;
+ TTooltipText = packed record
+ hdr: TNMHdr;
+ lpszText: PKOLChar;
+ szText: array[0..79] of KOLChar;
+ hinst: HINST;
+ uFlags: UINT;
+ lParam: LPARAM;
+ end;
+
+ PToolInfo = ^TToolInfo;
+ TToolInfo = packed record
+ cbSize: UINT;
+ uFlags: UINT;
+ hwnd: HWND;
+ uId: UINT;
+ Rect: TRect;
+ hInst: THandle;
+ lpszText: PKOLChar;
+ lParam: LPARAM;
+ end;
+
+const
+ WM_MOUSEHOVER = $02A1;
+ WM_MOUSELEAVE = $02A3;
+
+ TME_HOVER = $00000001;
+ TME_LEAVE = $00000002;
+ TME_QUERY = $40000000;
+ TME_CANCEL = $80000000;
+
+ HOVER_DEFAULT = $FFFFFFFF;
+
+ ODT_HEADER = 100;
+ ODT_TAB = 101;
+ ODT_LISTVIEW = 102;
+
+type
+ tagTRACKMOUSEEVENT = packed record
+ cbSize: DWORD;
+ dwFlags: DWORD;
+ hwndTrack: HWND;
+ dwHoverTime: DWORD;
+ end;
+ PTrackMouseEvent = ^TTrackMouseEvent;
+ TTrackMouseEvent = tagTRACKMOUSEEVENT;
+
+//////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////
+// Some stuff from new Delphi versions (not available in old ones):
+ {$IFNDEF UNICODE_CTRLS}
+const
+ //IDC_HAND = MakeIntResource(32649);
+ IDC_HAND = PChar(32649);
+ {$ENDIF}
+
+/////////////////////////////////////////////////////////
+const
+ VK_PAGE_DOWN = VK_NEXT;
+ VK_PAGE_UP = VK_PRIOR;
+ VK_ALT = VK_MENU;
+
+PBT_APMQUERYSUSPEND = 00 ;
+PBT_APMQUERYSTANDBY = 01 ;
+PBT_APMQUERYSUSPENDFAILED = 02 ;
+PBT_APMQUERYSTANDBYFAILED = 03 ;
+PBT_APMSUSPEND = 04 ;
+PBT_APMSTANDBY = 05 ;
+PBT_APMRESUMECRITICAL = 06 ;
+PBT_APMRESUMESUSPEND = 07 ;
+PBT_APMRESUMESTANDBY = 08 ;
+PBTF_APMRESUMEFROMFAILURE = 000001 ;
+PBT_APMBATTERYLOW = 09 ;
+PBT_APMPOWERSTATUSCHANGE = 10 ;
+PBT_APMOEMEVENT = 11 ;
+PBT_APMRESUMEAUTOMATIC = $12 ; // hexadecimal $12 = 18 !
+
+{ DATETIMEPICKER}
+
+const
+ // messages
+ DTM_FIRST = $1000;
+ 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_SETFORMATW = DTM_FIRST + 50;
+ DTM_SETFORMAT = {$IFDEF UNICODE_CTRLS} DTM_SETFORMATW {$ELSE} DTM_SETFORMATA {$ENDIF};
+
+ // Ranges
+ GDTR_MIN = $0001;
+ GDTR_MAX = $0002;
+
+ // Return Values
+ GDT_ERROR = -1;
+ GDT_VALID = 0;
+ GDT_NONE = 1;
+
+ // notifications
+ DTN_FIRST = 0-760; { datetimepick }
+ DTN_LAST = 0-799;
+
+ DTN_DATETIMECHANGE = DTN_FIRST + 1; // the systemtime has changed
+ DTN_USERSTRINGA = DTN_FIRST + 2; // the user has entered a string
+ DTN_USERSTRINGW = DTN_FIRST + 15;
+ DTN_WMKEYDOWNA = DTN_FIRST + 3; // modify keydown on app format field (X)
+ DTN_WMKEYDOWNW = DTN_FIRST + 16;
+ DTN_FORMATA = DTN_FIRST + 4; // query display for app format field (X)
+ DTN_FORMATW = DTN_FIRST + 17;
+ DTN_FORMATQUERYA = DTN_FIRST + 5; // query formatting info for app format field (X)
+ DTN_FORMATQUERYW = DTN_FIRST + 18;
+ DTN_DROPDOWN = DTN_FIRST + 6; // MonthCal has dropped down
+ DTN_CLOSEUP = DTN_FIRST + 7; // MonthCal is popping up
+ DTN_USERSTRING = {$IFDEF UNICODE_CTRLS} DTN_USERSTRINGW {$ELSE} DTN_USERSTRINGA {$ENDIF};
+ DTN_WMKEYDOWN = {$IFDEF UNICODE_CTRLS} DTN_WMKEYDOWNW {$ELSE} DTN_WMKEYDOWNA {$ENDIF};
+ DTN_FORMAT = {$IFDEF UNICODE_CTRLS} DTN_FORMATW {$ELSE} DTN_FORMATA {$ENDIF};
+ DTN_FORMATQUERY = {$IFDEF UNICODE_CTRLS} DTN_FORMATQUERYW {$ELSE} DTN_FORMATQUERYA {$ENDIF};
+
+ // styles
+ DTS_UPDOWN = $0001; // use UPDOWN instead of MONTHCAL
+ DTS_SHOWNONE = $0002; // allow a NONE selection
+ DTS_SHORTDATEFORMAT = $0000; // use the short date format
+ // (app must forward WM_WININICHANGE messages)
+ DTS_LONGDATEFORMAT = $0004; // use the long date format
+ // (app must forward WM_WININICHANGE messages)
+ DTS_TIMEFORMAT = $0008; // use the time format
+ // (app must forward WM_WININICHANGE messages)
+ DTS_APPCANPARSE = $0010; // allow user entered strings
+ // (app MUST respond to DTN_USERSTRING)
+ DTS_RIGHTALIGN = $0020; // right-align popup instead of left-align it
+
+ // color index constants
+ MCSC_BACKGROUND = 0; // the background color (between months)
+ MCSC_TEXT = 1; // the dates
+ MCSC_TITLEBK = 2; // background of the title
+ MCSC_TITLETEXT = 3;
+ MCSC_MONTHBK = 4; // background within the month cal
+ MCSC_TRAILINGTEXT = 5; // the text color of header & trailing days
+
+ // structures
+type
+ tagNMDATETIMESTRINGA = packed record
+ nmhdr: TNmHdr;
+ pszUserString: PAnsiChar; // string user entered
+ st: TSystemTime; // app fills this in
+ dwFlags: DWORD; // GDT_VALID or GDT_NONE
+ end;
+ tagNMDATETIMESTRINGW = packed record
+ nmhdr: TNmHdr;
+ pszUserString: PWideChar; // string user entered
+ st: TSystemTime; // app fills this in
+ dwFlags: DWORD; // GDT_VALID or GDT_NONE
+ end;
+ tagNMDATETIMESTRING = {$IFDEF UNICODE_CTRLS} tagNMDATETIMESTRINGW {$ELSE} tagNMDATETIMESTRINGA {$ENDIF};
+ PNMDateTimeStringA = ^TNMDateTimeStringA;
+ PNMDateTimeStringW = ^TNMDateTimeStringW;
+ PNMDateTimeString = {$IFDEF UNICODE_CTRLS} PNMDateTimeStringW {$ELSE} PNMDateTimeStringA {$ENDIF};
+ TNMDateTimeStringA = tagNMDATETIMESTRINGA;
+ TNMDateTimeStringW = tagNMDATETIMESTRINGW;
+ TNMDateTimeString = {$IFDEF UNICODE_CTRLS} TNMDateTimeStringW {$ELSE} TNMDateTimeStringA {$ENDIF};
+
+const
+ HDN_FIRST = 0-300; { header }
+ HDN_LAST = 0-399;
+ HDM_HITTEST = HDM_FIRST + 6;
+ HDM_GETITEMRECT = HDM_FIRST + 7;
+ HDM_SETIMAGELIST = HDM_FIRST + 8;
+ HDM_GETIMAGELIST = HDM_FIRST + 9;
+ HDM_ORDERTOINDEX = HDM_FIRST + 15;
+ HDM_CREATEDRAGIMAGE = HDM_FIRST + 16; // wparam = which item = by index;
+ HDM_GETORDERARRAY = HDM_FIRST + 17;
+ HDM_SETORDERARRAY = HDM_FIRST + 18;
+ HDM_SETHOTDIVIDER = HDM_FIRST + 19;
+ HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
+ HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
+ 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_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;
+
+type
+ tagNMHEADERA = packed record
+ Hdr: TNMHdr;
+ Item: Integer;
+ Button: Integer;
+ PItem: PHDItemA;
+ end;
+ tagNMHEADERW = packed record
+ Hdr: TNMHdr;
+ Item: Integer;
+ Button: Integer;
+ PItem: PHDItemW;
+ end;
+ tagNMHEADER = tagNMHEADERA;
+ PHDNotifyA = ^THDNotifyA;
+ PHDNotifyW = ^THDNotifyW;
+ THDNotifyA = tagNMHEADERA;
+ THDNotifyW = tagNMHEADERW;
+
+{******************************************************************************}
|