Unit CommCtrl;
{
This file is part of the Free Pascal run time library.
Copyright (c) 1999-2004 by Marco van de Voort
member of the Free Pascal development team.
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Original copyright statement follows.
**************************************************************************
* *
* commctrl.h - - Interface for the Windows Common Controls *
* *
* Version 1.2 *
* *
* Copyright (c) Microsoft Corporation. All rights reserved. *
* *
**************************************************************************
Note: This is an initial translation, and probably _full_ of bugs, this
is because my conversion tool was flawed, and a lot of postediting
was needed, which is bound to introduce bugs and inconsequencies
This is an huge unit, and its maintenance and compability is not
a top-priority.
I prefer patches as bugfix over bugreports, and
preferably patches with lots of fixes at once.
If you can't make a patch, at least research the bug thoroughly,
and provide as much info as possible (which windows version,
the C prototype from the sdk, etc)
Help the FPC team, and try to do as much as possible yourself.
}
Interface
{$Mode ObjFPC}
Uses Windows,ActiveX;
// --------------------
TYPE CINT = Longint;
CUINT= CARDINAL;
DWORD_PTR = ^DWORD;
PDWORD_PTR = ^DWORD_PTR;
ULONG_PTR = ^ULONG;
INT_PTR = ^CINT;
UINT_PTR = ^UINT;
// --------------------
CONST CommCtrlDLL = 'commctrl.dll';
// Some reasonal defaults.
// for XP only set NT to $%0501 and IE to $0600
//
// The NT conditional is only used for XP/no XP.
{$DEFINE WIN32_IE=$0500}
{$DEFINE IE3PLUS}
{$DEFINE IE4PLUS}
{$define IE5plus}
{$DEFINE WIN32XP}
{$DEFINE WIN32_WINNT=0} // NO XP
{$DEFINE __IStream_INTERFACE_DEFINED__} // lpstream defined in activex afaik.
// Sanity check in source. Not translated:
//if (WIN32_IE < $0400) && defined(WIN32_WINNT) && (WIN32_WINNT >= $0500)}
// #error _WIN32_IE setting conflicts with _WIN32_WINNT setting
//
// Users of this header may define any number of these constants to avoid
// the definitions of each functional group.
//
// NOTOOLBAR Customizable bitmap-button toolbar control.
// NOUPDOWN Up and Down arrow increment/decrement control.
// NOSTATUSBAR Status bar control.
// NOMENUHELP APIs to help manage menus, especially with a status bar.
// NOTRACKBAR Customizable column-width tracking control.
// NODRAGLIST APIs to make a listbox source and sink drag&drop actions.
// NOPROGRESS Progress gas gauge.
// NOHOTKEY HotKey control
// NOHEADER Header bar control.
// NOIMAGEAPIS ImageList apis.
// NOLISTVIEW ListView control.
// NOTREEVIEW TreeView control.
// NOTABCONTROL Tab control.
// NOANIMATE Animate control.
// NOBUTTON Button control.
// NOSTATIC Static control.
// NOEDIT Edit control.
// NOLISTBOX Listbox control.
// NOCOMBOBOX Combobox control.
// NOSCROLLBAR Scrollbar control.
//
//=============================================================================
// include <prsht.h>
Procedure InitCommonControls; external commctrldll name 'InitCommonControls';
{$ifdef ie3plus}
TYPE
tagINITCOMMONCONTROLSEX = Record
dwSize : DWORD; // size of this structure
dwICC : DWORD; // flags indicating which classes to be initialized
END;
_INITCOMMONCONTROLSEX = tagINITCOMMONCONTROLSEX;
LPINITCOMMONCONTROLSEX = ^tagINITCOMMONCONTROLSEX;
TINITCOMMONCONTROLSEX = tagINITCOMMONCONTROLSEX;
PINITCOMMONCONTROLSEX = ^tagINITCOMMONCONTROLSEX;
CONST
ICC_LISTVIEW_CLASSES = $00000001; // listview, header
ICC_TREEVIEW_CLASSES = $00000002; // treeview, tooltips
ICC_BAR_CLASSES = $00000004; // toolbar, statusbar, trackbar, tooltips
ICC_TAB_CLASSES = $00000008; // tab, tooltips
ICC_UPDOWN_CLASS = $00000010; // updown
ICC_PROGRESS_CLASS = $00000020; // progress
ICC_HOTKEY_CLASS = $00000040; // hotkey
ICC_ANIMATE_CLASS = $00000080; // animate
ICC_WIN95_CLASSES = $000000FF;
ICC_DATE_CLASSES = $00000100; // month picker, date picker, time picker, updown
ICC_USEREX_CLASSES = $00000200; // comboex
ICC_COOL_CLASSES = $00000400; // rebar (coolbar) control
{$ifdef ie4plus}
ICC_INTERNET_CLASSES = $00000800;
ICC_PAGESCROLLER_CLASS = $00001000; // page scroller
ICC_NATIVEFNTCTL_CLASS = $00002000; // native font control
{$ENDIF}
{$ifdef WIN32XP}
ICC_STANDARD_CLASSES = $00004000;
ICC_LINK_CLASS = $00008000;
{$ENDIF}
function InitCommonControlsEx(var rec : TINITCOMMONCONTROLSEX):BOOL; external commctrldll name 'InitCommonControlsEx';
{$ENDIF} // _WIN32_IE >= 0x0300
CONST
ODT_HEADER = 100;
ODT_TAB = 101;
ODT_LISTVIEW = 102;
//====== WM_NOTIFY codes (NMHDR.code values) ==================================
CONST
NM_FIRST = (0- 0); // generic to all controls
NM_LAST = (0- 99);
LVN_FIRST = (0-100); // listview
LVN_LAST = (0-199);
// Property sheet reserved (0U-200U) - (0U-299U) - see prsht.h
HDN_FIRST = (0-300); // header
HDN_LAST = (0-399);
TVN_FIRST = (0-400); // treeview
TVN_LAST = (0-499);
TTN_FIRST = (0-520); // tooltips
TTN_LAST = (0-549);
TCN_FIRST = (0-550); // tab control
TCN_LAST = (0-580);
// Shell reserved (0U-580U) - (0U-589U)
CDN_FIRST = (0-601); // common dialog (new)
CDN_LAST = (0-699);
TBN_FIRST = (0-700); // toolbar
TBN_LAST = (0-720);
UDN_FIRST = (0-721); // updown
UDN_LAST = (0-740);
{$ifdef ie3plus}
MCN_FIRST = (0-750); // monthcal
MCN_LAST = (0-759);
DTN_FIRST = (0-760); // datetimepick
DTN_LAST = (0-799);
CBEN_FIRST = (0-800); // combo box ex
CBEN_LAST = (0-830);
RBN_FIRST = (0-831); // rebar
RBN_LAST = (0-859);
{$ENDIF}
{$ifdef ie4plus}
IPN_FIRST = (0-860); // internet address
IPN_LAST = (0-879); // internet address
SBN_FIRST = (0-880); // status bar
SBN_LAST = (0-899);
PGN_FIRST = (0-900); // Pager Control
PGN_LAST = (0-950);
{$ENDIF}
{$ifdef ie5plus}
{$IFNDEF WMN_FIRST}
WMN_FIRST = (0-1000);
WMN_LAST = (0-1200);
{$ENDIF}
{$ENDIF}
{$ifdef Win32XP}
BCN_FIRST = (0-1250);
BCN_LAST = (0-1350);
{$ENDIF}
MSGF_COMMCTRL_BEGINDRAG = $4200;
MSGF_COMMCTRL_SIZEHEADER = $4201;
MSGF_COMMCTRL_DRAGSELECT = $4202;
MSGF_COMMCTRL_TOOLBARCUST = $4203;
//====== Ranges for control message IDs =======================================
LVM_FIRST = $1000; // ListView messages
TV_FIRST = $1100; // TreeView messages
HDM_FIRST = $1200; // Header messages
TCM_FIRST = $1300; // Tab control messages
{$ifdef ie4plus}
PGM_FIRST = $1400; // Pager control messages
{$ifdef win32xp}
ECM_FIRST = $1500; // Edit control messages
BCM_FIRST = $1600; // Button control messages
CBM_FIRST = $1700; // Combobox control messages
{$ENDIF}
CCM_FIRST = $2000; // Common control shared messages
CCM_LAST = (CCM_FIRST + $200);
CCM_SETBKCOLOR = (CCM_FIRST + 1); // lParam is bkColor
TYPE
tagCOLORSCHEME = Record
dwSize : DWORD;
clrBtnHighlight : COLORREF; // highlight color
clrBtnShadow : COLORREF; // shadow color
END;
COLORSCHEME = tagCOLORSCHEME;
LPCOLORSCHEME = ^tagCOLORSCHEME;
TCOLORSCHEME = tagCOLORSCHEME;
PCOLORSCHEME = ^tagCOLORSCHEME;
CONST
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);
{$ifdef ie5plus}
{$ifdef win32xp}
COMCTL32_VERSION = 6;
{$ELSE}
COMCTL32_VERSION = 5;
{$ENDIF}
CCM_SETVERSION = (CCM_FIRST + $7);
CCM_GETVERSION = (CCM_FIRST + $8);
CCM_SETNOTIFYWINDOW = (CCM_FIRST + $9); // wParam == hwndParent.
{$ifdef win32xp}
CCM_SETWINDOWTHEME = (CCM_FIRST + $b);
CCM_DPISCALE = (CCM_FIRST + $c); // wParam == Awareness
{$ENDIF}
{$ENDIF} // (_WIN32_IE >= 0x0500)
{$ENDIF} // (_WIN32_IE >= 0x0400)
{$ifdef ie4plus}
// for tooltips
INFOTIPSIZE = 1024;
{$ENDIF}
//====== WM_NOTIFY Macros =====================================================
// Macro 8
Procedure HANDLE_WM_NOTIFY( hwnd : hwnd; wParam : cint;var lParam : NMHDR ;fn :Pointer);
// Macro 9
Function FORWARD_WM_NOTIFY( hwnd : hwnd; idFrom : cint;var pnmhdr : NMHDR ; fn :pointer ):LRESULT;
//====== Generic WM_NOTIFY notification codes =================================
CONST
NM_OUTOFMEMORY = (NM_FIRST-1);
NM_CLICK = (NM_FIRST-2); // uses NMCLICK struct
NM_DBLCLK = (NM_FIRST-3);
NM_RETURN = (NM_FIRST-4);
NM_RCLICK = (NM_FIRST-5); // uses NMCLICK struct
NM_RDBLCLK = (NM_FIRST-6);
NM_SETFOCUS = (NM_FIRST-7);
NM_KILLFOCUS = (NM_FIRST-8);
{$ifdef ie3plus}
NM_CUSTOMDRAW = (NM_FIRST-12);
NM_HOVER = (NM_FIRST-13);
{$ENDIF}
{$ifdef ie4plus}
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
{$ENDIF}
{$ifdef ie401plus}
NM_TOOLTIPSCREATED = (NM_FIRST-19); // notify of when the tooltips window is create
{$ENDIF}
{$ifdef ie5plus}
NM_LDOWN = (NM_FIRST-20);
NM_RDOWN = (NM_FIRST-21);
NM_THEMECHANGED = (NM_FIRST-22);
{$ENDIF}
{$IFNDEF CCSIZEOF_STRUCT}
// Macro 10
// #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
{$ENDIF}
//====== Generic WM_NOTIFY notification structures ============================
{$ifdef ie401plus}
TYPE
tagNMTOOLTIPSCREATED = Record
hdr : NMHDR;
hwndToolTips : HWND;
END;
NMTOOLTIPSCREATED = tagNMTOOLTIPSCREATED;
LPNMTOOLTIPSCREATED = ^tagNMTOOLTIPSCREATED;
TNMTOOLTIPSCREATED = tagNMTOOLTIPSCREATED;
PNMTOOLTIPSCREATED = ^tagNMTOOLTIPSCREATED;
{$ENDIF}
{$ifdef ie4plus}
Type
tagNMMOUSE = Record
hdr : NMHDR;
dwItemSpec : DWORD_PTR;
dwItemData : DWORD_PTR;
pt : POINT;
dwHitInfo : LPARAM; // any specifics about where on the item or control the mouse is
END;
NMMOUSE = tagNMMOUSE;
LPNMMOUSE = ^tagNMMOUSE;
TNMMOUSE = tagNMMOUSE;
PNMMOUSE = ^tagNMMOUSE;
NMCLICK = NMMOUSE;
LPNMCLICK = LPNMMOUSE;
// Generic structure to request an object of a specific type.
tagNMOBJECTNOTIFY = Record
hdr : NMHDR;
iItem : cint;
{$IFDEF __IID_DEFINED__}
piid : PIID;
{$ELSE}
piid : Pointer;
{$ENDIF}
pObject : Pointer;
hResult : HRESULT;
dwFlags : DWORD; // control specific flags (hints as to where in iItem it hit)
END;
NMOBJECTNOTIFY = tagNMOBJECTNOTIFY;
LPNMOBJECTNOTIFY = ^tagNMOBJECTNOTIFY;
TNMOBJECTNOTIFY = tagNMOBJECTNOTIFY;
PNMOBJECTNOTIFY = ^tagNMOBJECTNOTIFY;
// Generic structure for a key
tagNMKEY = Record
hdr : NMHDR;
nVKey : UINT;
uFlags : UINT;
END;
NMKEY = tagNMKEY;
LPNMKEY = ^tagNMKEY;
TNMKEY = tagNMKEY;
PNMKEY = ^tagNMKEY;
// Generic structure for a character
tagNMCHAR = Record
hdr : NMHDR;
ch : UINT;
dwItemPrev : DWORD; // Item previously selected
dwItemNext : DWORD; // Item to be selected
END;
NMCHAR = tagNMCHAR;
LPNMCHAR = ^tagNMCHAR;
TNMCHAR = tagNMCHAR;
PNMCHAR = ^tagNMCHAR;
{$ENDIF} // _WIN32_IE >= 0x0400
{$ifdef ie3plus}
//==================== CUSTOM DRAW ==========================================
// custom draw return flags
// values under 0x00010000 are reserved for global custom draw values.
// above that are for specific controls
CONST
CDRF_DODEFAULT = $00000000;
CDRF_NEWFONT = $00000002;
CDRF_SKIPDEFAULT = $00000004;
CDRF_NOTIFYPOSTPAINT = $00000010;
CDRF_NOTIFYITEMDRAW = $00000020;
{$ifdef ie4plus}
CDRF_NOTIFYSUBITEMDRAW = $00000020; // flags are the same, we can distinguish by context
{$ENDIF}
CDRF_NOTIFYPOSTERASE = $00000040;
// drawstage flags
// values under 0x00010000 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 0x000010000 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);
{$ifdef ie4plus}
CDDS_SUBITEM = $00020000;
{$ENDIF}
// 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;
{$ifdef win32xp}
CDIS_SHOWKEYBOARDCUES = $0200;
{$ENDIF}
TYPE
tagNMCUSTOMDRAWINFO = Record
hdr : NMHDR;
dwDrawStage : DWORD;
hdc : HDC;
rc : RECT;
dwItemSpec : DWORD_PTR; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
uItemState : UINT;
lItemlParam : LPARAM;
END;
NMCUSTOMDRAW = tagNMCUSTOMDRAWINFO;
LPNMCUSTOMDRAW = ^tagNMCUSTOMDRAWINFO;
TNMCUSTOMDRAWINFO = tagNMCUSTOMDRAWINFO;
PNMCUSTOMDRAWINFO = ^tagNMCUSTOMDRAWINFO;
tagNMTTCUSTOMDRAW = Record
nmcd : NMCUSTOMDRAW;
uDrawFlags : UINT;
END;
NMTTCUSTOMDRAW = tagNMTTCUSTOMDRAW;
LPNMTTCUSTOMDRAW = ^tagNMTTCUSTOMDRAW;
TNMTTCUSTOMDRAW = tagNMTTCUSTOMDRAW;
PNMTTCUSTOMDRAW = ^tagNMTTCUSTOMDRAW;
{$ENDIF} // _WIN32_IE >= 0x0300
//====== IMAGE APIS ===========================================================
{$IFNDEF NOIMAGEAPIS}
CONST
CLR_NONE = DWORD($FFFFFFFF);
CLR_DEFAULT = DWORD($FF000000);
{$IFNDEF IMAGELISTDRAWPARAMS}
{$ifdef ie3plus}
TYPE
_IMAGELISTDRAWPARAMS = Record
cbSize : DWORD;
himl : HIMAGELIST;
i : cint;
hdcDst : HDC;
x : cint;
y : cint;
cx : cint;
cy : cint;
xBitmap : cint; // x offest from the upperleft of bitmap
yBitmap : cint; // y offset from the upperleft of bitmap
rgbBk : COLORREF;
rgbFg : COLORREF;
fStyle : UINT;
dwRop : DWORD;
{$ifdef win32xp}
fState : DWORD;
Frame : DWORD;
crEffect : COLORREF;
{$ENDIF}
END;
IMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
LPIMAGELISTDRAWPARAMS = ^_IMAGELISTDRAWPARAMS;
TIMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
PIMAGELISTDRAWPARAMS = ^_IMAGELISTDRAWPARAMS;
// #define IMAGELISTDRAWPARAMS_V3_SIZE CCSIZEOF_STRUCT(IMAGELISTDRAWPARAMS, dwRop)
{$ENDIF} // _WIN32_IE >= 0x0300
{$ENDIF}
CONST
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; // (not implemented)
{$ifdef win32xp}
ILC_MIRROR = $00002000; // Mirror the icons contained, if the process is mirrored
ILC_PERITEMMIRROR = $00008000; // Causes the mirroring code to mirror each item when inserting a set of images, verses the whole strip
{$ENDIF}
function ImageList_Create(cx:cint;cy:cint;flags:UINT;cInitial:cint;cGrow:cint):HIMAGELIST; external commctrldll name 'ImageList_Create';
function ImageList_Destroy(himl:HIMAGELIST):BOOL; external commctrldll name 'ImageList_Destroy';
function ImageList_GetImageCount(himl:HIMAGELIST):cint; external commctrldll name 'ImageList_GetImageCount';
{$ifdef ie3plus}
function ImageList_SetImageCount(himl:HIMAGELIST;uNewCount:UINT):BOOL; external commctrldll name 'ImageList_SetImageCount';
{$ENDIF}
function ImageList_Add(himl:HIMAGELIST;hbmImage:HBITMAP;hbmMask:HBITMAP):cint; external commctrldll name 'ImageList_Add';
function ImageList_ReplaceIcon(himl:HIMAGELIST;i:cint;hicon:HICON):cint; external commctrldll name 'ImageList_ReplaceIcon';
function ImageList_SetBkColor(himl:HIMAGELIST;clrBk:COLORREF):COLORREF; external commctrldll name 'ImageList_SetBkColor';
function ImageList_GetBkColor(himl:HIMAGELIST):COLORREF; external commctrldll name 'ImageList_GetBkColor';
function ImageList_SetOverlayImage(himl:HIMAGELIST;iImage:cint;iOverlay:cint):BOOL; external commctrldll name 'ImageList_SetOverlayImage';
// Macro 11
Function ImageList_AddIcon(Himl:HIMAGELIST;hicon:HICON):cint;
CONST
ILD_NORMAL = $00000000;
ILD_TRANSPARENT = $00000001;
ILD_MASK = $00000010;
ILD_IMAGE = $00000020;
{$ifdef ie3plus}
ILD_ROP = $00000040;
{$ENDIF}
ILD_BLEND25 = $00000002;
ILD_BLEND50 = $00000004;
ILD_OVERLAYMASK = $00000F00;
// Macro 12
// #define INDEXTOOVERLAYMASK(i) ((i) << 8)
CONST
ILD_PRESERVEALPHA = $00001000; // This preserves the alpha channel in dest
ILD_SCALE = $00002000; // Causes the image to be scaled to cx, cy instead of clipped
ILD_DPISCALE = $00004000;
ILD_SELECTED = ILD_BLEND50;
ILD_FOCUS = ILD_BLEND25;
ILD_BLEND = ILD_BLEND50;
CLR_HILIGHT = CLR_DEFAULT;
ILS_NORMAL = $00000000;
ILS_GLOW = $00000001;
ILS_SHADOW = $00000002;
ILS_SATURATE = $00000004;
ILS_ALPHA = $00000008;
function ImageList_Draw(himl:HIMAGELIST;i:cint;hdcDst:HDC;x:cint;y:cint;fStyle:UINT):BOOL; external commctrldll name 'ImageList_Draw';
{$IFDEF _WIN32}
function ImageList_Replace(himl:HIMAGELIST;i:cint;hbmImage:HBITMAP;hbmMask:HBITMAP):BOOL; external commctrldll name 'ImageList_Replace';
function ImageList_AddMasked(himl:HIMAGELIST;hbmImage:HBITMAP;crMask:COLORREF):cint; external commctrldll name 'ImageList_AddMasked';
function ImageList_DrawEx(himl:HIMAGELIST;i:cint;hdcDst:HDC;x:cint;y:cint;dx:cint;dy:cint;rgbBk:COLORREF;rgbFg:COLORREF;fStyle:UINT):BOOL; external commctrldll name 'ImageList_DrawEx';
{$ifdef ie3plus}
function ImageList_DrawIndirect(pimldp:PIMAGELISTDRAWPARAMS):BOOL; external commctrldll name 'ImageList_DrawIndirect';
{$ENDIF}
function ImageList_Remove(himl:HIMAGELIST;i:cint):BOOL; external commctrldll name 'ImageList_Remove';
function ImageList_GetIcon(himl:HIMAGELIST;i:cint;flags:UINT):HICON; external commctrldll name 'ImageList_GetIcon';
function ImageList_LoadImageA(hi:HINSTANCE;lpbmp:LPCSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageA';
function ImageList_LoadImageW(hi:HINSTANCE;lpbmp:LPCWSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageW';
{$IFDEF UNICODE}
function ImageList_LoadImageW(hi:HINSTANCE;lpbmp:LPCWSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageW';
{$ELSE}
function ImageList_LoadImageA(hi:HINSTANCE;lpbmp:LPCSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageA';
{$ENDIF}
{$ifdef ie3plus}
CONST
ILCF_MOVE = ($00000000);
ILCF_SWAP = ($00000001);
function ImageList_Copy(himlDst:HIMAGELIST;iDst:cint;himlSrc:HIMAGELIST;iSrc:cint;uFlags:UINT):BOOL; external commctrldll name 'ImageList_Copy';
{$ENDIF}
function ImageList_BeginDrag(himlTrack:HIMAGELIST;iTrack:cint;dxHotspot:cint;dyHotspot:cint):BOOL; external commctrldll name 'ImageList_BeginDrag';
Procedure ImageList_EndDrag; external commctrldll name 'ImageList_EndDrag';
function ImageList_DragEnter(hwndLock:HWND;x:cint;y:cint):BOOL; external commctrldll name 'ImageList_DragEnter';
function ImageList_DragLeave(hwndLock:HWND):BOOL; external commctrldll name 'ImageList_DragLeave';
function ImageList_DragMove(x:cint;y:cint):BOOL; external commctrldll name 'ImageList_DragMove';
function ImageList_SetDragCursorImage(himlDrag:HIMAGELIST;iDrag:cint;dxHotspot:cint;dyHotspot:cint):BOOL; external commctrldll name 'ImageList_SetDragCursorImage';
function ImageList_DragShowNolock(fShow:BOOL):BOOL; external commctrldll name 'ImageList_DragShowNolock';
function ImageList_GetDragImage(ppt:PPOINT;pptHotspot:PPOINT):HIMAGELIST; external commctrldll name 'ImageList_GetDragImage';
// Macro 13
Procedure ImageList_RemoveAll(himl:HIMAGELIST);
// Macro 14
Procedure ImageList_ExtractIcon(hi:longint; {dummy?} himl:HIMAGELIST;i:cint);
// Macro 15
Procedure ImageList_LoadBitmap(hi:HInstance;lpbmp:LPCTSTR;cx:cint;cGrow:cint;crMask:COLORREF);
{$IFDEF __IStream_INTERFACE_DEFINED__}
function ImageList_Read(pstm:LPSTREAM):HIMAGELIST; external commctrldll name 'ImageList_Read';
function ImageList_Write(himl:HIMAGELIST;pstm:LPSTREAM):BOOL; external commctrldll name 'ImageList_Write';
{$ifdef Win32XP}
CONST
ILP_NORMAL = 0; // Writes or reads the stream using new sematics for this version of comctl32
ILP_DOWNLEVEL = 1; // Write or reads the stream using downlevel sematics.
function ImageList_ReadEx(dwFlags:DWORD;pstm:LPSTREAM;riid:REFIID;ppv:PPVOID):HRESULT; external commctrldll name 'ImageList_ReadEx';
function ImageList_WriteEx(himl:HIMAGELIST;dwFlags:DWORD;pstm:LPSTREAM):HRESULT; external commctrldll name 'ImageList_WriteEx';
{$ENDIF}
{$ENDIF}
{$IFNDEF IMAGEINFO}
TYPE
_IMAGEINFO = Record
hbmImage : HBITMAP;
hbmMask : HBITMAP;
Unused1 : cint;
Unused2 : cint;
rcImage : RECT;
END;
IMAGEINFO = _IMAGEINFO;
LPIMAGEINFO = ^_IMAGEINFO;
TIMAGEINFO = _IMAGEINFO;
PIMAGEINFO = ^_IMAGEINFO;
{$ENDIF}
function ImageList_GetIconSize(himl:HIMAGELIST;cx:Pint;cy:Pint):BOOL; external commctrldll name 'ImageList_GetIconSize';
function ImageList_SetIconSize(himl:HIMAGELIST;cx:cint;cy:cint):BOOL; external commctrldll name 'ImageList_SetIconSize';
function ImageList_GetImageInfo(himl:HIMAGELIST;i:cint;pImageInfo:PIMAGEINFO):BOOL; external commctrldll name 'ImageList_GetImageInfo';
function ImageList_Merge(himl1:HIMAGELIST;i1:cint;himl2:HIMAGELIST;i2:cint;dx:cint;dy:cint):HIMAGELIST; external commctrldll name 'ImageList_Merge';
{$ifdef ie4plus}
function ImageList_Duplicate(himl:HIMAGELIST):HIMAGELIST; external commctrldll name 'ImageList_Duplicate';
{$ENDIF}
{$ENDIF}
{$ENDIF}
//====== HEADER CONTROL =======================================================
{$IFNDEF NOHEADER}
{$IFDEF _WIN32}
CONST
WC_HEADERA = 'SysHeader32';
WC_HEADERW = {L}'SysHeader32';
TYPE
{$IFDEF UNICODE}
WC_HEADER = WC_HEADERW;
{$ELSE}
WC_HEADER = WC_HEADERA;
{$ENDIF}
{$ELSE}
CONST
WC_HEADER = 'SysHeader';
{$ENDIF}
// begin_r_commctrl
HDS_HORZ = $0000;
HDS_BUTTONS = $0002;
{$ifdef ie3plus}
HDS_HOTTRACK = $0004;
{$ENDIF}
HDS_HIDDEN = $0008;
{$ifdef ie3plus}
HDS_DRAGDROP = $0040;
HDS_FULLDRAG = $0080;
{$ENDIF}
{$ifdef ie5plus}
HDS_FILTERBAR = $0100;
{$ENDIF}
{$ifdef win32xp}
HDS_FLAT = $0200;
{$ENDIF}
// end_r_commctrl
{$ifdef ie5plus}
HDFT_ISSTRING = $0000; // HD_ITEM.pvFilter points to a HD_TEXTFILTER
HDFT_ISNUMBER = $0001; // HD_ITEM.pvFilter points to a INT
HDFT_HASNOVALUE = $8000; // clear the filter, by setting this bit
TYPE
_HD_TEXTFILTERA = Record
pszText : LPSTR; // [in] pointer to the buffer containing the filter (ANSI)
cchTextMax : cint; // [in] max size of buffer/edit control buffer
END;
HD_TEXTFILTERA = _HD_TEXTFILTERA;
LPHD_TEXTFILTERA = ^_HD_TEXTFILTERA;
THD_TEXTFILTERA = _HD_TEXTFILTERA;
PHD_TEXTFILTERA = ^_HD_TEXTFILTERA;
_HD_TEXTFILTERW = Record
pszText : LPWSTR; // [in] pointer to the buffer contiaining the filter (UNICODE)
cchTextMax : cint; // [in] max size of buffer/edit control buffer
END;
HD_TEXTFILTERW = _HD_TEXTFILTERW;
LPHD_TEXTFILTERW = ^_HD_TEXTFILTERW;
THD_TEXTFILTERW = _HD_TEXTFILTERW;
PHD_TEXTFILTERW = ^_HD_TEXTFILTERW;
{$IFDEF UNICODE}
HD_TEXTFILTER = HD_TEXTFILTERW;
HDTEXTFILTER = HD_TEXTFILTERW;
LPHD_TEXTFILTER = LPHD_TEXTFILTERW;
LPHDTEXTFILTER = LPHD_TEXTFILTERW;
{$ELSE}
HD_TEXTFILTER = HD_TEXTFILTERA;
HDTEXTFILTER = HD_TEXTFILTERA;
LPHD_TEXTFILTER = LPHD_TEXTFILTERA;
LPHDTEXTFILTER = LPHD_TEXTFILTERA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0500
TYPE
_HD_ITEMA = Record
mask : UINT;
cxy : cint;
pszText : LPSTR;
hbm : HBITMAP;
cchTextMax : cint;
fmt : cint;
lParam : LPARAM;
{$ifdef ie3plus}
iImage : cint; // index of bitmap in ImageList
iOrder : cint; // where to draw this item
{$ENDIF}
{$ifdef ie5plus}
_type : UINT; // [in] filter type (defined what pvFilter is a pointer to)
pvFilter : Pointer; // [in] fillter data see above
{$ENDIF}
END;
HDITEMA = _HD_ITEMA;
pHDITEMA = ^_HD_ITEMA;
LPHDITEMA = ^_HD_ITEMA;
THD_ITEMA = _HD_ITEMA;
PHD_ITEMA = ^_HD_ITEMA;
// #define HDITEMA_V1_SIZE CCSIZEOF_STRUCT(HDITEMA, lParam)
// #define HDITEMW_V1_SIZE CCSIZEOF_STRUCT(HDITEMW, lParam)
_HD_ITEMW = Record
mask : UINT;
cxy : cint;
pszText : LPWSTR;
hbm : HBITMAP;
cchTextMax : cint;
fmt : cint;
lParam : LPARAM;
{$ifdef ie3plus}
iImage : cint; // index of bitmap in ImageList
iOrder : cint;
{$ENDIF}
{$ifdef ie5plus}
_type : UINT; // [in] filter type (defined what pvFilter is a pointer to)
pvFilter : Pointer; // [in] fillter data see above
{$ENDIF}
END;
HDITEMW = _HD_ITEMW;
pHDITEMW = ^_HD_ITEMW;
LPHDITEMW = ^_HD_ITEMW;
THD_ITEMW = _HD_ITEMW;
PHD_ITEMW = ^_HD_ITEMW;
TYPE
{$IFDEF UNICODE}
HDITEM = HDITEMW;
LPHDITEM = LPHDITEMW;
// HDITEM_V1_SIZE = HDITEMW_V1_SIZE;
{$ELSE}
HDITEM = HDITEMA;
LPHDITEM = LPHDITEMA;
// HDITEM_V1_SIZE = HDITEMA_V1_SIZE;
{$ENDIF}
HD_ITEM = HDITEM;
CONST
HDI_WIDTH = $0001;
HDI_HEIGHT = HDI_WIDTH;
HDI_TEXT = $0002;
HDI_FORMAT = $0004;
HDI_LPARAM = $0008;
HDI_BITMAP = $0010;
{$ifdef ie3plus}
HDI_IMAGE = $0020;
HDI_DI_SETITEM = $0040;
HDI_ORDER = $0080;
{$ENDIF}
{$ifdef ie5plus}
HDI_FILTER = $0100;
{$ENDIF}
HDF_LEFT = $0000;
HDF_RIGHT = $0001;
HDF_CENTER = $0002;
HDF_JUSTIFYMASK = $0003;
HDF_RTLREADING = $0004;
HDF_OWNERDRAW = $8000;
HDF_STRING = $4000;
HDF_BITMAP = $2000;
{$ifdef ie3plus}
HDF_BITMAP_ON_RIGHT = $1000;
HDF_IMAGE = $0800;
{$ENDIF}
{$ifdef win32xp}
HDF_SORTUP = $0400;
HDF_SORTDOWN = $0200;
{$ENDIF}
HDM_GETITEMCOUNT = (HDM_FIRST + 0);
// Macro 16
Function Header_GetItemCount( hwndHD : hwnd):cint;
CONST
HDM_INSERTITEMA = (HDM_FIRST + 1);
HDM_INSERTITEMW = (HDM_FIRST + 10);
{$IFDEF UNICODE}
HDM_INSERTITEM = HDM_INSERTITEMW;
{$ELSE}
HDM_INSERTITEM = HDM_INSERTITEMA;
{$ENDIF}
// Macro 17
Function Header_InsertItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):cint;
CONST
HDM_DELETEITEM = (HDM_FIRST + 2);
// Macro 18
Function Header_DeleteItem( hwndHD : hwnd; i : cint):BOOL;
CONST
HDM_GETITEMA = (HDM_FIRST + 3);
HDM_GETITEMW = (HDM_FIRST + 11);
{$IFDEF UNICODE}
HDM_GETITEM = HDM_GETITEMW;
{$ELSE}
HDM_GETITEM = HDM_GETITEMA;
{$ENDIF}
// Macro 19
Function Header_GetItem( hwndHD : hwnd; i : cint;var phdi : HD_ITEM ):BOOL;
CONST
HDM_SETITEMA = (HDM_FIRST + 4);
HDM_SETITEMW = (HDM_FIRST + 12);
{$IFDEF UNICODE}
HDM_SETITEM = HDM_SETITEMW;
{$ELSE}
HDM_SETITEM = HDM_SETITEMA;
{$ENDIF}
// Macro 20
Function Header_SetItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):BOOL;
TYPE
_HD_LAYOUT = Record
prc : PRECT;
pwpos : PWINDOWPOS;
END;
HDLAYOUT = _HD_LAYOUT;
LPHDLAYOUT = ^_HD_LAYOUT;
THD_LAYOUT = _HD_LAYOUT;
PHD_LAYOUT = ^_HD_LAYOUT;
CONST
HDM_LAYOUT = (HDM_FIRST + 5);
{$ifdef ie3plus}
TYPE
HD_LAYOUT = HDLAYOUT;
{$ELSE}
// HDLAYOUT = HD_LAYOUT;
{$ENDIF}
// Macro 21
Function Header_Layout( hwndHD : hwnd;var playout : HD_LAYOUT ):BOOL;
CONST
HHT_NOWHERE = $0001;
HHT_ONHEADER = $0002;
HHT_ONDIVIDER = $0004;
HHT_ONDIVOPEN = $0008;
{$ifdef ie5plus}
HHT_ONFILTER = $0010;
HHT_ONFILTERBUTTON = $0020;
{$ENDIF}
HHT_ABOVE = $0100;
HHT_BELOW = $0200;
HHT_TORIGHT = $0400;
HHT_TOLEFT = $0800;
TYPE
_HD_HITTESTINFO = Record
pt : POINT;
flags : UINT;
iItem : cint;
END;
HDHITTESTINFO = _HD_HITTESTINFO;
HD_HITTESTINFO = _HD_HITTESTINFO;
LPHDHITTESTINFO = ^_HD_HITTESTINFO;
THD_HITTESTINFO = _HD_HITTESTINFO;
PHD_HITTESTINFO = ^_HD_HITTESTINFO;
CONST
HDM_HITTEST = (HDM_FIRST + 6);
{$ifdef ie3plus}
HDM_GETITEMRECT = (HDM_FIRST + 7);
// Macro 22
Function Header_GetItemRect( hwnd : hwnd; iItem : WPARAM; lprc : LPARAM):BOOL;
CONST
HDM_SETIMAGELIST = (HDM_FIRST + 8);
// Macro 23
Function Header_SetImageList( hwnd : hwnd; himl : LPARAM):HIMAGELIST;
CONST
HDM_GETIMAGELIST = (HDM_FIRST + 9);
// Macro 24
Function Header_GetImageList( hwnd : hwnd):HIMAGELIST;
CONST
HDM_ORDERTOINDEX = (HDM_FIRST + 15);
// Macro 25
Function Header_OrderToIndex( hwnd : hwnd; i : WPARAM):cint;
CONST
HDM_CREATEDRAGIMAGE = (HDM_FIRST + 16); // wparam = which item (by index)
// Macro 26
Function Header_CreateDragImage( hwnd : hwnd; i : WPARAM):HIMAGELIST;
CONST
HDM_GETORDERARRAY = (HDM_FIRST + 17);
// Macro 27
Function Header_GetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : LPARAM):BOOL;
CONST
HDM_SETORDERARRAY = (HDM_FIRST + 18);
// Macro 28
Function Header_SetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : LPARAM):BOOL;
// lparam = int array of size HDM_GETITEMCOUNT
// the array specifies the order that all items should be displayed.
// e.g. { 2, 0, 1}
// says the index 2 item should be shown in the 0ths position
// index 0 should be shown in the 1st position
// index 1 should be shown in the 2nd position
CONST
HDM_SETHOTDIVIDER = (HDM_FIRST + 19);
// Macro 29
Function Header_SetHotDivider( hwnd : hwnd; fPos : WPARAM; dw : LPARAM):cint;
// convenience message for external dragdrop
// wParam = BOOL specifying whether the lParam is a dwPos of the cursor
// position or the index of which divider to hotlight
// lParam = depends on wParam (-1 and wParm = FALSE turns off hotlight)
{$ENDIF} // _WIN32_IE >= 0x0300
{$ifdef ie5plus}
CONST
HDM_SETBITMAPMARGIN = (HDM_FIRST + 20);
// Macro 30
Function Header_SetBitmapMargin( hwnd : hwnd; iWidth : WPARAM):cint;
CONST
HDM_GETBITMAPMARGIN = (HDM_FIRST + 21);
// Macro 31
Function Header_GetBitmapMargin( hwnd : hwnd):cint;
{$ENDIF}
{$ifdef ie4plus}
CONST
HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
// Macro 32
Function Header_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
CONST
HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
// Macro 33
Function Header_GetUnicodeFormat( hwnd : hwnd):BOOL;
{$ENDIF}
{$ifdef ie5plus}
CONST
HDM_SETFILTERCHANGETIMEOUT = (HDM_FIRST+22);
// Macro 34
Function Header_SetFilterChangeTimeout( hwnd : hwnd; i : LPARAM):cint;
CONST
HDM_EDITFILTER = (HDM_FIRST+23);
// Macro 35
Function Header_EditFilter( hwnd : hwnd; i : WPARAM; fDiscardChanges :cint ):cint;
// Clear filter takes -1 as a column value to indicate that all
// the filter should be cleared. When this happens you will
// only receive a single filter changed notification.
CONST
HDM_CLEARFILTER = (HDM_FIRST+24);
// Macro 36
Function Header_ClearFilter( hwnd : hwnd; i : WPARAM):cint;
// Macro 37
Function Header_ClearAllFilters( hwnd : hwnd):cint;
{$ENDIF}
CONST
HDN_ITEMCHANGINGA = (HDN_FIRST-0);
HDN_ITEMCHANGINGW = (HDN_FIRST-20);
HDN_ITEMCHANGEDA = (HDN_FIRST-1);
HDN_ITEMCHANGEDW = (HDN_FIRST-21);
HDN_ITEMCLICKA = (HDN_FIRST-2);
HDN_ITEMCLICKW = (HDN_FIRST-22);
HDN_ITEMDBLCLICKA = (HDN_FIRST-3);
HDN_ITEMDBLCLICKW = (HDN_FIRST-23);
HDN_DIVIDERDBLCLICKA = (HDN_FIRST-5);
HDN_DIVIDERDBLCLICKW = (HDN_FIRST-25);
HDN_BEGINTRACKA = (HDN_FIRST-6);
HDN_BEGINTRACKW = (HDN_FIRST-26);
HDN_ENDTRACKA = (HDN_FIRST-7);
HDN_ENDTRACKW = (HDN_FIRST-27);
HDN_TRACKA = (HDN_FIRST-8);
HDN_TRACKW = (HDN_FIRST-28);
{$ifdef ie3plus}
HDN_GETDISPINFOA = (HDN_FIRST-9);
HDN_GETDISPINFOW = (HDN_FIRST-29);
HDN_BEGINDRAG = (HDN_FIRST-10);
HDN_ENDDRAG = (HDN_FIRST-11);
{$ENDIF}
{$ifdef ie5plus}
HDN_FILTERCHANGE = (HDN_FIRST-12);
HDN_FILTERBTNCLICK = (HDN_FIRST-13);
{$ENDIF}
{$IFDEF UNICODE}
HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
HDN_ITEMCLICK = HDN_ITEMCLICKW;
HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
HDN_BEGINTRACK = HDN_BEGINTRACKW;
HDN_ENDTRACK = HDN_ENDTRACKW;
HDN_TRACK = HDN_TRACKW;
{$ifdef ie3plus}
HDN_GETDISPINFO = HDN_GETDISPINFOW;
{$ENDIF}
{$ELSE}
HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
HDN_ITEMCLICK = HDN_ITEMCLICKA;
HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
HDN_BEGINTRACK = HDN_BEGINTRACKA;
HDN_ENDTRACK = HDN_ENDTRACKA;
HDN_TRACK = HDN_TRACKA;
{$ifdef ie3plus}
HDN_GETDISPINFO = HDN_GETDISPINFOA;
{$ENDIF}
{$ENDIF}
TYPE
tagNMHEADERA = Record
hdr : NMHDR;
iItem : cint;
iButton : cint;
pitem : PHDITEMA;
END;
NMHEADERA = tagNMHEADERA;
LPNMHEADERA = ^tagNMHEADERA;
TNMHEADERA = tagNMHEADERA;
PNMHEADERA = ^tagNMHEADERA;
tagNMHEADERW = Record
hdr : NMHDR;
iItem : cint;
iButton : cint;
pitem : PHDITEMW;
END;
NMHEADERW = tagNMHEADERW;
LPNMHEADERW = ^tagNMHEADERW;
TNMHEADERW = tagNMHEADERW;
PNMHEADERW = ^tagNMHEADERW;
{$IFDEF UNICODE}
NMHEADER = NMHEADERW;
LPNMHEADER = LPNMHEADERW;
{$ELSE}
NMHEADER = NMHEADERA;
LPNMHEADER = LPNMHEADERA;
{$ENDIF}
{$ifdef ie3plus}
HD_NOTIFYA = NMHEADERA;
HD_NOTIFYW = NMHEADERW;
{$ELSE}
// tagNMHEADERA = _HD_NOTIFY;
// NMHEADERA = HD_NOTIFYA;
// tagHMHEADERW = _HD_NOTIFYW;
// NMHEADERW = HD_NOTIFYW;
{$ENDIF}
HD_NOTIFY = NMHEADER;
tagNMHDDISPINFOW = Record
hdr : NMHDR;
iItem : cint;
mask : UINT;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
END;
NMHDDISPINFOW = tagNMHDDISPINFOW;
LPNMHDDISPINFOW = ^tagNMHDDISPINFOW;
TNMHDDISPINFOW = tagNMHDDISPINFOW;
PNMHDDISPINFOW = ^tagNMHDDISPINFOW;
tagNMHDDISPINFOA = Record
hdr : NMHDR;
iItem : cint;
mask : UINT;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
END;
NMHDDISPINFOA = tagNMHDDISPINFOA;
LPNMHDDISPINFOA = ^tagNMHDDISPINFOA;
TNMHDDISPINFOA = tagNMHDDISPINFOA;
PNMHDDISPINFOA = ^tagNMHDDISPINFOA;
{$IFDEF UNICODE}
NMHDDISPINFO = NMHDDISPINFOW;
LPNMHDDISPINFO = LPNMHDDISPINFOW;
{$ELSE}
NMHDDISPINFO = NMHDDISPINFOA;
LPNMHDDISPINFO = LPNMHDDISPINFOA;
{$ENDIF}
{$ifdef ie5plus}
tagNMHDFILTERBTNCLICK = Record
hdr : NMHDR;
iItem : cint;
rc : RECT;
END;
NMHDFILTERBTNCLICK = tagNMHDFILTERBTNCLICK;
LPNMHDFILTERBTNCLICK = ^tagNMHDFILTERBTNCLICK;
TNMHDFILTERBTNCLICK = tagNMHDFILTERBTNCLICK;
PNMHDFILTERBTNCLICK = ^tagNMHDFILTERBTNCLICK;
{$ENDIF}
{$ENDIF} // NOHEADER
//====== TOOLBAR CONTROL ======================================================
{$IFNDEF NOTOOLBAR}
{$IFDEF _WIN32}
CONST
TOOLBARCLASSNAMEW = {L}'ToolbarWindow32';
TOOLBARCLASSNAMEA = 'ToolbarWindow32';
TYPE
{$IFDEF UNICODE}
TOOLBARCLASSNAME = TOOLBARCLASSNAMEW;
{$ELSE}
TOOLBARCLASSNAME = TOOLBARCLASSNAMEA;
{$ENDIF}
{$ELSE}
CONST
TOOLBARCLASSNAME = 'ToolbarWindow';
{$ENDIF}
TYPE
_TBBUTTON = Record
iBitmap : cint;
idCommand : cint;
fsState : BYTE;
fsStyle : BYTE;
{$IFDEF _WIN64}
bReserved : ARRAY[0..5] OF BYTE; // padding for alignment
{$ELSE}
{$IFDEF _WIN32}
bReserved : ARRAY[0..1] OF BYTE; // padding for alignment
{$ENDIF}
{$ENDIF}
dwData : DWORD_PTR;
iString : INT_PTR;
END;
TBBUTTON = _TBBUTTON;
PTBBUTTON = {NEAR} ^_TBBUTTON; // ???
LPTBBUTTON = ^_TBBUTTON;
TTBBUTTON = _TBBUTTON;
// PTBBUTTON = ^_TBBUTTON;
LPCTBBUTTON = {const} ^TBBUTTON;
_COLORMAP = Record
xfrom : COLORREF;
xto : COLORREF;
END;
COLORMAP = _COLORMAP;
LPCOLORMAP = ^_COLORMAP;
TCOLORMAP = _COLORMAP;
PCOLORMAP = ^_COLORMAP;
function CreateToolbarEx(hwnd:HWND;ws:DWORD;wID:UINT;nBitmaps:cint;
hBMInst:HINST;
wBMID:UINT_PTR;lpButtons:LPCTBBUTTON;iNumButtons:cint;dxButton:cint;
dyButton:cint;dxBitmap:cint;dyBitmap:cint;uStructSize:UINT):HWND; external commctrldll name 'CreateToolbarEx';
function CreateMappedBitmap(hInstance:HINST;idBitmap:INT_PTR;wFlags:UINT;lpColorMap:LPCOLORMAP;iNumMaps:cint):HBITMAP; external commctrldll name 'CreateMappedBitmap';
CONST
CMB_MASKED = $02;
TBSTATE_CHECKED = $01;
TBSTATE_PRESSED = $02;
TBSTATE_ENABLED = $04;
TBSTATE_HIDDEN = $08;
TBSTATE_INDETERMINATE = $10;
TBSTATE_WRAP = $20;
{$ifdef ie3plus}
TBSTATE_ELLIPSES = $40;
{$ENDIF}
{$ifdef ie4plus}
TBSTATE_MARKED = $80;
{$ENDIF}
TBSTYLE_BUTTON = $0000; // obsolete; use BTNS_BUTTON instead
TBSTYLE_SEP = $0001; // obsolete; use BTNS_SEP instead
TBSTYLE_CHECK = $0002; // obsolete; use BTNS_CHECK instead
TBSTYLE_GROUP = $0004; // obsolete; use BTNS_GROUP instead
TBSTYLE_CHECKGROUP = (TBSTYLE_GROUP OR TBSTYLE_CHECK);// obsolete; use BTNS_CHECKGROUP instead
{$ifdef ie3plus}
TBSTYLE_DROPDOWN = $0008; // obsolete; use BTNS_DROPDOWN instead
{$ENDIF}
{$ifdef ie4plus}
TBSTYLE_AUTOSIZE = $0010; // obsolete; use BTNS_AUTOSIZE instead
TBSTYLE_NOPREFIX = $0020; // obsolete; use BTNS_NOPREFIX instead
{$ENDIF}
TBSTYLE_TOOLTIPS = $0100;
TBSTYLE_WRAPABLE = $0200;
TBSTYLE_ALTDRAG = $0400;
{$ifdef ie3plus}
TBSTYLE_FLAT = $0800;
TBSTYLE_LIST = $1000;
TBSTYLE_CUSTOMERASE = $2000;
{$ENDIF}
{$ifdef ie4plus}
TBSTYLE_REGISTERDROP = $4000;
TBSTYLE_TRANSPARENT = $8000;
TBSTYLE_EX_DRAWDDARROWS = $00000001;
{$ENDIF}
{$ifdef ie5plus}
BTNS_BUTTON = TBSTYLE_BUTTON; // 0x0000
BTNS_SEP = TBSTYLE_SEP; // 0x0001
BTNS_CHECK = TBSTYLE_CHECK; // 0x0002
BTNS_GROUP = TBSTYLE_GROUP; // 0x0004
BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP; // (TBSTYLE_GROUP | TBSTYLE_CHECK)
BTNS_DROPDOWN = TBSTYLE_DROPDOWN; // 0x0008
BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE; // 0x0010; automatically calculate the cx of the button
BTNS_NOPREFIX = TBSTYLE_NOPREFIX; // 0x0020; this button should not have accel prefix
{$ifdef ie501plus}
BTNS_SHOWTEXT = $0040; // ignored unless TBSTYLE_EX_MIXEDBUTTONS is set
{$ENDIF} // 0x0501
BTNS_WHOLEDROPDOWN = $0080; // draw drop-down arrow, but without split arrow section
{$ENDIF}
{$ifdef ie501plus}
TBSTYLE_EX_MIXEDBUTTONS = $00000008;
TBSTYLE_EX_HIDECLIPPEDBUTTONS = $00000010; // don't show partially obscured buttons
{$ENDIF} // 0x0501
{$ifdef win32xp}
TBSTYLE_EX_DOUBLEBUFFER = $00000080; // Double Buffer the toolbar
{$ENDIF}
{$ifdef ie4plus}
// Custom Draw Structure
TYPE
_NMTBCUSTOMDRAW = Record
nmcd : NMCUSTOMDRAW;
hbrMonoDither : HBRUSH;
hbrLines : HBRUSH; // For drawing lines on buttons
hpenLines : HPEN; // For drawing lines on buttons
clrText : COLORREF; // Color of text
clrMark : COLORREF; // Color of text bk when marked. (only if TBSTATE_MARKED)
clrTextHighlight : COLORREF; // Color of text when highlighted
clrBtnFace : COLORREF; // Background of the button
clrBtnHighlight : COLORREF; // 3D highlight
clrHighlightHotTrack : COLORREF; // In conjunction with fHighlightHotTrack
rcText : RECT; // Rect for text
nStringBkMode : cint;
nHLStringBkMode : cint;
{$ifdef win32xp}
iListGap : cint;
{$ENDIF}
END;
NMTBCUSTOMDRAW = _NMTBCUSTOMDRAW;
LPNMTBCUSTOMDRAW = ^_NMTBCUSTOMDRAW;
TNMTBCUSTOMDRAW = _NMTBCUSTOMDRAW;
PNMTBCUSTOMDRAW = ^_NMTBCUSTOMDRAW;
// Toolbar custom draw return flags
CONST
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
{$ENDIF}
{$ifdef ie5plus}
TBCDRF_BLENDICON = $00200000; // Use ILD_BLEND50 on the icon image
TBCDRF_NOBACKGROUND = $00400000; // Use ILD_BLEND50 on the icon image
{$ENDIF}
CONST
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);
{$ifdef ie4plus}
TB_MARKBUTTON = (WM_USER + 6);
{$ENDIF}
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);
{$ifdef ie4plus}
TB_ISBUTTONHIGHLIGHTED = (WM_USER + 14);
{$ENDIF}
TB_SETSTATE = (WM_USER + 17);
TB_GETSTATE = (WM_USER + 18);
TB_ADDBITMAP = (WM_USER + 19);
{$IFDEF _WIN32}
TYPE
tagTBADDBITMAP = Record
hInst : HINSTANCE;
nID : UINT_PTR;
END;
TBADDBITMAP = tagTBADDBITMAP;
LPTBADDBITMAP = ^tagTBADDBITMAP;
TTBADDBITMAP = tagTBADDBITMAP;
PTBADDBITMAP = ^tagTBADDBITMAP;
CONST
HINST_COMMCTRL = ((HINSTANCE)-1);
IDB_STD_SMALL_COLOR = 0;
IDB_STD_LARGE_COLOR = 1;
IDB_VIEW_SMALL_COLOR = 4;
IDB_VIEW_LARGE_COLOR = 5;
{$ifdef ie3plus}
IDB_HIST_SMALL_COLOR = 8;
IDB_HIST_LARGE_COLOR = 9;
{$ENDIF}
// 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;
{$ifdef ie4plus}
VIEW_VIEWMENU = 12;
{$ENDIF}
{$ifdef ie3plus}
HIST_BACK = 0;
HIST_FORWARD = 1;
HIST_FAVORITES = 2;
HIST_ADDTOFAVORITES = 3;
HIST_VIEWTREE = 4;
{$ENDIF}
{$ENDIF}
{$ifdef ie4plus}
TB_ADDBUTTONSA = (WM_USER + 20);
TB_INSERTBUTTONA = (WM_USER + 21);
{$ELSE}
TB_ADDBUTTONS = (WM_USER + 20);
TB_INSERTBUTTON = (WM_USER + 21);
{$ENDIF}
TB_DELETEBUTTON = (WM_USER + 22);
TB_GETBUTTON = (WM_USER + 23);
TB_BUTTONCOUNT = (WM_USER + 24);
TB_COMMANDTOINDEX = (WM_USER + 25);
{$IFDEF _WIN32}
TYPE
tagTBSAVEPARAMSA = Record
hkr : HKEY;
pszSubKey : LPCSTR;
pszValueName : LPCSTR;
END;
TBSAVEPARAMSA = tagTBSAVEPARAMSA;
LPTBSAVEPARAMSA = ^tagTBSAVEPARAMSA;
TTBSAVEPARAMSA = tagTBSAVEPARAMSA;
PTBSAVEPARAMSA = ^tagTBSAVEPARAMSA;
tagTBSAVEPARAMSW = Record
hkr : HKEY;
pszSubKey : LPCWSTR;
pszValueName : LPCWSTR;
END;
TBSAVEPARAMSW = tagTBSAVEPARAMSW;
LPTBSAVEPARAMW = ^tagTBSAVEPARAMSW;
TTBSAVEPARAMSW = tagTBSAVEPARAMSW;
PTBSAVEPARAMSW = ^tagTBSAVEPARAMSW;
{$IFDEF UNICODE}
TBSAVEPARAMS = TBSAVEPARAMSW;
LPTBSAVEPARAMS = LPTBSAVEPARAMSW;
{$ELSE}
TBSAVEPARAMS = TBSAVEPARAMSA;
LPTBSAVEPARAMS = LPTBSAVEPARAMSA;
{$ENDIF}
{$ENDIF} // _WIN32
CONST
TB_SAVERESTOREA = (WM_USER + 26);
TB_SAVERESTOREW = (WM_USER + 76);
TB_CUSTOMIZE = (WM_USER + 27);
TB_ADDSTRINGA = (WM_USER + 28);
TB_ADDSTRINGW = (WM_USER + 77);
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_GETBUTTONTEXTA = (WM_USER + 45);
TB_GETBUTTONTEXTW = (WM_USER + 75);
TB_REPLACEBITMAP = (WM_USER + 46);
{$ifdef ie3plus}
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);
{$ENDIF} // _WIN32_IE >= 0x0300
CONST
{$IFDEF UNICODE}
TB_SAVERESTORE = TB_SAVERESTOREW;
TB_ADDSTRING = TB_ADDSTRINGW;
{$ELSE}
TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
TB_SAVERESTORE = TB_SAVERESTOREA;
TB_ADDSTRING = TB_ADDSTRINGA;
{$ENDIF}
{$ifdef ie4plus}
CONST
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
TYPE
TBINSERTMARK = Record
iButton : cint;
dwFlags : DWORD;
END;
LPTBINSERTMARK = ^TBINSERTMARK;
TTBINSERTMARK = TBINSERTMARK;
PTBINSERTMARK = ^TBINSERTMARK;
CONST
TBIMHT_AFTER = $00000001; // TRUE = insert After iButton, otherwise before
TBIMHT_BACKGROUND = $00000002; // TRUE iff missed buttons completely
TB_GETINSERTMARK = (WM_USER + 79); // lParam == LPTBINSERTMARK
TB_SETINSERTMARK = (WM_USER + 80); // lParam == LPTBINSERTMARK
TB_INSERTMARKHITTEST = (WM_USER + 81); // wParam == LPPOINT lParam == LPTBINSERTMARK
TB_MOVEBUTTON = (WM_USER + 82);
TB_GETMAXSIZE = (WM_USER + 83); // lParam == LPSIZE
TB_SETEXTENDEDSTYLE = (WM_USER + 84); // For TBSTYLE_EX_*
TB_GETEXTENDEDSTYLE = (WM_USER + 85); // For TBSTYLE_EX_*
TB_GETPADDING = (WM_USER + 86);
TB_SETPADDING = (WM_USER + 87);
TB_SETINSERTMARKCOLOR = (WM_USER + 88);
TB_GETINSERTMARKCOLOR = (WM_USER + 89);
TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; // lParam is color scheme
TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; // fills in COLORSCHEME pointed to by lParam
TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
TB_MAPACCELERATORW = (WM_USER + 90); // wParam == ch, lParam int * pidBtn
CONST
{$IFDEF UNICODE}
TB_MAPACCELERATOR = TB_MAPACCELERATORW;
{$ELSE}
TB_MAPACCELERATOR = TB_MAPACCELERATORA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0400
TYPE
TBREPLACEBITMAP = Record
hInstOld : HINST;
nIDOld : UINT_PTR;
hInstNew : HINST;
nIDNew : UINT_PTR;
nButtons : cint;
END;
LPTBREPLACEBITMAP = ^TBREPLACEBITMAP;
TTBREPLACEBITMAP = TBREPLACEBITMAP;
PTBREPLACEBITMAP = ^TBREPLACEBITMAP;
{$IFDEF _WIN32}
CONST
TBBF_LARGE = $0001;
TB_GETBITMAPFLAGS = (WM_USER + 41);
{$ifdef ie4plus}
TBIF_IMAGE = $00000001;
TBIF_TEXT = $00000002;
TBIF_STATE = $00000004;
TBIF_STYLE = $00000008;
TBIF_LPARAM = $00000010;
TBIF_COMMAND = $00000020;
TBIF_SIZE = $00000040;
{$ifdef ie5plus}
TBIF_BYINDEX = $80000000; // this specifies that the wparam in Get/SetButtonInfo is an index, not id
{$ENDIF}
TYPE
TBBUTTONINFOA = Record
cbSize : UINT;
dwMask : DWORD;
idCommand : cint;
iImage : cint;
fsState : BYTE;
fsStyle : BYTE;
cx : WORD;
lParam : DWORD_PTR;
pszText : LPSTR;
cchText : cint;
END;
LPTBBUTTONINFOA = ^TBBUTTONINFOA;
TTBBUTTONINFOA = TBBUTTONINFOA;
PTBBUTTONINFOA = ^TBBUTTONINFOA;
TBBUTTONINFOW = Record
cbSize : UINT;
dwMask : DWORD;
idCommand : cint;
iImage : cint;
fsState : BYTE;
fsStyle : BYTE;
cx : WORD;
lParam : DWORD_PTR;
pszText : LPWSTR;
cchText : cint;
END;
LPTBBUTTONINFOW = ^TBBUTTONINFOW;
TTBBUTTONINFOW= TBBUTTONINFOW;
PTBBUTTONINFOW= ^TBBUTTONINFOW;
{$IFDEF UNICODE}
TBBUTTONINFO = TBBUTTONINFOW;
LPTBBUTTONINFO = LPTBBUTTONINFOW;
{$ELSE}
TBBUTTONINFO = TBBUTTONINFOA;
LPTBBUTTONINFO = LPTBBUTTONINFOA;
{$ENDIF}
// BUTTONINFO APIs do NOT support the string pool.
CONST
TB_GETBUTTONINFOW = (WM_USER + 63);
TB_SETBUTTONINFOW = (WM_USER + 64);
TB_GETBUTTONINFOA = (WM_USER + 65);
TB_SETBUTTONINFOA = (WM_USER + 66);
TYPE
{$IFDEF UNICODE}
TB_GETBUTTONINFO = TB_GETBUTTONINFOW;
TB_SETBUTTONINFO = TB_SETBUTTONINFOW;
{$ELSE}
TB_GETBUTTONINFO = TB_GETBUTTONINFOA;
TB_SETBUTTONINFO = TB_SETBUTTONINFOA;
{$ENDIF}
CONST
TB_INSERTBUTTONW = (WM_USER + 67);
TB_ADDBUTTONSW = (WM_USER + 68);
TB_HITTEST = (WM_USER + 69);
// New post Win95/NT4 for InsertButton and AddButton. if iString member
// is a pointer to a string, it will be handled as a string like listview
// (although LPSTR_TEXTCALLBACK is not supported).
TYPE
{$IFDEF UNICODE}
TB_INSERTBUTTON = TB_INSERTBUTTONW;
TB_ADDBUTTONS = TB_ADDBUTTONSW;
{$ELSE}
TB_INSERTBUTTON = TB_INSERTBUTTONA;
TB_ADDBUTTONS = TB_ADDBUTTONSA;
{$ENDIF}
CONST
TB_SETDRAWTEXTFLAGS = (WM_USER + 70); // wParam == mask lParam == bit values
{$ENDIF} // _WIN32_IE >= 0x0400
{$ifdef ie5plus}
TB_GETSTRINGW = (WM_USER + 91);
TB_GETSTRINGA = (WM_USER + 92);
{$IFDEF UNICODE}
TB_GETSTRING = TB_GETSTRINGW;
{$ELSE}
TB_GETSTRING = TB_GETSTRINGA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0500
{$ifdef win32xp}
CONST
TBMF_PAD = $00000001;
TBMF_BARPAD = $00000002;
TBMF_BUTTONSPACING = $00000004;
TYPE
TBMETRICS = Record
cbSize : UINT;
dwMask : DWORD;
cxPad : cint; // PAD
cyPad : cint;
cxBarPad : cint; // BARPAD
cyBarPad : cint;
cxButtonSpacing : cint; // BUTTONSPACING
cyButtonSpacing : cint;
END;
LPTBMETRICS = ^TBMETRICS;
TTBMETRICS = TBMETRICS;
PTBMETRICS = ^TBMETRICS;
CONST
TB_GETMETRICS = (WM_USER + 101);
TB_SETMETRICS = (WM_USER + 102);
{$ENDIF}
{$ifdef win32xp}
TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
{$ENDIF}
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);
{$ifdef ie3plus}
TBN_DROPDOWN = (TBN_FIRST - 10);
{$ENDIF}
{$ifdef ie4plus}
TBN_GETOBJECT = (TBN_FIRST - 12);
// Structure for TBN_HOTITEMCHANGE notification
//
TYPE
tagNMTBHOTITEM = Record
hdr : NMHDR;
idOld : cint;
idNew : cint;
dwFlags : DWORD; // HICF_*
END;
NMTBHOTITEM = tagNMTBHOTITEM;
LPNMTBHOTITEM = ^tagNMTBHOTITEM;
TNMTBHOTITEM = tagNMTBHOTITEM;
PNMTBHOTITEM = ^tagNMTBHOTITEM;
// Hot item change flags
CONST
HICF_OTHER = $00000000;
HICF_MOUSE = $00000001; // Triggered by mouse
HICF_ARROWKEYS = $00000002; // Triggered by arrow keys
HICF_ACCELERATOR = $00000004; // Triggered by accelerator
HICF_DUPACCEL = $00000008; // This accelerator is not unique
HICF_ENTERING = $00000010; // idOld is invalid
HICF_LEAVING = $00000020; // idNew is invalid
HICF_RESELECT = $00000040; // hot item reselected
HICF_LMOUSE = $00000080; // left mouse button selected
HICF_TOGGLEDROPDOWN = $00000100; // Toggle button's dropdown state
TBN_HOTITEMCHANGE = (TBN_FIRST - 13);
TBN_DRAGOUT = (TBN_FIRST - 14); // this is sent when the user clicks down on a button then drags off the button
TBN_DELETINGBUTTON = (TBN_FIRST - 15); // uses TBNOTIFY
TBN_GETDISPINFOA = (TBN_FIRST - 16); // This is sent when the toolbar needs some display information
TBN_GETDISPINFOW = (TBN_FIRST - 17); // This is sent when the toolbar needs some display information
TBN_GETINFOTIPA = (TBN_FIRST - 18);
TBN_GETINFOTIPW = (TBN_FIRST - 19);
TBN_GETBUTTONINFOW = (TBN_FIRST - 20);
{$ifdef ie5plus}
TBN_RESTORE = (TBN_FIRST - 21);
TBN_SAVE = (TBN_FIRST - 22);
TBN_INITCUSTOMIZE = (TBN_FIRST - 23);
TBNRF_HIDEHELP = $00000001;
TBNRF_ENDCUSTOMIZE = $00000002;
{$ENDIF} // (_WIN32_IE >= 0x0500)
{$ifdef ie5plus}
TYPE
tagNMTBSAVE = Record
hdr : NMHDR;
pData : PDWORD;
pCurrent : PDWORD;
cbData : UINT;
iItem : cint;
cButtons : cint;
tbButton : TBBUTTON;
END;
NMTBSAVE = tagNMTBSAVE;
LPNMTBSAVE = ^tagNMTBSAVE;
TNMTBSAVE = tagNMTBSAVE;
PNMTBSAVE = ^tagNMTBSAVE;
tagNMTBRESTORE = Record
hdr : NMHDR;
pData : PDWORD;
pCurrent : PDWORD;
cbData : UINT;
iItem : cint;
cButtons : cint;
cbBytesPerRecord : cint;
tbButton : TBBUTTON;
END;
NMTBRESTORE = tagNMTBRESTORE;
LPNMTBRESTORE = ^tagNMTBRESTORE;
TNMTBRESTORE = tagNMTBRESTORE;
PNMTBRESTORE = ^tagNMTBRESTORE;
{$ENDIF} // (_WIN32_IE >= 0x0500)
tagNMTBGETINFOTIPA = Record
hdr : NMHDR;
pszText : LPSTR;
cchTextMax : cint;
iItem : cint;
lParam : LPARAM;
END;
NMTBGETINFOTIPA = tagNMTBGETINFOTIPA;
LPNMTBGETINFOTIPA = ^tagNMTBGETINFOTIPA;
TNMTBGETINFOTIPA = tagNMTBGETINFOTIPA;
PNMTBGETINFOTIPA = ^tagNMTBGETINFOTIPA;
tagNMTBGETINFOTIPW = Record
hdr : NMHDR;
pszText : LPWSTR;
cchTextMax : cint;
iItem : cint;
lParam : LPARAM;
END;
NMTBGETINFOTIPW = tagNMTBGETINFOTIPW;
LPNMTBGETINFOTIPW = ^tagNMTBGETINFOTIPW;
TNMTBGETINFOTIPW = tagNMTBGETINFOTIPW;
PNMTBGETINFOTIPW = ^tagNMTBGETINFOTIPW;
{$IFDEF UNICODE}
TBN_GETINFOTIP = TBN_GETINFOTIPW;
NMTBGETINFOTIP = NMTBGETINFOTIPW;
LPNMTBGETINFOTIP = LPNMTBGETINFOTIPW;
{$ELSE}
TBN_GETINFOTIP = TBN_GETINFOTIPA;
NMTBGETINFOTIP = NMTBGETINFOTIPA;
LPNMTBGETINFOTIP = LPNMTBGETINFOTIPA;
{$ENDIF}
CONST
TBNF_IMAGE = $00000001;
TBNF_TEXT = $00000002;
TBNF_DI_SETITEM = $10000000;
TYPE
NMTBDISPINFOA = Record
hdr : NMHDR;
dwMask : DWORD; // [in] Specifies the values requested .[out] Client ask the data to be set for future use
idCommand : cint; // [in] id of button we're requesting info for
lParam : DWORD_PTR; // [in] lParam of button
iImage : cint; // [out] image index
pszText : LPSTR; // [out] new text for item
cchText : cint; // [in] size of buffer pointed to by pszText
END;
LPNMTBDISPINFOA = ^NMTBDISPINFOA;
TNMTBDISPINFOA = NMTBDISPINFOA;
PNMTBDISPINFOA = ^NMTBDISPINFOA;
NMTBDISPINFOW = Record
hdr : NMHDR;
dwMask : DWORD; //[in] Specifies the values requested .[out] Client ask the data to be set for future use
idCommand : cint; // [in] id of button we're requesting info for
lParam : DWORD_PTR; // [in] lParam of button
iImage : cint; // [out] image index
pszText : LPWSTR; // [out] new text for item
cchText : cint; // [in] size of buffer pointed to by pszText
END;
LPNMTBDISPINFOW = ^NMTBDISPINFOW;
TNMTBDISPINFOW = NMTBDISPINFOW;
PNMTBDISPINFOW = ^NMTBDISPINFOW;
{$IFDEF UNICODE}
TBN_GETDISPINFO = TBN_GETDISPINFOW;
NMTBDISPINFO = NMTBDISPINFOW;
LPNMTBDISPINFO = LPNMTBDISPINFOW;
{$ELSE}
TBN_GETDISPINFO = TBN_GETDISPINFOA;
NMTBDISPINFO = NMTBDISPINFOA;
LPNMTBDISPINFO = LPNMTBDISPINFOA;
{$ENDIF}
// Return codes for TBN_DROPDOWN
CONST
TBDDRET_DEFAULT = 0;
TBDDRET_NODEFAULT = 1;
TBDDRET_TREATPRESSED = 2; // Treat as a standard press button
{$ENDIF}
{$IFDEF UNICODE}
TYPE
TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
{$ELSE}
TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
{$ENDIF}
{$ifdef ie3plus}
TBNOTIFYA = NMTOOLBARA;
TBNOTIFYW = NMTOOLBARW;
LPTBNOTIFYA = LPNMTOOLBARA;
LPTBNOTIFYW = LPNMTOOLBARW;
{$ELSE}
tagNMTOOLBARA = tagTBNOTIFYA;
NMTOOLBARA = TBNOTIFYA;
LPNMTOOLBARA = LPTBNOTIFYA;
tagNMTOOLBARW = tagTBNOTIFYW;
NMTOOLBARW = TBNOTIFYW;
LPNMTOOLBARW = LPTBNOTIFYW;
{$ENDIF}
CONST
TBNOTIFY = NMTOOLBAR;
TYPE
LPTBNOTIFY = LPNMTOOLBAR;
{$ifdef ie3plus}
tagNMTOOLBARA = Record
hdr : NMHDR;
iItem : cint;
tbButton : TBBUTTON;
cchText : cint;
pszText : LPSTR;
{$ifdef ie5plus}
rcButton : RECT;
{$ENDIF}
END;
NMTOOLBARA = tagNMTOOLBARA;
LPNMTOOLBARA = ^tagNMTOOLBARA;
TNMTOOLBARA = tagNMTOOLBARA;
PNMTOOLBARA = ^tagNMTOOLBARA;
{$ENDIF}
{$ifdef ie3plus}
tagNMTOOLBARW = Record
hdr : NMHDR;
iItem : cint;
tbButton : TBBUTTON;
cchText : cint;
pszText : LPWSTR;
{$ifdef ie5plus}
rcButton : RECT;
{$ENDIF}
END;
NMTOOLBARW = tagNMTOOLBARW;
LPNMTOOLBARW = ^tagNMTOOLBARW;
TNMTOOLBARW = tagNMTOOLBARW;
PNMTOOLBARW = ^tagNMTOOLBARW;
{$ENDIF}
{$IFDEF UNICODE}
NMTOOLBAR = NMTOOLBARW;
LPNMTOOLBAR = LPNMTOOLBARW;
{$ELSE}
NMTOOLBAR = NMTOOLBARA;
LPNMTOOLBAR = LPNMTOOLBARA;
{$ENDIF}
{$ENDIF}
{$ENDIF} // NOTOOLBAR
{$ifdef ie3plus}
//====== REBAR CONTROL ========================================================
{$IFNDEF NOREBAR}
{$IFDEF _WIN32}
CONST
REBARCLASSNAMEW = {L}'ReBarWindow32';
REBARCLASSNAMEA = 'ReBarWindow32';
TYPE
{$IFDEF UNICODE}
REBARCLASSNAME = REBARCLASSNAMEW;
{$ELSE}
REBARCLASSNAME = REBARCLASSNAMEA;
{$ENDIF}
{$ELSE}
CONST
REBARCLASSNAME = 'ReBarWindow';
{$ENDIF}
RBIM_IMAGELIST = $00000001;
// begin_r_commctrl
{$ifdef ie4plus}
RBS_TOOLTIPS = $0100;
RBS_VARHEIGHT = $0200;
RBS_BANDBORDERS = $0400;
RBS_FIXEDORDER = $0800;
RBS_REGISTERDROP = $1000;
RBS_AUTOSIZE = $2000;
RBS_VERTICALGRIPPER = $4000; // this always has the vertical gripper (default for horizontal mode)
RBS_DBLCLKTOGGLE = $8000;
{$ELSE}
RBS_TOOLTIPS = $00000100;
RBS_VARHEIGHT = $00000200;
RBS_BANDBORDERS = $00000400;
RBS_FIXEDORDER = $00000800;
{$ENDIF} // _WIN32_IE >= 0x0400
// end_r_commctrl
TYPE
tagREBARINFO = Record
cbSize : UINT;
fMask : UINT;
{$IFNDEF NOIMAGEAPIS}
himl : HIMAGELIST;
{$ELSE}
himl : HANDLE;
{$ENDIF}
END;
REBARINFO = tagREBARINFO;
LPREBARINFO = ^tagREBARINFO;
TREBARINFO = tagREBARINFO;
PREBARINFO = ^tagREBARINFO;
CONST
RBBS_BREAK = $00000001; // break to new line
RBBS_FIXEDSIZE = $00000002; // band can't be sized
RBBS_CHILDEDGE = $00000004; // edge around top & bottom of child window
RBBS_HIDDEN = $00000008; // don't show
RBBS_NOVERT = $00000010; // don't show when vertical
RBBS_FIXEDBMP = $00000020; // bitmap doesn't move during band resize
{$ifdef ie4plus }
RBBS_VARIABLEHEIGHT = $00000040; // allow autosizing of this child vertically
RBBS_GRIPPERALWAYS = $00000080; // always show the gripper
RBBS_NOGRIPPER = $00000100; // never show the gripper
{$ifdef ie5plus}
RBBS_USECHEVRON = $00000200; // display drop-down button for this band if it's sized smaller than ideal width
{$ifdef IE501plus}
RBBS_HIDETITLE = $00000400; // keep band title hidden
RBBS_TOPALIGN = $00000800; // keep band title hidden
{$ENDIF} // 0x0501 //
{$ENDIF} // 0x0500 //
{$ENDIF} // 0x0400 //
RBBIM_STYLE = $00000001;
RBBIM_COLORS = $00000002;
RBBIM_TEXT = $00000004;
RBBIM_IMAGE = $00000008;
RBBIM_CHILD = $00000010;
RBBIM_CHILDSIZE = $00000020;
RBBIM_SIZE = $00000040;
RBBIM_BACKGROUND = $00000080;
RBBIM_ID = $00000100;
{$ifdef ie4plus}
RBBIM_IDEALSIZE = $00000200;
RBBIM_LPARAM = $00000400;
RBBIM_HEADERSIZE = $00000800; // control the size of the header
{$ENDIF}
TYPE
tagREBARBANDINFOA = Record
cbSize : UINT;
fMask : UINT;
fStyle : UINT;
clrFore : COLORREF;
clrBack : COLORREF;
lpText : LPSTR;
cch : UINT;
iImage : cint;
hwndChild : HWND;
cxMinChild : UINT;
cyMinChild : UINT;
cx : UINT;
hbmBack : HBITMAP;
wID : UINT;
{$ifdef ie4plus}
cyChild : UINT;
cyMaxChild : UINT;
cyIntegral : UINT;
cxIdeal : UINT;
lParam : LPARAM;
cxHeader : UINT;
{$ENDIF}
END;
REBARBANDINFOA = tagREBARBANDINFOA;
LPREBARBANDINFOA = ^tagREBARBANDINFOA;
TREBARBANDINFOA = tagREBARBANDINFOA;
PREBARBANDINFOA = ^tagREBARBANDINFOA;
LPCREBARBANDINFOA = ^REBARBANDINFOA;
// #define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID)
// #define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
tagREBARBANDINFOW = Record
cbSize : UINT;
fMask : UINT;
fStyle : UINT;
clrFore : COLORREF;
clrBack : COLORREF;
lpText : LPWSTR;
cch : UINT;
iImage : cint;
hwndChild : HWND;
cxMinChild : UINT;
cyMinChild : UINT;
cx : UINT;
hbmBack : HBITMAP;
wID : UINT;
{$ifdef ie4plus}
cyChild : UINT;
cyMaxChild : UINT;
cyIntegral : UINT;
cxIdeal : UINT;
lParam : LPARAM;
cxHeader : UINT;
{$ENDIF}
END;
REBARBANDINFOW = tagREBARBANDINFOW;
LPREBARBANDINFOW = ^tagREBARBANDINFOW;
TREBARBANDINFOW = tagREBARBANDINFOW;
PREBARBANDINFOW = ^tagREBARBANDINFOW;
LPCREBARBANDINFOW = {const} ^REBARBANDINFOW;
{$IFDEF UNICODE}
REBARBANDINFO = REBARBANDINFOW;
LPREBARBANDINFO = LPREBARBANDINFOW;
LPCREBARBANDINFO = LPCREBARBANDINFOW;
// REBARBANDINFO_V3_SIZE = REBARBANDINFOW_V3_SIZE;
{$ELSE}
REBARBANDINFO = REBARBANDINFOA;
LPREBARBANDINFO = LPREBARBANDINFOA;
LPCREBARBANDINFO = LPCREBARBANDINFOA;
// REBARBANDINFO_V3_SIZE = REBARBANDINFOA_V3_SIZE;
{$ENDIF}
CONST
RB_INSERTBANDA = (WM_USER + 1);
RB_DELETEBAND = (WM_USER + 2);
RB_GETBARINFO = (WM_USER + 3);
RB_SETBARINFO = (WM_USER + 4);
{$ifdef IE4plus}
RB_GETBANDINFO = (WM_USER + 5);
{$ENDIF}
RB_SETBANDINFOA = (WM_USER + 6);
RB_SETPARENT = (WM_USER + 7);
{$ifdef ie4plus}
RB_HITTEST = (WM_USER + 8);
RB_GETRECT = (WM_USER + 9);
{$ENDIF}
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);
{$ifdef ie4plus}
RB_IDTOINDEX = (WM_USER + 16); // wParam == id
RB_GETTOOLTIPS = (WM_USER + 17);
RB_SETTOOLTIPS = (WM_USER + 18);
RB_SETBKCOLOR = (WM_USER + 19); // sets the default BK color
RB_GETBKCOLOR = (WM_USER + 20); // defaults to CLR_NONE
RB_SETTEXTCOLOR = (WM_USER + 21);
RB_GETTEXTCOLOR = (WM_USER + 22); // defaults to 0x00000000
{$ifdef Win32XP}
RBSTR_CHANGERECT = $0001; // flags for RB_SIZETORECT
{$ENDIF}
RB_SIZETORECT = (WM_USER + 23); // resize the rebar/break bands and such to this rect (lparam)
{$ENDIF} // _WIN32_IE >= 0x0400
RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; // lParam is color scheme
RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; // fills in COLORSCHEME pointed to by lParam
{$IFDEF UNICODE}
RB_INSERTBAND = RB_INSERTBANDW;
RB_SETBANDINFO = RB_SETBANDINFOW;
{$ELSE}
RB_INSERTBAND = RB_INSERTBANDA;
RB_SETBANDINFO = RB_SETBANDINFOA;
{$ENDIF}
{$ifdef ie4plus}
// for manual drag control
// lparam == cursor pos
// -1 means do it yourself.
// -2 means use what you had saved before
CONST
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);
//TYPE
{$IFDEF UNICODE}
// RB_GETBANDINFO = RB_GETBANDINFOW;
{$ELSE}
// RB_GETBANDINFO = RB_GETBANDINFOA;
{$ENDIF}
CONST
RB_MINIMIZEBAND = (WM_USER + 30);
RB_MAXIMIZEBAND = (WM_USER + 31);
RB_GETDROPTARGET = (CCM_GETDROPTARGET);
RB_GETBANDBORDERS = (WM_USER + 34); // returns in lparam = lprc the amount of edges added to band wparam
RB_SHOWBAND = (WM_USER + 35); // show/hide band
RB_SETPALETTE = (WM_USER + 37);
RB_GETPALETTE = (WM_USER + 38);
RB_MOVEBAND = (WM_USER + 39);
RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
{$ENDIF} // _WIN32_IE >= 0x0400
{$ifdef win32xp}
RB_GETBANDMARGINS = (WM_USER + 40);
RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
{$ENDIF}
{$ifdef ie5plus}
RB_PUSHCHEVRON = (WM_USER + 43);
{$ENDIF} // _WIN32_IE >= 0x0500
RBN_HEIGHTCHANGE = (RBN_FIRST - 0);
{$ifdef ie4plus}
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); // Uses NMREBAR
RBN_DELETEDBAND = (RBN_FIRST - 7); // Uses NMREBAR
RBN_CHILDSIZE = (RBN_FIRST - 8);
{$ifdef ie5plus}
RBN_CHEVRONPUSHED = (RBN_FIRST - 10);
{$ENDIF} // _WIN32_IE >= 0x0500
{$ifdef ie5plus}
RBN_MINMAX = (RBN_FIRST - 21);
{$ENDIF}
{$ifdef Win32XP}
RBN_AUTOBREAK = (RBN_FIRST - 22);
{$ENDIF}
TYPE
tagNMREBARCHILDSIZE = Record
hdr : NMHDR;
uBand : UINT;
wID : UINT;
rcChild : RECT;
rcBand : RECT;
END;
NMREBARCHILDSIZE = tagNMREBARCHILDSIZE;
LPNMREBARCHILDSIZE = ^tagNMREBARCHILDSIZE;
TNMREBARCHILDSIZE = tagNMREBARCHILDSIZE;
PNMREBARCHILDSIZE = ^tagNMREBARCHILDSIZE;
tagNMREBAR = Record
hdr : NMHDR;
dwMask : DWORD; // RBNM_*
uBand : UINT;
fStyle : UINT;
wID : UINT;
lParam : LPARAM;
END;
NMREBAR = tagNMREBAR;
LPNMREBAR = ^tagNMREBAR;
TNMREBAR = tagNMREBAR;
PNMREBAR = ^tagNMREBAR;
// Mask flags for NMREBAR
CONST
RBNM_ID = $00000001;
RBNM_STYLE = $00000002;
RBNM_LPARAM = $00000004;
TYPE
tagNMRBAUTOSIZE = Record
hdr : NMHDR;
fChanged : BOOL;
rcTarget : RECT;
rcActual : RECT;
END;
NMRBAUTOSIZE = tagNMRBAUTOSIZE;
LPNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
TNMRBAUTOSIZE = tagNMRBAUTOSIZE;
PNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
{$ifdef ie5plus}
tagNMREBARCHEVRON = Record
hdr : NMHDR;
uBand : UINT;
wID : UINT;
lParam : LPARAM;
rc : RECT;
lParamNM : LPARAM;
END;
NMREBARCHEVRON = tagNMREBARCHEVRON;
LPNMREBARCHEVRON = ^tagNMREBARCHEVRON;
TNMREBARCHEVRON = tagNMREBARCHEVRON;
PNMREBARCHEVRON = ^tagNMREBARCHEVRON;
{$ENDIF}
{$ifdef Win32XP}
CONST
RBAB_AUTOSIZE = $0001; // These are not flags and are all mutually exclusive
RBAB_ADDBAND = $0002;
TYPE
tagNMREBARAUTOBREAK = Record
hdr : NMHDR;
uBand : UINT;
wID : UINT;
lParam : LPARAM;
uMsg : UINT;
fStyleCurrent : UINT;
fAutoBreak : BOOL;
END;
NMREBARAUTOBREAK = tagNMREBARAUTOBREAK;
LPNMREBARAUTOBREAK = ^tagNMREBARAUTOBREAK;
TNMREBARAUTOBREAK = tagNMREBARAUTOBREAK;
PNMREBARAUTOBREAK = ^tagNMREBARAUTOBREAK;
{$ENDIF}
CONST
RBHT_NOWHERE = $0001;
RBHT_CAPTION = $0002;
RBHT_CLIENT = $0003;
RBHT_GRABBER = $0004;
{$ifdef ie5plus}
RBHT_CHEVRON = $0008;
{$ENDIF}
TYPE
_RB_HITTESTINFO = Record
pt : POINT;
flags : UINT;
iBand : cint;
END;
RBHITTESTINFO = _RB_HITTESTINFO;
LPRBHITTESTINFO = ^_RB_HITTESTINFO;
TRB_HITTESTINFO = _RB_HITTESTINFO;
PRB_HITTESTINFO = ^_RB_HITTESTINFO;
{$ENDIF} // _WIN32_IE >= 0x0400
{$ENDIF} // NOREBAR
{$ENDIF} // _WIN32_IE >= 0x0300
//====== TOOLTIPS CONTROL =====================================================
{$IFNDEF NOTOOLTIPS}
{$IFDEF _WIN32}
CONST
TOOLTIPS_CLASSW = {L}'tooltips_class32';
TOOLTIPS_CLASSA = 'tooltips_class32';
{$IFDEF UNICODE}
TOOLTIPS_CLASS = TOOLTIPS_CLASSW;
{$ELSE}
TOOLTIPS_CLASS = TOOLTIPS_CLASSA;
{$ENDIF}
{$ELSE}
CONST
TOOLTIPS_CLASS = 'tooltips_class';
{$ENDIF}
TYPE
tagTOOLINFOA = Record
cbSize : UINT;
uFlags : UINT;
hwnd : HWND;
uId : UINT_PTR;
rect : RECT;
hinst : HINST;
lpszText : LPSTR;
{$ifdef ie3plus}
lParam : LPARAM;
{$ENDIF}
{$ifdef Win32XP}
lpReserved : Pointer;
{$ENDIF}
END;
TTTOOLINFOA = tagTOOLINFOA;
PTOOLINFOA = {near} ^tagTOOLINFOA;
LPTTTOOLINFOA = ^tagTOOLINFOA;
TTOOLINFOA = tagTOOLINFOA;
LPTOOLINFOA = ^tagTOOLINFOA;
tagTOOLINFOW = Record
cbSize : UINT;
uFlags : UINT;
hwnd : HWND;
uId : UINT_PTR;
rect : RECT;
hinst : HINST;
lpszText : LPWSTR;
{$ifdef ie3plus}
lParam : LPARAM;
{$ENDIF}
{$ifdef Win32XP}
lpReserved : Pointer;
{$ENDIF}
END;
TTTOOLINFOW = tagTOOLINFOW;
PTOOLINFOW = {near} ^tagTOOLINFOW;
LPTTTOOLINFOW = ^tagTOOLINFOW;
TTOOLINFOW = tagTOOLINFOW;
LPTOOLINFOW = ^tagTOOLINFOW;
{$IFDEF UNICODE}
TTTOOLINFO = TTTOOLINFOW;
PTOOLINFO = PTOOLINFOW;
LPTTTOOLINFO = LPTTTOOLINFOW;
// TTTOOLINFO_V1_SIZE = TTTOOLINFOW_V1_SIZE;
{$ELSE}
PTOOLINFO = PTOOLINFOA;
TTTOOLINFO = TTTOOLINFOA;
LPTTTOOLINFO = LPTTTOOLINFOA;
// TTTOOLINFO_V1_SIZE = TTTOOLINFOA_V1_SIZE;
{$ENDIF}
TYPE
{$ifdef ie3plus}
// LPTOOLINFOA = LPTTTOOLINFOA;
// LPTOOLINFOW = LPTTTOOLINFOW;
TOOLINFOA = TTTOOLINFOA;
TOOLINFOW = TTTOOLINFOW;
{$ELSE}
// TTTOOLINFOA = TOOLINFOA;
// LPTTTOOLINFOA = LPTOOLINFOA;
// TTTOOLINFOW = TOOLINFOW;
// LPTTTOOLINFOW = LPTOOLINFOW;
{$ENDIF}
LPTOOLINFO = LPTTTOOLINFO;
TOOLINFO = TTTOOLINFO;
// #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
// #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
// #define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam)
// #define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam)
// #define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved)
// #define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved)
CONST
// begin_r_commctrl
TTS_ALWAYSTIP = $01;
TTS_NOPREFIX = $02;
{$ifdef ie5plus}
TTS_NOANIMATE = $10;
TTS_NOFADE = $20;
TTS_BALLOON = $40;
TTS_CLOSE = $80;
{$ENDIF}
// end_r_commctrl
TTF_IDISHWND = $0001;
// Use this to center around trackpoint in trackmode
// -OR- to center around tool in normal mode.
// Use TTF_ABSOLUTE to place the tip exactly at the track coords when
// in tracking mode. TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
// to center the tip absolutely about the track point.
TTF_CENTERTIP = $0002;
TTF_RTLREADING = $0004;
TTF_SUBCLASS = $0010;
{$ifdef ie3plus}
TTF_TRACK = $0020;
TTF_ABSOLUTE = $0080;
TTF_TRANSPARENT = $0100;
{$ifdef ie501plus}
TTF_PARSELINKS = $1000;
{$ENDIF} // _WIN32_IE >= 0x0501
TTF_DI_SETITEM = $8000; // valid only on the TTN_NEEDTEXT callback
{$ENDIF} // _WIN32_IE >= 0x0300
TTDT_AUTOMATIC = 0;
TTDT_RESHOW = 1;
TTDT_AUTOPOP = 2;
TTDT_INITIAL = 3;
// ToolTip Icons (Set with TTM_SETTITLE)
TTI_NONE = 0;
TTI_INFO = 1;
TTI_WARNING = 2;
TTI_ERROR = 3;
// Tool Tip Messages
TTM_ACTIVATE = (WM_USER + 1);
TTM_SETDELAYTIME = (WM_USER + 3);
TTM_ADDTOOLA = (WM_USER + 4);
TTM_ADDTOOLW = (WM_USER + 50);
TTM_DELTOOLA = (WM_USER + 5);
TTM_DELTOOLW = (WM_USER + 51);
TTM_NEWTOOLRECTA = (WM_USER + 6);
TTM_NEWTOOLRECTW = (WM_USER + 52);
TTM_RELAYEVENT = (WM_USER + 7);
TTM_GETTOOLINFOA = (WM_USER + 8);
TTM_GETTOOLINFOW = (WM_USER + 53);
TTM_SETTOOLINFOA = (WM_USER + 9);
TTM_SETTOOLINFOW = (WM_USER + 54);
TTM_HITTESTA = (WM_USER + 10);
TTM_HITTESTW = (WM_USER + 55);
TTM_GETTEXTA = (WM_USER + 11);
TTM_GETTEXTW = (WM_USER + 56);
TTM_UPDATETIPTEXTA = (WM_USER + 12);
TTM_UPDATETIPTEXTW = (WM_USER + 57);
TTM_GETTOOLCOUNT = (WM_USER + 13);
TTM_ENUMTOOLSA = (WM_USER + 14);
TTM_ENUMTOOLSW = (WM_USER + 58);
TTM_GETCURRENTTOOLA = (WM_USER + 15);
TTM_GETCURRENTTOOLW = (WM_USER + 59);
TTM_WINDOWFROMPOINT = (WM_USER + 16);
{$ifdef ie3plus}
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);
{$ENDIF}
{$ifdef ie4plus}
TTM_UPDATE = (WM_USER + 29);
{$ENDIF}
{$ifdef ie5plus}
TTM_GETBUBBLESIZE = (WM_USER + 30);
TTM_ADJUSTRECT = (WM_USER + 31);
TTM_SETTITLEA = (WM_USER + 32); // wParam = TTI_*, lParam = char* szTitle
TTM_SETTITLEW = (WM_USER + 33); // wParam = TTI_*, lParam = wchar* szTitle
{$ENDIF}
{$ifdef Win32XP}
TTM_POPUP = (WM_USER + 34);
TTM_GETTITLE = (WM_USER + 35); // wParam = 0, lParam = TTGETTITLE*
TYPE
_TTGETTITLE = Record
dwSize : DWORD;
uTitleBitmap : UINT;
cch : UINT;
pszTitle : PWCHAR;
END;
TTGETTITLE = _TTGETTITLE;
PTTGETTITLE = ^_TTGETTITLE;
TTTGETTITLE = _TTGETTITLE;
PTTTGETTITLE = ^TTTGETTITLE;
{$ENDIF}
const
{$IFDEF UNICODE}
TTM_ADDTOOL = TTM_ADDTOOLW;
TTM_DELTOOL = TTM_DELTOOLW;
TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
TTM_HITTEST = TTM_HITTESTW;
TTM_GETTEXT = TTM_GETTEXTW;
TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
{$ifdef ie5plus}
TTM_SETTITLE = TTM_SETTITLEW;
{$ENDIF}
{$ELSE}
TTM_ADDTOOL = TTM_ADDTOOLA;
TTM_DELTOOL = TTM_DELTOOLA;
TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
TTM_HITTEST = TTM_HITTESTA;
TTM_GETTEXT = TTM_GETTEXTA;
TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
{$ifdef ie5plus}
TTM_SETTITLE = TTM_SETTITLEA;
{$ENDIF}
{$ENDIF}
{$ifdef win32xp}
CONST
TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
{$ENDIF}
TYPE
_TT_HITTESTINFOA = Record
hwnd : HWND;
pt : POINT;
ti : TTTOOLINFOA;
END;
TTHITTESTINFOA = _TT_HITTESTINFOA;
LPTTHITTESTINFOA = ^_TT_HITTESTINFOA;
TTT_HITTESTINFOA = _TT_HITTESTINFOA;
PTT_HITTESTINFOA = ^_TT_HITTESTINFOA;
_TT_HITTESTINFOW = Record
hwnd : HWND;
pt : POINT;
ti : TTTOOLINFOW;
END;
TTHITTESTINFOW = _TT_HITTESTINFOW;
LPTTHITTESTINFOW = ^_TT_HITTESTINFOW;
TTT_HITTESTINFOW = _TT_HITTESTINFOW;
PTT_HITTESTINFOW = ^_TT_HITTESTINFOW;
{$IFDEF UNICODE}
TTHITTESTINFO = TTHITTESTINFOW;
LPTTHITTESTINFO = LPTTHITTESTINFOW;
{$ELSE}
TTHITTESTINFO = TTHITTESTINFOA;
LPTTHITTESTINFO = LPTTHITTESTINFOA;
{$ENDIF}
LPHITTESTINFO = LPTTHITTESTINFO;
{$ifdef ie3plus}
LPHITTESTINFOW = LPTTHITTESTINFOW;
LPHITTESTINFOA = LPTTHITTESTINFOA;
{$ELSE}
// LPTTHITTESTINFOA = LPHITTESTINFOA;
// LPTTHITTESTINFOW = LPHITTESTINFOW;
{$ENDIF}
CONST
TTN_GETDISPINFOA = (TTN_FIRST - 0);
TTN_GETDISPINFOW = (TTN_FIRST - 10);
TTN_SHOW = (TTN_FIRST - 1);
TTN_POP = (TTN_FIRST - 2);
TTN_LINKCLICK = (TTN_FIRST - 3);
CONST
{$IFDEF UNICODE}
TTN_GETDISPINFO = TTN_GETDISPINFOW;
{$ELSE}
TTN_GETDISPINFO = TTN_GETDISPINFOA;
{$ENDIF}
CONST
TTN_NEEDTEXT = TTN_GETDISPINFO;
TTN_NEEDTEXTA = TTN_GETDISPINFOA;
TTN_NEEDTEXTW = TTN_GETDISPINFOW;
TYPE
// #define NMTTDISPINFOA_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags)
// #define NMTTDISPINFOW_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags)
tagNMTTDISPINFOA = Record
hdr : NMHDR;
lpszText : LPSTR;
szText : Array[0..79] of char;
hinst : HINST;
uFlags : UINT;
{$ifdef ie3plus}
lParam : LPARAM;
{$ENDIF}
END;
NMTTDISPINFOA = tagNMTTDISPINFOA;
LPNMTTDISPINFOA = ^tagNMTTDISPINFOA;
TNMTTDISPINFOA = tagNMTTDISPINFOA;
PNMTTDISPINFOA = ^tagNMTTDISPINFOA;
tagNMTTDISPINFOW = Record
hdr : NMHDR;
lpszText : LPWSTR;
szText : Array[0..79] of WCHAR;
hinst : HINST;
uFlags : UINT;
{$ifdef ie3plus}
lParam : LPARAM;
{$ENDIF}
END;
NMTTDISPINFOW = tagNMTTDISPINFOW;
LPNMTTDISPINFOW = ^tagNMTTDISPINFOW;
TNMTTDISPINFOW = tagNMTTDISPINFOW;
PNMTTDISPINFOW = ^tagNMTTDISPINFOW;
{$ifdef ie3plus}
TOOLTIPTEXTW = NMTTDISPINFOW;
TOOLTIPTEXTA = NMTTDISPINFOA;
LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
{$ELSE}
// tagNMTTDISPINFOA = tagTOOLTIPTEXTA;
NMTTDISPINFOA = TOOLTIPTEXTA;
// LPNMTTDISPINFOA = LPTOOLTIPTEXTA;
tagNMTTDISPINFOW = tagTOOLTIPTEXTW;
NMTTDISPINFOW = TOOLTIPTEXTW;
LPNMTTDISPINFOW = LPTOOLTIPTEXTW;
{$ENDIF}
TYPE
{$IFDEF UNICODE}
NMTTDISPINFO = NMTTDISPINFOW;
LPNMTTDISPINFO = LPNMTTDISPINFOW;
// NMTTDISPINFO_V1_SIZE = NMTTDISPINFOW_V1_SIZE;
{$ELSE}
NMTTDISPINFO = NMTTDISPINFOA;
LPNMTTDISPINFO = LPNMTTDISPINFOA;
// NMTTDISPINFO_V1_SIZE = NMTTDISPINFOA_V1_SIZE;
{$ENDIF}
TOOLTIPTEXT = NMTTDISPINFO;
LPTOOLTIPTEXT = LPNMTTDISPINFO;
{$ENDIF} // NOTOOLTIPS
//====== STATUS BAR CONTROL ===================================================
{$IFNDEF NOSTATUSBAR}
// begin_r_commctrl
CONST
SBARS_SIZEGRIP = $0100;
{$ifdef ie5plus}
SBARS_TOOLTIPS = $0800;
{$ENDIF}
{$ifdef ie4plus}
// this is a status bar flag, preference to SBARS_TOOLTIPS
SBT_TOOLTIPS = $0800;
{$ENDIF}
// end_r_commctrl
procedure DrawStatusTextA(hDC:HDC;lprc:LPRECT;pszText:LPCSTR;uFlags:UINT); external commctrldll name 'DrawStatusTextA';
Procedure DrawStatusTextW(hDC:HDC;lprc:LPRECT;pszText:LPCWSTR;uFlags:UINT); external commctrldll name 'DrawStatusTextW';
function CreateStatusWindowA(style:LONG;lpszText:LPCSTR;hwndParent:HWND;wID:UINT):HWND; external commctrldll name 'CreateStatusWindowA';
function CreateStatusWindowW(style:LONG;lpszText:LPCWSTR;hwndParent:HWND;wID:UINT):HWND; external commctrldll name 'CreateStatusWindowW';
{$IFDEF UNICODE}
function CreateStatusWindow(style:LONG;lpszText:LPCSTR;hwndParent:HWND;wID:UINT):HWND; external commctrldll name 'CreateStatusWindowA';
procedure DrawStatusText(hDC:HDC;lprc:LPRECT;pszText:LPCSTR;uFlags:UINT); external commctrldll name 'DrawStatusTextA';
{$ELSE}
function CreateStatusWindow(style:LONG;lpszText:LPCWSTR;hwndParent:HWND;wID:UINT):HWND; external commctrldll name 'CreateStatusWindowW';
Procedure DrawStatusText(hDC:HDC;lprc:LPRECT;pszText:LPCWSTR;uFlags:UINT); external commctrldll name 'DrawStatusTextW';
{$ENDIF}
CONST
{$IFDEF _WIN32}
STATUSCLASSNAMEW = {L}'msctls_statusbar32';
STATUSCLASSNAMEA = 'msctls_statusbar32';
{$IFDEF UNICODE}
STATUSCLASSNAME = STATUSCLASSNAMEW;
{$ELSE}
STATUSCLASSNAME = STATUSCLASSNAMEA;
{$ENDIF}
{$ELSE}
STATUSCLASSNAME = 'msctls_statusbar';
{$ENDIF}
SB_SETTEXTA = (WM_USER+1);
SB_SETTEXTW = (WM_USER+11);
SB_GETTEXTA = (WM_USER+2);
SB_GETTEXTW = (WM_USER+13);
SB_GETTEXTLENGTHA = (WM_USER+3);
SB_GETTEXTLENGTHW = (WM_USER+12);
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);
{$ifdef ie3plus}
SB_ISSIMPLE = (WM_USER+14);
{$ENDIF}
{$ifdef ie4plus}
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);
SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
{$ENDIF}
{$IFDEF UNICODE}
SB_GETTEXT = SB_GETTEXTW;
SB_SETTEXT = SB_SETTEXTW;
SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
{$ifdef ie4plus}
SB_SETTIPTEXT = SB_SETTIPTEXTW;
SB_GETTIPTEXT = SB_GETTIPTEXTW;
{$ENDIF}
{$ELSE}
SB_GETTEXT = SB_GETTEXTA;
SB_SETTEXT = SB_SETTEXTA;
SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
{$ifdef ie4plus}
SB_SETTIPTEXT = SB_SETTIPTEXTA;
SB_GETTIPTEXT = SB_GETTIPTEXTA;
{$ENDIF}
{$ENDIF}
SBT_OWNERDRAW = $1000;
SBT_NOBORDERS = $0100;
SBT_POPOUT = $0200;
SBT_RTLREADING = $0400;
{$ifdef ie5plus}
SBT_NOTABPARSING = $0800;
{$ENDIF}
SB_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
/// status bar notifications
{$ifdef ie4plus}
SBN_SIMPLEMODECHANGE = (SBN_FIRST - 0);
{$ENDIF}
{$ifdef ie5plus}
// refers to the data saved for simple mode
SB_SIMPLEID = $00ff;
{$ENDIF}
{$ENDIF} // NOSTATUSBAR
//====== MENU HELP ============================================================
{$IFNDEF NOMENUHELP}
Procedure MenuHelp(uMsg:UINT;wParam:WPARAM;lParam:LPARAM;hMainMenu:HMENU;hInst:HINST;hwndStatus:HWND;lpwIDs:PUINT); external commctrldll name 'MenuHelp';
function ShowHideMenuCtl(hWnd:HWND;uFlags:UINT_PTR;lpInfo:LPINT):BOOL; external commctrldll name 'ShowHideMenuCtl';
Procedure GetEffectiveClientRect(hWnd:HWND;lprc:LPRECT;lpInfo:LPINT); external commctrldll name 'GetEffectiveClientRect';
CONST
MINSYSCOMMAND = SC_SIZE;
{$ENDIF}
//====== TRACKBAR CONTROL =====================================================
{$IFNDEF NOTRACKBAR}
CONST
{$IFDEF _WIN32}
TRACKBAR_CLASSA = 'msctls_trackbar32';
TRACKBAR_CLASSW = {L}'msctls_trackbar32';
{$IFDEF UNICODE}
TRACKBAR_CLASS = TRACKBAR_CLASSW;
{$ELSE}
TRACKBAR_CLASS = TRACKBAR_CLASSA;
{$ENDIF}
{$ELSE}
TRACKBAR_CLASS = 'msctls_trackbar';
{$ENDIF}
// begin_r_commctrl
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;
{$ifdef ie3plus}
TBS_TOOLTIPS = $0100;
{$ENDIF}
{$ifdef ie5plus}
TBS_REVERSED = $0200; // Accessibility hint: the smaller number (usually the min value) means "high" and the larger number (usually the max value) means "low"
{$ENDIF}
{$ifdef ie501plus}
TBS_DOWNISLEFT = $0400; // Down=Left and Up=Right (default is Down=Right and Up=Left)
{$ENDIF}
// end_r_commctrl
TBM_GETPOS = (WM_USER);
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);
{$ifdef ie3plus}
TBM_SETTOOLTIPS = (WM_USER+29);
TBM_GETTOOLTIPS = (WM_USER+30);
TBM_SETTIPSIDE = (WM_USER+31);
// TrackBar Tip Side flags
TBTS_TOP = 0;
TBTS_LEFT = 1;
TBTS_BOTTOM = 2;
TBTS_RIGHT = 3;
TBM_SETBUDDY = (WM_USER+32); // wparam = BOOL fLeft; (or right)
TBM_GETBUDDY = (WM_USER+33); // wparam = BOOL fLeft; (or right)
{$ENDIF}
{$ifdef ie4plus}
TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
{$ENDIF}
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;
{$ifdef ie3plus}
// custom draw item specs
TBCD_TICS = $0001;
TBCD_THUMB = $0002;
TBCD_CHANNEL = $0003;
{$ENDIF}
{$ENDIF} // trackbar
//====== DRAG LIST CONTROL ====================================================
{$IFNDEF NODRAGLIST}
TYPE
tagDRAGLISTINFO = Record
uNotification : UINT;
hWnd : HWND;
ptCursor : POINT;
END;
DRAGLISTINFO = tagDRAGLISTINFO;
LPDRAGLISTINFO = ^tagDRAGLISTINFO;
TDRAGLISTINFO = tagDRAGLISTINFO;
PDRAGLISTINFO = ^tagDRAGLISTINFO;
CONST
DL_BEGINDRAG = (WM_USER+133);
DL_DRAGGING = (WM_USER+134);
DL_DROPPED = (WM_USER+135);
DL_CANCELDRAG = (WM_USER+136);
DL_CURSORSET = 0;
DL_STOPCURSOR = 1;
DL_COPYCURSOR = 2;
DL_MOVECURSOR = 3;
DRAGLISTMSGSTRING = 'commctrl_DragListMsg'; // TEXT("commctrl_DragListMsg");
function MakeDragList(hLB:HWND):BOOL; external commctrldll name 'MakeDragList';
Procedure DrawInsert(handParent:HWND;hLB:HWND;nItem:cint); external commctrldll name 'DrawInsert';
function LBItemFromPt(hLB:HWND;pt:POINT;bAutoScroll:BOOL):cint; external commctrldll name 'LBItemFromPt';
{$ENDIF}
//====== UPDOWN CONTROL =======================================================
{$IFNDEF NOUPDOWN}
CONST
{$IFDEF _WIN32}
UPDOWN_CLASSA = 'msctls_updown32';
UPDOWN_CLASSW = {L}'msctls_updown32';
{$IFDEF UNICODE}
UPDOWN_CLASS = UPDOWN_CLASSW;
{$ELSE}
UPDOWN_CLASS = UPDOWN_CLASSA;
{$ENDIF}
{$ELSE}
UPDOWN_CLASS = 'msctls_updown';
{$ENDIF}
TYPE
_UDACCEL = Record
nSec : UINT;
nInc : UINT;
END;
UDACCEL = _UDACCEL;
LPUDACCEL = ^_UDACCEL;
TUDACCEL = _UDACCEL;
PUDACCEL = ^_UDACCEL;
CONST
UD_MAXVAL = $7fff;
UD_MINVAL = (-UD_MAXVAL);
// begin_r_commctrl
UDS_WRAP = $0001;
UDS_SETBUDDYINT = $0002;
UDS_ALIGNRIGHT = $0004;
UDS_ALIGNLEFT = $0008;
UDS_AUTOBUDDY = $0010;
UDS_ARROWKEYS = $0020;
UDS_HORZ = $0040;
UDS_NOTHOUSANDS = $0080;
{$ifdef ie3plus}
UDS_HOTTRACK = $0100;
{$ENDIF}
// end_r_commctrl
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);
{$ifdef ie4plus}
UDM_SETRANGE32 = (WM_USER+111);
UDM_GETRANGE32 = (WM_USER+112); // wParam & lParam are LPINT
UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
{$ENDIF}
{$ifdef ie5plus}
UDM_SETPOS32 = (WM_USER+113);
UDM_GETPOS32 = (WM_USER+114);
{$ENDIF}
function CreateUpDownControl(dwStyle:DWORD;x:cint;y:cint;cx:cint;cy:cint;hParent:HWND;nID:cint;hInst:HINST;hBuddy:HWND;nUpper:cint;nLower:cint;nPos:cint):HWND; external commctrldll name 'CreateUpDownControl';
TYPE
_NM_UPDOWN = Record
hdr : NMHDR;
iPos : cint;
iDelta : cint;
END;
NMUPDOWN = _NM_UPDOWN;
LPNMUPDOWN = ^_NM_UPDOWN;
TNM_UPDOWN = _NM_UPDOWN;
PNM_UPDOWN = ^_NM_UPDOWN;
{$ifdef ie3plus}
NM_UPDOWN = NMUPDOWN;
LPNM_UPDOWN = LPNMUPDOWN;
{$ELSE}
NMUPDOWN = NM_UPDOWN;
LPNMUPDOWN = LPNM_UPDOWN;
{$ENDIF}
CONST
UDN_DELTAPOS = (UDN_FIRST - 1);
{$ENDIF} // NOUPDOWN
//====== PROGRESS CONTROL =====================================================
{$IFNDEF NOPROGRESS}
CONST
{$IFDEF _WIN32}
PROGRESS_CLASSA = 'msctls_progress32';
PROGRESS_CLASSW = {L}'msctls_progress32';
{$IFDEF UNICODE}
PROGRESS_CLASS = PROGRESS_CLASSW;
{$ELSE}
PROGRESS_CLASS = PROGRESS_CLASSA;
{$ENDIF}
{$ELSE}
PROGRESS_CLASS = 'msctls_progress';
{$ENDIF}
// begin_r_commctrl
{$ifdef ie3plus}
PBS_SMOOTH = $01;
PBS_VERTICAL = $04;
{$ENDIF}
// end_r_commctrl
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);
{$ifdef ie3plus}
PBM_SETRANGE32 = (WM_USER+6); // lParam = high, wParam = low
TYPE
PBRANGE = Record
iLow : cint;
iHigh : cint;
END;
PPBRANGE = ^PBRANGE;
TPBRANGE = PBRANGE;
// PPBRANGE = ^PBRANGE;
CONST
PBM_GETRANGE = (WM_USER+7); // wParam = return (TRUE ? low : high). lParam = PPBRANGE or NULL
PBM_GETPOS = (WM_USER+8);
{$ifdef ie4plus}
PBM_SETBARCOLOR = (WM_USER+9); // lParam = bar color
{$ENDIF} // _WIN32_IE >= 0x0400
PBM_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
{$ENDIF} // _WIN32_IE >= 0x0300
{$ENDIF} // NOPROGRESS
//====== HOTKEY CONTROL =======================================================
{$IFNDEF NOHOTKEY}
HOTKEYF_SHIFT = $01;
HOTKEYF_CONTROL = $02;
HOTKEYF_ALT = $04;
{$IFDEF _MAC}
HOTKEYF_EXT = $80;
{$ELSE}
HOTKEYF_EXT = $08;
{$ENDIF}
HKCOMB_NONE = $0001;
HKCOMB_S = $0002;
HKCOMB_C = $0004;
HKCOMB_A = $0008;
HKCOMB_SC = $0010;
HKCOMB_SA = $0020;
HKCOMB_CA = $0040;
HKCOMB_SCA = $0080;
HKM_SETHOTKEY = (WM_USER+1);
HKM_GETHOTKEY = (WM_USER+2);
HKM_SETRULES = (WM_USER+3);
{$IFDEF _WIN32}
HOTKEY_CLASSA = 'msctls_hotkey32';
HOTKEY_CLASSW = {L}'msctls_hotkey32';
{$IFDEF UNICODE}
HOTKEY_CLASS = HOTKEY_CLASSW;
{$ELSE}
HOTKEY_CLASS = HOTKEY_CLASSA;
{$ENDIF}
{$ELSE}
HOTKEY_CLASS = 'msctls_hotkey';
{$ENDIF}
{$ENDIF} // NOHOTKEY
// begin_r_commctrl
//====== COMMON CONTROL STYLES ================================================
CCS_TOP = DWORD($00000001){L};
CCS_NOMOVEY = DWORD($00000002){L};
CCS_BOTTOM = DWORD($00000003){L};
CCS_NORESIZE = DWORD($00000004){L};
CCS_NOPARENTALIGN = DWORD($00000008){L};
CCS_ADJUSTABLE = DWORD($00000020){L};
CCS_NODIVIDER = DWORD($00000040){L};
{$ifdef ie3plus}
CCS_VERT = DWORD($00000080){L};
CCS_LEFT = (CCS_VERT OR CCS_TOP);
CCS_RIGHT = (CCS_VERT OR CCS_BOTTOM);
CCS_NOMOVEX = (CCS_VERT OR CCS_NOMOVEY);
{$ENDIF}
// end_r_commctrl
//====== LISTVIEW CONTROL =====================================================
{$IFNDEF NOLISTVIEW}
{$IFDEF _WIN32}
WC_LISTVIEWA = 'SysListView32';
WC_LISTVIEWW = {L}'SysListView32';
{$IFDEF UNICODE}
WC_LISTVIEW = WC_LISTVIEWW;
{$ELSE}
WC_LISTVIEW = WC_LISTVIEWA;
{$ENDIF}
{$ELSE}
WC_LISTVIEW = 'SysListView';
{$ENDIF}
// begin_r_commctrl
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;
{$ifdef ie3plus}
LVS_OWNERDATA = $1000;
{$ENDIF}
LVS_NOSCROLL = $2000;
LVS_TYPESTYLEMASK = $fc00;
LVS_ALIGNTOP = $0000;
LVS_ALIGNLEFT = $0800;
LVS_ALIGNMASK = $0c00;
LVS_OWNERDRAWFIXED = $0400;
LVS_NOCOLUMNHEADER = $4000;
LVS_NOSORTHEADER = $8000;
// end_r_commctrl
{$ifdef ie4plus}
LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
// Macro 38
Function ListView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
CONST
LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
// Macro 39
Function ListView_GetUnicodeFormat( hwnd : hwnd):BOOL;
{$ENDIF}
CONST
LVM_GETBKCOLOR = (LVM_FIRST + 0);
// Macro 40
Function ListView_GetBkColor( hwnd : hwnd):COLORREF;
CONST
LVM_SETBKCOLOR = (LVM_FIRST + 1);
// Macro 41
Function ListView_SetBkColor( hwnd : hwnd; clrBk : COLORREF):BOOL;
CONST
LVM_GETIMAGELIST = (LVM_FIRST + 2);
// Macro 42
Function ListView_GetImageList( hwnd : hwnd; iImageList : CINT):HIMAGELIST;
CONST
LVSIL_NORMAL = 0;
LVSIL_SMALL = 1;
LVSIL_STATE = 2;
LVM_SETIMAGELIST = (LVM_FIRST + 3);
// Macro 43
Function ListView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImageList : WPARAM):HIMAGELIST;
CONST
LVM_GETITEMCOUNT = (LVM_FIRST + 4);
// Macro 44
Function ListView_GetItemCount( hwnd : hwnd):cint;
CONST
LVIF_TEXT = $0001;
LVIF_IMAGE = $0002;
LVIF_PARAM = $0004;
LVIF_STATE = $0008;
{$ifdef ie3plus}
LVIF_INDENT = $0010;
LVIF_NORECOMPUTE = $0800;
{$ENDIF}
{$ifdef win32xp}
LVIF_GROUPID = $0100;
LVIF_COLUMNS = $0200;
{$ENDIF}
LVIS_FOCUSED = $0001;
LVIS_SELECTED = $0002;
LVIS_CUT = $0004;
LVIS_DROPHILITED = $0008;
LVIS_GLOW = $0010;
LVIS_ACTIVATING = $0020;
LVIS_OVERLAYMASK = $0F00;
LVIS_STATEIMAGEMASK = $F000;
// Macro 45
// #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
CONST
I_INDENTCALLBACK = (-1);
{$ENDIF}
{$ifdef win32xp}
CONST
I_GROUPIDCALLBACK = (-1);
I_GROUPIDNONE = (-2);
{$ENDIF}
// #define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA, lParam)
// #define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW, lParam)
TYPE
tagLVITEMA = Record
mask : UINT;
iItem : cint;
iSubItem : cint;
state : UINT;
stateMask : UINT;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
{$ifdef ie3plus}
iIndent : cint;
{$ENDIF}
{$ifdef win32xp}
iGroupId : cint;
cColumns : UINT; // tile view columns
puColumns : PUINT;
{$ENDIF}
END;
LVITEMA = tagLVITEMA;
LPLVITEMA = ^tagLVITEMA;
TLVITEMA = tagLVITEMA;
PLVITEMA = ^tagLVITEMA;
tagLVITEMW = Record
mask : UINT;
iItem : cint;
iSubItem : cint;
state : UINT;
stateMask : UINT;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
{$ifdef ie3plus}
iIndent : cint;
{$ENDIF}
{$ifdef win32xp}
iGroupId : cint;
cColumns : UINT; // tile view columns
puColumns : PUINT;
{$ENDIF}
END;
LVITEMW = tagLVITEMW;
LPLVITEMW = ^tagLVITEMW;
TLVITEMW = tagLVITEMW;
PLVITEMW = ^tagLVITEMW;
{$IFDEF UNICODE}
LVITEM = LVITEMW;
LPLVITEM = LPLVITEMW;
// LVITEM_V1_SIZE = LVITEMW_V1_SIZE;
{$ELSE}
TYPE
LVITEM = LVITEMA;
LPLVITEM = LPLVITEMA;
// LVITEM_V1_SIZE = LVITEMA_V1_SIZE;
{$ENDIF}
Type
{$ifdef ie3plus}
LV_ITEMA = LVITEMA;
LV_ITEMW = LVITEMW;
{$ELSE}
tagLVITEMA = _LV_ITEMA;
LVITEMA = LV_ITEMA;
tagLVITEMW = _LV_ITEMW;
LVITEMW = LV_ITEMW;
{$ENDIF}
LV_ITEM = LVITEM;
CONST
LPSTR_TEXTCALLBACKW = LPWSTR(-1);
LPSTR_TEXTCALLBACKA = LPSTR (-1);
{$IFDEF UNICODE}
LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
{$ELSE}
LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
{$ENDIF}
CONST
I_IMAGECALLBACK = (-1);
{$ifdef ie501plus}
I_IMAGENONE = (-2);
{$ENDIF} // 0x0501
{$ifdef win32xp}
// For tileview
I_COLUMNSCALLBACK = UINT(-1);
{$ENDIF}
LVM_GETITEMA = (LVM_FIRST + 5);
LVM_GETITEMW = (LVM_FIRST + 75);
{$IFDEF UNICODE}
LVM_GETITEM = LVM_GETITEMW;
{$ELSE}
LVM_GETITEM = LVM_GETITEMA;
{$ENDIF}
// Macro 46
Function ListView_GetItem( hwnd : hwnd;var pitem : LV_ITEM ):BOOL;
CONST
LVM_SETITEMA = (LVM_FIRST + 6);
LVM_SETITEMW = (LVM_FIRST + 76);
{$IFDEF UNICODE}
LVM_SETITEM = LVM_SETITEMW;
{$ELSE}
LVM_SETITEM = LVM_SETITEMA;
{$ENDIF}
// Macro 47
Function ListView_SetItem( hwnd : hwnd;const pitem : LV_ITEM ):BOOL;
CONST
LVM_INSERTITEMA = (LVM_FIRST + 7);
LVM_INSERTITEMW = (LVM_FIRST + 77);
{$IFDEF UNICODE}
LVM_INSERTITEM = LVM_INSERTITEMW;
{$ELSE}
LVM_INSERTITEM = LVM_INSERTITEMA;
{$ENDIF}
// Macro 48
Function ListView_InsertItem( hwnd : hwnd;Const pitem : LV_ITEM ):cint;
CONST
LVM_DELETEITEM = (LVM_FIRST + 8);
// Macro 49
Function ListView_DeleteItem( hwnd : hwnd; i : cint):BOOL;
CONST
LVM_DELETEALLITEMS = (LVM_FIRST + 9);
// Macro 50
Function ListView_DeleteAllItems( hwnd : hwnd):BOOL;
CONST
LVM_GETCALLBACKMASK = (LVM_FIRST + 10);
// Macro 51
Function ListView_GetCallbackMask( hwnd : hwnd):BOOL;
CONST
LVM_SETCALLBACKMASK = (LVM_FIRST + 11);
// Macro 52
Function ListView_SetCallbackMask( hwnd : hwnd; mask : UINT):BOOL;
CONST
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;
LVM_GETNEXTITEM = (LVM_FIRST + 12);
// Macro 53
Function ListView_GetNextItem( hwnd : hwnd; i : cint; flags : cint ):cint;
CONST
LVFI_PARAM = $0001;
LVFI_STRING = $0002;
LVFI_PARTIAL = $0008;
LVFI_WRAP = $0020;
LVFI_NEARESTXY = $0040;
TYPE
tagLVFINDINFOA = Record
flags : UINT;
psz : LPCSTR;
lParam : LPARAM;
pt : POINT;
vkDirection : UINT;
END;
LVFINDINFOA = tagLVFINDINFOA;
LPFINDINFOA = ^tagLVFINDINFOA;
TLVFINDINFOA = tagLVFINDINFOA;
PLVFINDINFOA = ^tagLVFINDINFOA;
tagLVFINDINFOW = Record
flags : UINT;
psz : LPCWSTR;
lParam : LPARAM;
pt : POINT;
vkDirection : UINT;
END;
LVFINDINFOW = tagLVFINDINFOW;
LPFINDINFOW = ^tagLVFINDINFOW;
TLVFINDINFOW = tagLVFINDINFOW;
PLVFINDINFOW = ^tagLVFINDINFOW;
{$IFDEF UNICODE}
LVFINDINFO = LVFINDINFOW;
{$ELSE}
LVFINDINFO = LVFINDINFOA;
{$ENDIF}
{$ifdef ie3plus}
LV_FINDINFOA = LVFINDINFOA;
LV_FINDINFOW = LVFINDINFOW;
{$ELSE}
tagLVFINDINFOA = _LV_FINDINFOA;
LVFINDINFOA = LV_FINDINFOA;
tagLVFINDINFOW = _LV_FINDINFOW;
LVFINDINFOW = LV_FINDINFOW;
{$ENDIF}
LV_FINDINFO = LVFINDINFO;
CONST
LVM_FINDITEMA = (LVM_FIRST + 13);
LVM_FINDITEMW = (LVM_FIRST + 83);
{$IFDEF UNICODE}
LVM_FINDITEM = LVM_FINDITEMW;
{$ELSE}
LVM_FINDITEM = LVM_FINDITEMA;
{$ENDIF}
// Macro 54
Function ListView_FindItem( hwnd : hwnd; iStart : cint;const plvfi : LV_FINDINFO ):cint;
CONST
LVIR_BOUNDS = 0;
LVIR_ICON = 1;
LVIR_LABEL = 2;
LVIR_SELECTBOUNDS = 3;
LVM_GETITEMRECT = (LVM_FIRST + 14);
// Macro 55 NI
// Function ListView_GetItemRect( hwnd : hwnd; i : cint;prc {!};code {!}):BOOL;
CONST
LVM_SETITEMPOSITION = (LVM_FIRST + 15);
// Macro 56
Function ListView_SetItemPosition( hwndLV : hwnd; i : cint; x : cint ; y : cint ):BOOL;
CONST
LVM_GETITEMPOSITION = (LVM_FIRST + 16);
// Macro 57
Function ListView_GetItemPosition( hwndLV : hwnd; i : cint;var ppt : POINT ):BOOL;
CONST
LVM_GETSTRINGWIDTHA = (LVM_FIRST + 17);
LVM_GETSTRINGWIDTHW = (LVM_FIRST + 87);
{$IFDEF UNICODE}
LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
{$ELSE}
LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
{$ENDIF}
// Macro 58
Function ListView_GetStringWidth( hwndLV : hwnd; psz : LPCTSTR):cint;
CONST
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;
// #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO, iItem)
TYPE
tagLVHITTESTINFO = Record
pt : POINT;
flags : UINT;
iItem : cint;
{$ifdef ie3plus}
iSubItem : cint; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
{$ENDIF}
END;
LVHITTESTINFO = tagLVHITTESTINFO;
LPLVHITTESTINFO = ^tagLVHITTESTINFO;
TLVHITTESTINFO = tagLVHITTESTINFO;
PLVHITTESTINFO = ^tagLVHITTESTINFO;
{$ifdef ie3plus}
LV_HITTESTINFO = LVHITTESTINFO;
{$ELSE}
tagLVHITTESTINFO = _LV_HITTESTINFO;
LVHITTESTINFO = LV_HITTESTINFO;
{$ENDIF}
CONST
LVM_HITTEST = (LVM_FIRST + 18);
// Macro 59
Function ListView_HitTest( hwndLV : hwnd;var pinfo : LV_HITTESTINFO ):cint;
CONST
LVM_ENSUREVISIBLE = (LVM_FIRST + 19);
// Macro 60
Function ListView_EnsureVisible( hwndLV : hwnd; i : cint; fPartialOK : cint ):BOOL;
CONST
LVM_SCROLL = (LVM_FIRST + 20);
// Macro 61
Function ListView_Scroll( hwndLV : hwnd; dx : cint; dy : cint):BOOL;
CONST
LVM_REDRAWITEMS = (LVM_FIRST + 21);
// Macro 62
Function ListView_RedrawItems( hwndLV : hwnd; iFirst : cint; iLast : cint):BOOL;
CONST
LVA_DEFAULT = $0000;
LVA_ALIGNLEFT = $0001;
LVA_ALIGNTOP = $0002;
LVA_SNAPTOGRID = $0005;
LVM_ARRANGE = (LVM_FIRST + 22);
// Macro 63
Function ListView_Arrange( hwndLV : hwnd; code : UINT):BOOL;
CONST
LVM_EDITLABELA = (LVM_FIRST + 23);
LVM_EDITLABELW = (LVM_FIRST + 118);
{$IFDEF UNICODE}
LVM_EDITLABEL = LVM_EDITLABELW;
{$ELSE}
LVM_EDITLABEL = LVM_EDITLABELA;
{$ENDIF}
// Macro 64
Function ListView_EditLabel( hwndLV : hwnd; i : cint):HWND;
CONST
LVM_GETEDITCONTROL = (LVM_FIRST + 24);
// Macro 65
Function ListView_GetEditControl( hwndLV : hwnd):HWND;
// #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
// #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
TYPE
tagLVCOLUMNA = Record
mask : UINT;
fmt : cint;
cx : cint;
pszText : LPSTR;
cchTextMax : cint;
iSubItem : cint;
{$ifdef ie3plus}
iImage : cint;
iOrder : cint;
{$ENDIF}
END;
LVCOLUMNA = tagLVCOLUMNA;
LPLVCOLUMNA = ^tagLVCOLUMNA;
TLVCOLUMNA = tagLVCOLUMNA;
PLVCOLUMNA = ^tagLVCOLUMNA;
tagLVCOLUMNW = Record
mask : UINT;
fmt : cint;
cx : cint;
pszText : LPWSTR;
cchTextMax : cint;
iSubItem : cint;
{$ifdef ie3plus}
iImage : cint;
iOrder : cint;
{$ENDIF}
END;
LVCOLUMNW = tagLVCOLUMNW;
LPLVCOLUMNW = ^tagLVCOLUMNW;
TLVCOLUMNW = tagLVCOLUMNW;
PLVCOLUMNW = ^tagLVCOLUMNW;
{$IFDEF UNICODE}
LVCOLUMN = LVCOLUMNW;
LPLVCOLUMN = LPLVCOLUMNW;
// LVCOLUMN_V1_SIZE = LVCOLUMNW_V1_SIZE;
{$ELSE}
LVCOLUMN = LVCOLUMNA;
LPLVCOLUMN = LPLVCOLUMNA;
// LVCOLUMN_V1_SIZE = LVCOLUMNA_V1_SIZE;
{$ENDIF}
{$ifdef ie3plus}
LV_COLUMNA = LVCOLUMNA;
LV_COLUMNW = LVCOLUMNW;
{$ELSE}
tagLVCOLUMNA = _LV_COLUMNA;
LVCOLUMNA = LV_COLUMNA;
tagLVCOLUMNW = _LV_COLUMNW;
LVCOLUMNW = LV_COLUMNW;
{$ENDIF}
LV_COLUMN = LVCOLUMN;
CONST
LVCF_FMT = $0001;
LVCF_WIDTH = $0002;
LVCF_TEXT = $0004;
LVCF_SUBITEM = $0008;
{$ifdef ie3plus}
LVCF_IMAGE = $0010;
LVCF_ORDER = $0020;
{$ENDIF}
LVCFMT_LEFT = $0000;
LVCFMT_RIGHT = $0001;
LVCFMT_CENTER = $0002;
LVCFMT_JUSTIFYMASK = $0003;
{$ifdef ie3plus}
LVCFMT_IMAGE = $0800;
LVCFMT_BITMAP_ON_RIGHT = $1000;
LVCFMT_COL_HAS_IMAGES = $8000;
{$ENDIF}
LVM_GETCOLUMNA = (LVM_FIRST + 25);
LVM_GETCOLUMNW = (LVM_FIRST + 95);
{$IFDEF UNICODE}
LVM_GETCOLUMN = LVM_GETCOLUMNW;
{$ELSE}
LVM_GETCOLUMN = LVM_GETCOLUMNA;
{$ENDIF}
// Macro 66
Function ListView_GetColumn( hwnd : hwnd; iCol : cint;var pcol : LV_COLUMN ):BOOL;
CONST
LVM_SETCOLUMNA = (LVM_FIRST + 26);
LVM_SETCOLUMNW = (LVM_FIRST + 96);
{$IFDEF UNICODE}
LVM_SETCOLUMN = LVM_SETCOLUMNW;
{$ELSE}
LVM_SETCOLUMN = LVM_SETCOLUMNA;
{$ENDIF}
// Macro 67
Function ListView_SetColumn( hwnd : hwnd; iCol : cint;Const pcol : LV_COLUMN ):BOOL;
CONST
LVM_INSERTCOLUMNA = (LVM_FIRST + 27);
LVM_INSERTCOLUMNW = (LVM_FIRST + 97);
{$IFDEF UNICODE} // was already not active (spaces) in .h
// # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
{$ELSE}
// # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
{$ENDIF}
// Macro 68
Function ListView_InsertColumn( hwnd : hwnd; iCol : cint;Const pcol : LV_COLUMN ):cint;
CONST
LVM_DELETECOLUMN = (LVM_FIRST + 28);
// Macro 69
Function ListView_DeleteColumn( hwnd : hwnd; iCol : cint):BOOL;
CONST
LVM_GETCOLUMNWIDTH = (LVM_FIRST + 29);
// Macro 70
Function ListView_GetColumnWidth( hwnd : hwnd; iCol : cint):cint;
CONST
LVSCW_AUTOSIZE = -1;
LVSCW_AUTOSIZE_USEHEADER = -2;
LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30);
// Macro 71
Function ListView_SetColumnWidth( hwnd : hwnd; iCol : cint; cx : cint ):BOOL;
{$ifdef ie3plus}
CONST
LVM_GETHEADER = (LVM_FIRST + 31);
// Macro 72
Function ListView_GetHeader( hwnd : hwnd):HWND;
{$ENDIF}
CONST
LVM_CREATEDRAGIMAGE = (LVM_FIRST + 33);
// Macro 73
Function ListView_CreateDragImage( hwnd : hwnd; i : cint; lpptUpLeft : LPPOINT):HIMAGELIST;
CONST
LVM_GETVIEWRECT = (LVM_FIRST + 34);
// Macro 74
Function ListView_GetViewRect( hwnd : hwnd;var prc : RECT ):BOOL;
CONST
LVM_GETTEXTCOLOR = (LVM_FIRST + 35);
// Macro 75
Function ListView_GetTextColor( hwnd : hwnd):COLORREF;
CONST
LVM_SETTEXTCOLOR = (LVM_FIRST + 36);
// Macro 76
Function ListView_SetTextColor( hwnd : hwnd; clrText : COLORREF):BOOL;
CONST
LVM_GETTEXTBKCOLOR = (LVM_FIRST + 37);
// Macro 77
Function ListView_GetTextBkColor( hwnd : hwnd):COLORREF;
CONST
LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38);
// Macro 78
Function ListView_SetTextBkColor( hwnd : hwnd; clrTextBk : COLORREF):BOOL;
CONST
LVM_GETTOPINDEX = (LVM_FIRST + 39);
// Macro 79
Function ListView_GetTopIndex( hwndLV : hwnd):cint;
CONST
LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40);
// Macro 80
Function ListView_GetCountPerPage( hwndLV : hwnd):cint;
CONST
LVM_GETORIGIN = (LVM_FIRST + 41);
// Macro 81
Function ListView_GetOrigin( hwndLV : hwnd;var ppt : POINT ):BOOL;
CONST
LVM_UPDATE = (LVM_FIRST + 42);
// Macro 82
Function ListView_Update( hwndLV : hwnd; i : WPARAM):BOOL;
CONST
LVM_SETITEMSTATE = (LVM_FIRST + 43);
// Macro 83
Procedure ListView_SetItemState(hwndLV :hwnd; i :cint ;data,mask:UINT);
{$ifdef ie3plus}
// Macro 84
Procedure ListView_SetCheckState( hwndLV : hwnd; i : cint ; fCheck : bool );
{$ENDIF}
CONST
LVM_GETITEMSTATE = (LVM_FIRST + 44);
// Macro 85
Function ListView_GetItemState( hwndLV : hwnd; i : WPARAM; mask : LPARAM):UINT;
{$ifdef ie3plus}
// Macro 86
Function ListView_GetCheckState( hwndLV : hwnd; i : WPARAM):UINT;
{$ENDIF}
CONST
LVM_GETITEMTEXTA = (LVM_FIRST + 45);
LVM_GETITEMTEXTW = (LVM_FIRST + 115);
{$IFDEF UNICODE}
LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
{$ELSE}
LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
{$ENDIF}
// Macro 87
Procedure ListView_GetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer;cchTextMax :cint);
CONST
LVM_SETITEMTEXTA = (LVM_FIRST + 46);
LVM_SETITEMTEXTW = (LVM_FIRST + 116);
{$IFDEF UNICODE}
LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
{$ELSE}
LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
{$ENDIF}
// Macro 88
Procedure ListView_SetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer);
{$ifdef ie3plus}
// these flags only apply to LVS_OWNERDATA listviews in report or list mode
CONST
LVSICF_NOINVALIDATEALL = $00000001;
LVSICF_NOSCROLL = $00000002;
{$ENDIF}
LVM_SETITEMCOUNT = (LVM_FIRST + 47);
// Macro 89
Procedure ListView_SetItemCount( hwndLV : hwnd; cItems : WPARAM);
{$ifdef ie3plus}
// Macro 90
Procedure ListView_SetItemCountEx( hwndLV : hwnd; cItems : WPARAM; dwFlags : LPARAM);
{$ENDIF}
TYPE
PFNLVCOMPARE=Function(a,b,c:LPARAM):cint;
CONST
LVM_SORTITEMS = (LVM_FIRST + 48);
// Macro 91
Function ListView_SortItems( hwndLV : hwnd;pfnCompare : PFNLVCOMPARE; lPrm : LPARAM):BOOL;
CONST
LVM_SETITEMPOSITION32 = (LVM_FIRST + 49);
// Macro 92
Procedure ListView_SetItemPosition32(hwndLV:hwnd; i:cint;x0,y0:long);
CONST
LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50);
// Macro 93
Function ListView_GetSelectedCount( hwndLV : hwnd):UINT;
CONST
LVM_GETITEMSPACING = (LVM_FIRST + 51);
// Macro 94
Function ListView_GetItemSpacing( hwndLV : hwnd; fSmall : cint ):DWORD;
CONST
LVM_GETISEARCHSTRINGA = (LVM_FIRST + 52);
LVM_GETISEARCHSTRINGW = (LVM_FIRST + 117);
{$IFDEF UNICODE}
LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
{$ELSE}
LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
{$ENDIF}
// Macro 95
Function ListView_GetISearchString( hwndLV : hwnd; lpsz : LPTSTR):BOOL;
{$ifdef ie3plus}
CONST
LVM_SETICONSPACING = (LVM_FIRST + 53);
// -1 for cx and cy means we'll use the default (system settings)
// 0 for cx or cy means use the current setting (allows you to change just one param)
// Macro 96
Function ListView_SetIconSpacing( hwndLV : hwnd; cx, cy : cint ):DWORD;
CONST
LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54); // optional wParam == mask
// Macro 97
Function ListView_SetExtendedListViewStyle( hwndLV : hwnd; dw : cint ):DWORD;
{$ifdef ie4plus}
// Macro 98
Function ListView_SetExtendedListViewStyleEx( hwndLV : hwnd; dwMask, dw : cint ):DWORD;
{$ENDIF}
CONST
LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55);
// Macro 99
Function ListView_GetExtendedListViewStyle( hwndLV : hwnd):DWORD;
CONST
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;
{$ifdef ie4plus}
LVS_EX_FLATSB = $00000100;
LVS_EX_REGIONAL = $00000200;
LVS_EX_INFOTIP = $00000400; // listview does InfoTips for you
LVS_EX_UNDERLINEHOT = $00000800;
LVS_EX_UNDERLINECOLD = $00001000;
LVS_EX_MULTIWORKAREAS = $00002000;
{$ENDIF}
{$ifdef ie5plus}
LVS_EX_LABELTIP = $00004000; // listview unfolds partly hidden labels if it does not have infotip text
LVS_EX_BORDERSELECT = $00008000; // border selection style instead of highlight
{$ENDIF} // End (_WIN32_IE >= 0x0500)
{$ifdef win32xp}
LVS_EX_DOUBLEBUFFER = $00010000;
LVS_EX_HIDELABELS = $00020000;
LVS_EX_SINGLEROW = $00040000;
LVS_EX_SNAPTOGRID = $00080000; // Icons automatically snap to grid.
LVS_EX_SIMPLESELECT = $00100000; // Also changes overlay rendering to top right for icon mode.
{$ENDIF}
LVM_GETSUBITEMRECT = (LVM_FIRST + 56);
// Macro 100
Function ListView_GetSubItemRect( hwnd : hwnd; iItem : cint;iSubItem, code :cint ;prc:LPRECT):BOOL;
CONST
LVM_SUBITEMHITTEST = (LVM_FIRST + 57);
// Macro 101
Function ListView_SubItemHitTest( hwnd : hwnd; plvhti : LPLVHITTESTINFO):cint;
CONST
LVM_SETCOLUMNORDERARRAY = (LVM_FIRST + 58);
// Macro 102
Function ListView_SetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
CONST
LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59);
// Macro 103
Function ListView_GetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
CONST
LVM_SETHOTITEM = (LVM_FIRST + 60);
// Macro 104
Function ListView_SetHotItem( hwnd : hwnd; i : WPARAM):cint;
CONST
LVM_GETHOTITEM = (LVM_FIRST + 61);
// Macro 105
Function ListView_GetHotItem( hwnd : hwnd):cint;
CONST
LVM_SETHOTCURSOR = (LVM_FIRST + 62);
// Macro 106
Function ListView_SetHotCursor( hwnd : hwnd; hcur : LPARAM):HCURSOR;
CONST
LVM_GETHOTCURSOR = (LVM_FIRST + 63);
// Macro 107
Function ListView_GetHotCursor( hwnd : hwnd):HCURSOR;
CONST
LVM_APPROXIMATEVIEWRECT = (LVM_FIRST + 64);
// Macro 108
Function ListView_ApproximateViewRect( hwnd : hwnd; iWidth, iHeight, iCount : cint ):DWORD;
{$ENDIF} // _WIN32_IE >= 0x0300
{$ifdef ie4plus}
CONST
LV_MAX_WORKAREAS = 16;
LVM_SETWORKAREAS = (LVM_FIRST + 65);
// Macro 109
Function ListView_SetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;
CONST
LVM_GETWORKAREAS = (LVM_FIRST + 70);
// Macro 110
Function ListView_GetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;
CONST
LVM_GETNUMBEROFWORKAREAS = (LVM_FIRST + 73);
// Macro 111
Function ListView_GetNumberOfWorkAreas( hwnd : hwnd;var pnWorkAreas : UINT ):BOOL;
CONST
LVM_GETSELECTIONMARK = (LVM_FIRST + 66);
// Macro 112
Function ListView_GetSelectionMark( hwnd : hwnd):cint;
CONST
LVM_SETSELECTIONMARK = (LVM_FIRST + 67);
// Macro 113
Function ListView_SetSelectionMark( hwnd : hwnd; i : LPARAM):cint;
CONST
LVM_SETHOVERTIME = (LVM_FIRST + 71);
// Macro 114
Function ListView_SetHoverTime( hwndLV : hwnd; dwHoverTimeMs : LPARAM):DWORD;
CONST
LVM_GETHOVERTIME = (LVM_FIRST + 72);
// Macro 115
Function ListView_GetHoverTime( hwndLV : hwnd):DWORD;
CONST
LVM_SETTOOLTIPS = (LVM_FIRST + 74);
// Macro 116
Function ListView_SetToolTips( hwndLV : hwnd; hwndNewHwnd : WPARAM):HWND;
CONST
LVM_GETTOOLTIPS = (LVM_FIRST + 78);
// Macro 117
Function ListView_GetToolTips( hwndLV : hwnd):HWND;
CONST
LVM_SORTITEMSEX = (LVM_FIRST + 81);
// Macro 118
Function ListView_SortItemsEx( hwndLV : hwnd; _pfnCompare : PFNLVCOMPARE; _lPrm : LPARAM):BOOL;
TYPE
tagLVBKIMAGEA = Record
ulFlags : ULONG; // LVBKIF_*
hbm : HBITMAP;
pszImage : LPSTR;
cchImageMax : UINT;
xOffsetPercent : cint;
yOffsetPercent : cint;
END;
LVBKIMAGEA = tagLVBKIMAGEA;
LPLVBKIMAGEA = ^tagLVBKIMAGEA;
TLVBKIMAGEA = tagLVBKIMAGEA;
PLVBKIMAGEA = ^tagLVBKIMAGEA;
tagLVBKIMAGEW = Record
ulFlags : ULONG; // LVBKIF_*
hbm : HBITMAP;
pszImage : LPWSTR;
cchImageMax : UINT;
xOffsetPercent : cint;
yOffsetPercent : cint;
END;
LVBKIMAGEW = tagLVBKIMAGEW;
LPLVBKIMAGEW = ^tagLVBKIMAGEW;
TLVBKIMAGEW = tagLVBKIMAGEW;
PLVBKIMAGEW = ^tagLVBKIMAGEW;
CONST
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;
{$ifdef win32xp}
LVBKIF_FLAG_TILEOFFSET = $00000100;
LVBKIF_TYPE_WATERMARK = $10000000;
{$ENDIF}
LVM_SETBKIMAGEA = (LVM_FIRST + 68);
LVM_SETBKIMAGEW = (LVM_FIRST + 138);
LVM_GETBKIMAGEA = (LVM_FIRST + 69);
LVM_GETBKIMAGEW = (LVM_FIRST + 139);
{$ifdef win32xp}
LVM_SETSELECTEDCOLUMN = (LVM_FIRST + 140);
// Macro 119
Procedure ListView_SetSelectedColumn( hwnd : hwnd; iCol : WPARAM);
CONST
LVM_SETTILEWIDTH = (LVM_FIRST + 141);
// Macro 120
Procedure ListView_SetTileWidth( hwnd : hwnd; cpWidth : WPARAM);
CONST
LV_VIEW_ICON = $0000;
LV_VIEW_DETAILS = $0001;
LV_VIEW_SMALLICON = $0002;
LV_VIEW_LIST = $0003;
LV_VIEW_TILE = $0004;
LV_VIEW_MAX = $0004;
LVM_SETVIEW = (LVM_FIRST + 142);
// Macro 121
Function ListView_SetView( hwnd : hwnd; iView : DWORD):DWORD;
CONST
LVM_GETVIEW = (LVM_FIRST + 143);
// Macro 122
Function ListView_GetView( hwnd : hwnd):DWORD;
CONST
LVGF_NONE = $00000000;
LVGF_HEADER = $00000001;
LVGF_FOOTER = $00000002;
LVGF_STATE = $00000004;
LVGF_ALIGN = $00000008;
LVGF_GROUPID = $00000010;
LVGS_NORMAL = $00000000;
LVGS_COLLAPSED = $00000001;
LVGS_HIDDEN = $00000002;
LVGA_HEADER_LEFT = $00000001;
LVGA_HEADER_CENTER = $00000002;
LVGA_HEADER_RIGHT = $00000004; // Don't forget to validate exclusivity
LVGA_FOOTER_LEFT = $00000008;
LVGA_FOOTER_CENTER = $00000010;
LVGA_FOOTER_RIGHT = $00000020; // Don't forget to validate exclusivity
TYPE
tagLVGROUP = Record
cbSize : UINT;
mask : UINT;
pszHeader : LPWSTR;
cchHeader : cint;
pszFooter : LPWSTR;
cchFooter : cint;
iGroupId : cint;
stateMask : UINT;
state : UINT;
uAlign : UINT;
END;
LVGROUP = tagLVGROUP;
PLVGROUP = ^tagLVGROUP;
TLVGROUP = tagLVGROUP;
CONST
LVM_INSERTGROUP = (LVM_FIRST + 145);
// Macro 123
Procedure ListView_InsertGroup( hwnd : hwnd; index : WPARAM; pgrp : LPARAM);
CONST
LVM_SETGROUPINFO = (LVM_FIRST + 147);
// Macro 124
Procedure ListView_SetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
CONST
LVM_GETGROUPINFO = (LVM_FIRST + 149);
// Macro 125
Procedure ListView_GetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
CONST
LVM_REMOVEGROUP = (LVM_FIRST + 150);
// Macro 126
Procedure ListView_RemoveGroup( hwnd : hwnd; iGroupId : WPARAM);
CONST
LVM_MOVEGROUP = (LVM_FIRST + 151);
// Macro 127
Procedure ListView_MoveGroup( hwnd : hwnd; iGroupId : WPARAM; toIndex : LPARAM);
CONST
LVM_MOVEITEMTOGROUP = (LVM_FIRST + 154);
// Macro 128
Procedure ListView_MoveItemToGroup( hwnd : hwnd; idItemFrom : WPARAM; idGroupTo : LPARAM);
CONST
LVGMF_NONE = $00000000;
LVGMF_BORDERSIZE = $00000001;
LVGMF_BORDERCOLOR = $00000002;
LVGMF_TEXTCOLOR = $00000004;
TYPE
tagLVGROUPMETRICS = Record
cbSize : UINT;
mask : UINT;
Left : UINT;
Top : UINT;
Right : UINT;
Bottom : UINT;
crLeft : COLORREF;
crTop : COLORREF;
crRight : COLORREF;
crBottom : COLORREF;
crHeader : COLORREF;
crFooter : COLORREF;
END;
LVGROUPMETRICS = tagLVGROUPMETRICS;
PLVGROUPMETRICS = ^tagLVGROUPMETRICS;
TLVGROUPMETRICS = tagLVGROUPMETRICS;
CONST
LVM_SETGROUPMETRICS = (LVM_FIRST + 155);
// Macro 129
Procedure ListView_SetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
CONST
LVM_GETGROUPMETRICS = (LVM_FIRST + 156);
// Macro 130
Procedure ListView_GetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
CONST
LVM_ENABLEGROUPVIEW = (LVM_FIRST + 157);
// Macro 131
Procedure ListView_EnableGroupView( hwnd : hwnd; fEnable : WPARAM);
TYPE
PFNLVGROUPCOMPARE = function(i,j:cint;k:pointer):cint; StdCall;
CONST
LVM_SORTGROUPS = (LVM_FIRST + 158);
// Macro 132
Procedure ListView_SortGroups( hwnd : hwnd; _pfnGroupCompate : WPARAM; _plv : LPARAM);
TYPE
tagLVINSERTGROUPSORTED = Record
pfnGroupCompare : PFNLVGROUPCOMPARE;
pvData : Pointer;
lvGroup : LVGROUP;
END;
LVINSERTGROUPSORTED = tagLVINSERTGROUPSORTED;
PLVINSERTGROUPSORTED = ^tagLVINSERTGROUPSORTED;
TLVINSERTGROUPSORTED = tagLVINSERTGROUPSORTED;
CONST
LVM_INSERTGROUPSORTED = (LVM_FIRST + 159);
// Macro 133
Procedure ListView_InsertGroupSorted( hwnd : hwnd; structInsert : WPARAM);
CONST
LVM_REMOVEALLGROUPS = (LVM_FIRST + 160);
// Macro 134
Procedure ListView_RemoveAllGroups( hwnd : hwnd);
CONST
LVM_HASGROUP = (LVM_FIRST + 161);
// Macro 135
Procedure ListView_HasGroup( hwnd : hwnd; dwGroupId : DWORD );
CONST
LVTVIF_AUTOSIZE = $00000000;
LVTVIF_FIXEDWIDTH = $00000001;
LVTVIF_FIXEDHEIGHT = $00000002;
LVTVIF_FIXEDSIZE = $00000003;
LVTVIM_TILESIZE = $00000001;
LVTVIM_COLUMNS = $00000002;
LVTVIM_LABELMARGIN = $00000004;
TYPE
tagLVTILEVIEWINFO = Record
cbSize : UINT;
dwMask : DWORD; //LVTVIM_*
dwFlags : DWORD; //LVTVIF_*
sizeTile : SIZE;
cLines : cint;
rcLabelMargin : RECT;
END;
LVTILEVIEWINFO = tagLVTILEVIEWINFO;
PLVTILEVIEWINFO = ^tagLVTILEVIEWINFO;
TLVTILEVIEWINFO = tagLVTILEVIEWINFO;
tagLVTILEINFO = Record
cbSize : UINT;
iItem : cint;
cColumns : UINT;
puColumns : PUINT;
END;
LVTILEINFO = tagLVTILEINFO;
PLVTILEINFO = ^tagLVTILEINFO;
TLVTILEINFO = tagLVTILEINFO;
CONST
LVM_SETTILEVIEWINFO = (LVM_FIRST + 162);
// Macro 136
Procedure ListView_SetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
CONST
LVM_GETTILEVIEWINFO = (LVM_FIRST + 163);
// Macro 137
Procedure ListView_GetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
CONST
LVM_SETTILEINFO = (LVM_FIRST + 164);
// Macro 138
Procedure ListView_SetTileInfo( hwnd : hwnd; pti : LPARAM);
CONST
LVM_GETTILEINFO = (LVM_FIRST + 165);
// Macro 139
Procedure ListView_GetTileInfo( hwnd : hwnd; pti : LPARAM);
TYPE
LVINSERTMARK = Record
cbSize : UINT;
dwFlags : DWORD;
iItem : cint;
dwReserved : DWORD;
END;
LPLVINSERTMARK = ^LVINSERTMARK;
TLVINSERTMARK = LVINSERTMARK;
PLVINSERTMARK = ^LVINSERTMARK;
CONST
LVIM_AFTER = $00000001; // TRUE = insert After iItem, otherwise before
LVM_SETINSERTMARK = (LVM_FIRST + 166);
// Macro 140
Function ListView_SetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
CONST
LVM_GETINSERTMARK = (LVM_FIRST + 167);
// Macro 141
Function ListView_GetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
CONST
LVM_INSERTMARKHITTEST = (LVM_FIRST + 168);
// Macro 142
Function ListView_InsertMarkHitTest( hwnd : hwnd; point : LPPOINT; lvim : LPLVINSERTMARK):cint;
CONST
LVM_GETINSERTMARKRECT = (LVM_FIRST + 169);
// Macro 143
Function ListView_GetInsertMarkRect( hwnd : hwnd; rc : LPRECT):cint;
CONST
LVM_SETINSERTMARKCOLOR = (LVM_FIRST + 170);
// Macro 144
Function ListView_SetInsertMarkColor( hwnd : hwnd; color : COLORREF):COLORREF;
CONST
LVM_GETINSERTMARKCOLOR = (LVM_FIRST + 171);
// Macro 145
Function ListView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
TYPE
tagLVSETINFOTIP = Record
cbSize : UINT;
dwFlags : DWORD;
pszText : LPWSTR;
iItem : cint;
iSubItem : cint;
END;
LVSETINFOTIP = tagLVSETINFOTIP;
PLVSETINFOTIP = ^tagLVSETINFOTIP;
TLVSETINFOTIP = tagLVSETINFOTIP;
CONST
LVM_SETINFOTIP = (LVM_FIRST + 173);
// Macro 146
Function ListView_SetInfoTip( hwndLV : hwnd; plvInfoTip : LPARAM):BOOL;
CONST
LVM_GETSELECTEDCOLUMN = (LVM_FIRST + 174);
// Macro 147
Function ListView_GetSelectedColumn( hwnd : hwnd):UINT;
CONST
LVM_ISGROUPVIEWENABLED = (LVM_FIRST + 175);
// Macro 148
Function ListView_IsGroupViewEnabled( hwnd : hwnd):BOOL;
CONST
LVM_GETOUTLINECOLOR = (LVM_FIRST + 176);
// Macro 149
Function ListView_GetOutlineColor( hwnd : hwnd):COLORREF;
CONST
LVM_SETOUTLINECOLOR = (LVM_FIRST + 177);
// Macro 150
Function ListView_SetOutlineColor( hwnd : hwnd; color : COLORREF):COLORREF;
CONST
LVM_CANCELEDITLABEL = (LVM_FIRST + 179);
// Macro 151
Procedure ListView_CancelEditLabel( hwnd : hwnd);
// These next to methods make it easy to identify an item that can be repositioned
// within listview. For example: Many developers use the lParam to store an identifier that is
// unique. Unfortunatly, in order to find this item, they have to iterate through all of the items
// in the listview. Listview will maintain a unique identifier. The upper bound is the size of a DWORD.
CONST
LVM_MAPINDEXTOID = (LVM_FIRST + 180);
// Macro 152
Function ListView_MapIndexToID( hwnd : hwnd; index : WPARAM):UINT;
CONST
LVM_MAPIDTOINDEX = (LVM_FIRST + 181);
// Macro 153
Function ListView_MapIDToIndex( hwnd : hwnd; id : WPARAM):UINT;
{$ENDIF}
Type
{$IFDEF UNICODE}
LVBKIMAGE = LVBKIMAGEW;
LPLVBKIMAGE = LPLVBKIMAGEW;
CONST
LVM_SETBKIMAGE = LVM_SETBKIMAGEW;
LVM_GETBKIMAGE = LVM_GETBKIMAGEW;
{$ELSE}
LVBKIMAGE = LVBKIMAGEA;
LPLVBKIMAGE = LPLVBKIMAGEA;
CONST
LVM_SETBKIMAGE = LVM_SETBKIMAGEA;
LVM_GETBKIMAGE = LVM_GETBKIMAGEA;
{$ENDIF}
// Macro 154
Function ListView_SetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
// Macro 155
Function ListView_GetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
{$ENDIF} // _WIN32_IE >= 0x0400
TYPE
tagNMLISTVIEW = Record
hdr : NMHDR;
iItem : cint;
iSubItem : cint;
uNewState : UINT;
uOldState : UINT;
uChanged : UINT;
ptAction : POINT;
lParam : LPARAM;
END;
NMLISTVIEW = tagNMLISTVIEW;
LPNMLISTVIEW = ^tagNMLISTVIEW;
TNMLISTVIEW = tagNMLISTVIEW;
PNMLISTVIEW = ^tagNMLISTVIEW;
{$ifdef IE4plus}
// NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
// therefore all the fields are the same except for extra uKeyFlags
// they are used to store key flags at the time of the single click with
// delayed activation - because by the time the timer goes off a user may
// not hold the keys (shift, ctrl) any more
tagNMITEMACTIVATE = Record
hdr : NMHDR;
iItem : cint;
iSubItem : cint;
uNewState : UINT;
uOldState : UINT;
uChanged : UINT;
ptAction : POINT;
lParam : LPARAM;
uKeyFlags : UINT;
END;
NMITEMACTIVATE = tagNMITEMACTIVATE;
LPNMITEMACTIVATE = ^tagNMITEMACTIVATE;
TNMITEMACTIVATE = tagNMITEMACTIVATE;
PNMITEMACTIVATE = ^tagNMITEMACTIVATE;
// key flags stored in uKeyFlags
CONST
LVKF_ALT = $0001;
LVKF_CONTROL = $0002;
LVKF_SHIFT = $0004;
{$ENDIF} //(_WIN32_IE >= 0x0400)
Type
{$ifdef ie3plus}
LPNM_LISTVIEW = LPNMLISTVIEW;
NM_LISTVIEW = NMLISTVIEW;
{$ELSE}
tagNMLISTVIEW = _NM_LISTVIEW;
NMLISTVIEW = NM_LISTVIEW;
LPNMLISTVIEW = LPNM_LISTVIEW;
{$ENDIF}
{$ifdef ie3plus}
// #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW, clrTextBk)
TYPE
tagNMLVCUSTOMDRAW = Record
nmcd : NMCUSTOMDRAW;
clrText : COLORREF;
clrTextBk : COLORREF;
{$ifdef ie4plus}
iSubItem : cint;
{$ENDIF}
{$ifdef win32xp}
dwItemType : DWORD;
clrFace : COLORREF;
iIconEffect : cint;
iIconPhase : cint;
iPartId : cint;
iStateId : cint;
rcText : RECT;
uAlign : UINT; // Alignment. Use LVGA_HEADER_CENTER, LVGA_HEADER_RIGHT, LVGA_HEADER_LEFT
{$ENDIF}
END;
NMLVCUSTOMDRAW = tagNMLVCUSTOMDRAW;
LPNMLVCUSTOMDRAW = ^tagNMLVCUSTOMDRAW;
TNMLVCUSTOMDRAW = tagNMLVCUSTOMDRAW;
PNMLVCUSTOMDRAW = ^tagNMLVCUSTOMDRAW;
// dwItemType
CONST
LVCDI_ITEM = $00000000;
LVCDI_GROUP = $00000001;
// ListView custom draw return values
LVCDRF_NOSELECT = $00010000;
LVCDRF_NOGROUPFRAME = $00020000;
TYPE
tagNMLVCACHEHINT = Record
hdr : NMHDR;
iFrom : cint;
iTo : cint;
END;
NMLVCACHEHINT = tagNMLVCACHEHINT;
LPNMLVCACHEHINT = ^tagNMLVCACHEHINT;
TNMLVCACHEHINT = tagNMLVCACHEHINT;
PNMLVCACHEHINT = ^tagNMLVCACHEHINT;
LPNM_CACHEHINT = LPNMLVCACHEHINT;
PNM_CACHEHINT = LPNMLVCACHEHINT;
NM_CACHEHINT = NMLVCACHEHINT;
tagNMLVFINDITEMA = Record
hdr : NMHDR;
iStart : cint;
lvfi : LVFINDINFOA;
END;
NMLVFINDITEMA = tagNMLVFINDITEMA;
LPNMLVFINDITEMA = ^tagNMLVFINDITEMA;
TNMLVFINDITEMA = tagNMLVFINDITEMA;
PNMLVFINDITEMA = ^tagNMLVFINDITEMA;
tagNMLVFINDITEMW = Record
hdr : NMHDR;
iStart : cint;
lvfi : LVFINDINFOW;
END;
NMLVFINDITEMW = tagNMLVFINDITEMW;
LPNMLVFINDITEMW = ^tagNMLVFINDITEMW;
TNMLVFINDITEMW = tagNMLVFINDITEMW;
PNMLVFINDITEMW = ^tagNMLVFINDITEMW;
PNM_FINDITEMA = LPNMLVFINDITEMA;
LPNM_FINDITEMA = LPNMLVFINDITEMA;
NM_FINDITEMA = NMLVFINDITEMA;
PNM_FINDITEMW = LPNMLVFINDITEMW;
LPNM_FINDITEMW = LPNMLVFINDITEMW;
NM_FINDITEMW = NMLVFINDITEMW;
{$IFDEF UNICODE}
PNM_FINDITEM = PNM_FINDITEMW;
LPNM_FINDITEM = LPNM_FINDITEMW;
NM_FINDITEM = NM_FINDITEMW;
NMLVFINDITEM = NMLVFINDITEMW;
LPNMLVFINDITEM = LPNMLVFINDITEMW;
{$ELSE}
PNM_FINDITEM = PNM_FINDITEMA;
LPNM_FINDITEM = LPNM_FINDITEMA;
NM_FINDITEM = NM_FINDITEMA;
NMLVFINDITEM = NMLVFINDITEMA;
LPNMLVFINDITEM = LPNMLVFINDITEMA;
{$ENDIF}
tagNMLVODSTATECHANGE = Record
hdr : NMHDR;
iFrom : cint;
iTo : cint;
uNewState : UINT;
uOldState : UINT;
END;
NMLVODSTATECHANGE = tagNMLVODSTATECHANGE;
LPNMLVODSTATECHANGE = ^tagNMLVODSTATECHANGE;
TNMLVODSTATECHANGE = tagNMLVODSTATECHANGE;
PNMLVODSTATECHANGE = ^tagNMLVODSTATECHANGE;
PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
NM_ODSTATECHANGE = NMLVODSTATECHANGE;
{$ENDIF} // _WIN32_IE >= 0x0300
CONST
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_BEGINLABELEDITW = (LVN_FIRST-75);
LVN_ENDLABELEDITA = (LVN_FIRST-6);
LVN_ENDLABELEDITW = (LVN_FIRST-76);
LVN_COLUMNCLICK = (LVN_FIRST-8);
LVN_BEGINDRAG = (LVN_FIRST-9);
LVN_BEGINRDRAG = (LVN_FIRST-11);
{$ifdef ie3plus}
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);
Const
{$IFDEF UNICODE}
LVN_ODFINDITEM = LVN_ODFINDITEMW;
{$ELSE}
LVN_ODFINDITEM = LVN_ODFINDITEMA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0300
CONST
{$ifdef ie4plus}
LVN_HOTTRACK = (LVN_FIRST-21);
{$ENDIF}
LVN_GETDISPINFOA = (LVN_FIRST-50);
LVN_GETDISPINFOW = (LVN_FIRST-77);
LVN_SETDISPINFOA = (LVN_FIRST-51);
LVN_SETDISPINFOW = (LVN_FIRST-78);
Const
{$IFDEF UNICODE}
LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
LVN_GETDISPINFO = LVN_GETDISPINFOW;
LVN_SETDISPINFO = LVN_SETDISPINFOW;
{$ELSE}
LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
LVN_GETDISPINFO = LVN_GETDISPINFOA;
LVN_SETDISPINFO = LVN_SETDISPINFOA;
{$ENDIF}
CONST
LVIF_DI_SETITEM = $1000;
TYPE
tagLVDISPINFO = Record
hdr : NMHDR;
item : LVITEMA;
END;
NMLVDISPINFOA = tagLVDISPINFO;
LPNMLVDISPINFOA = ^tagLVDISPINFO;
TLVDISPINFO = tagLVDISPINFO;
PLVDISPINFO = ^tagLVDISPINFO;
tagLVDISPINFOW = Record
hdr : NMHDR;
item : LVITEMW;
END;
NMLVDISPINFOW = tagLVDISPINFOW;
LPNMLVDISPINFOW = ^tagLVDISPINFOW;
TLVDISPINFOW = tagLVDISPINFOW;
PLVDISPINFOW = ^tagLVDISPINFOW;
{$IFDEF UNICODE}
NMLVDISPINFO = NMLVDISPINFOW;
{$ELSE}
NMLVDISPINFO = NMLVDISPINFOA;
{$ENDIF}
{$ifdef ie3plus}
LV_DISPINFOA = NMLVDISPINFOA;
LV_DISPINFOW = NMLVDISPINFOW;
{$ELSE}
tagLVDISPINFO = _LV_DISPINFO;
NMLVDISPINFOA = LV_DISPINFOA;
tagLVDISPINFOW = _LV_DISPINFOW;
NMLVDISPINFOW = LV_DISPINFOW;
{$ENDIF}
LV_DISPINFO = NMLVDISPINFO;
CONST
LVN_KEYDOWN = (LVN_FIRST-55);
{$IFDEF _WIN32}
// include <pshpack1.h>
{$ENDIF}
TYPE
tagLVKEYDOWN = Record
hdr : NMHDR;
wVKey : WORD;
flags : UINT;
END;
NMLVKEYDOWN = tagLVKEYDOWN;
LPNMLVKEYDOWN = ^tagLVKEYDOWN;
TLVKEYDOWN = tagLVKEYDOWN;
PLVKEYDOWN = ^tagLVKEYDOWN;
{$IFDEF _WIN32}
//include <poppack.h>
{$ENDIF}
{$ifdef ie3plus}
CONST
LVN_MARQUEEBEGIN = (LVN_FIRST-56);
{$ENDIF}
{$ifdef ie4plus}
TYPE
tagNMLVGETINFOTIPA = Record
hdr : NMHDR;
dwFlags : DWORD;
pszText : LPSTR;
cchTextMax : cint;
iItem : cint;
iSubItem : cint;
lParam : LPARAM;
END;
NMLVGETINFOTIPA = tagNMLVGETINFOTIPA;
LPNMLVGETINFOTIPA = ^tagNMLVGETINFOTIPA;
TNMLVGETINFOTIPA = tagNMLVGETINFOTIPA;
PNMLVGETINFOTIPA = ^tagNMLVGETINFOTIPA;
tagNMLVGETINFOTIPW = Record
hdr : NMHDR;
dwFlags : DWORD;
pszText : LPWSTR;
cchTextMax : cint;
iItem : cint;
iSubItem : cint;
lParam : LPARAM;
END;
NMLVGETINFOTIPW = tagNMLVGETINFOTIPW;
LPNMLVGETINFOTIPW = ^tagNMLVGETINFOTIPW;
TNMLVGETINFOTIPW = tagNMLVGETINFOTIPW;
PNMLVGETINFOTIPW = ^tagNMLVGETINFOTIPW;
{$ifdef ie3plus}
LV_KEYDOWN = NMLVKEYDOWN;
{$ELSE}
tagLVKEYDOWN = _LV_KEYDOWN;
NMLVKEYDOWN = LV_KEYDOWN;
{$ENDIF}
// NMLVGETINFOTIPA.dwFlag values
CONST
LVGIT_UNFOLDED = $0001;
LVN_GETINFOTIPA = (LVN_FIRST-57);
LVN_GETINFOTIPW = (LVN_FIRST-58);
Const
{$IFDEF UNICODE}
LVN_GETINFOTIP = LVN_GETINFOTIPW;
type
NMLVGETINFOTIP = NMLVGETINFOTIPW;
LPNMLVGETINFOTIP = LPNMLVGETINFOTIPW;
{$ELSE}
LVN_GETINFOTIP = LVN_GETINFOTIPA;
type
NMLVGETINFOTIP = NMLVGETINFOTIPA;
LPNMLVGETINFOTIP = LPNMLVGETINFOTIPA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0400
{$ifdef win32xp}
tagNMLVSCROLL = Record
hdr : NMHDR;
dx : cint;
dy : cint;
END;
NMLVSCROLL = tagNMLVSCROLL;
LPNMLVSCROLL = ^tagNMLVSCROLL;
TNMLVSCROLL = tagNMLVSCROLL;
PNMLVSCROLL = ^tagNMLVSCROLL;
CONST
LVN_BEGINSCROLL = (LVN_FIRST-80) ;
LVN_ENDSCROLL = (LVN_FIRST-81);
// {$ENDIF}
{$ENDIF} // NOLISTVIEW
//====== TREEVIEW CONTROL =====================================================
{$IFNDEF NOTREEVIEW}
CONST
{$IFDEF _WIN32}
WC_TREEVIEWA = 'SysTreeView32';
WC_TREEVIEWW = {L}'SysTreeView32';
{$IFDEF UNICODE}
WC_TREEVIEW = WC_TREEVIEWW;
{$ELSE}
WC_TREEVIEW = WC_TREEVIEWA;
{$ENDIF}
{$ELSE}
WC_TREEVIEW = 'SysTreeView';
{$ENDIF}
// begin_r_commctrl
TVS_HASBUTTONS = $0001;
TVS_HASLINES = $0002;
TVS_LINESATROOT = $0004;
TVS_EDITLABELS = $0008;
TVS_DISABLEDRAGDROP = $0010;
TVS_SHOWSELALWAYS = $0020;
{$ifdef ie3plus}
TVS_RTLREADING = $0040;
TVS_NOTOOLTIPS = $0080;
TVS_CHECKBOXES = $0100;
TVS_TRACKSELECT = $0200;
{$ifdef ie4plus}
TVS_SINGLEEXPAND = $0400;
TVS_INFOTIP = $0800;
TVS_FULLROWSELECT = $1000;
TVS_NOSCROLL = $2000;
TVS_NONEVENHEIGHT = $4000;
{$ENDIF}
{$ifdef ie5plus}
TVS_NOHSCROLL = $8000; // TVS_NOSCROLL overrides this
{$ENDIF}
{$ENDIF}
// end_r_commctrl
TYPE
HTREEITEM = ^TREEITEM;
CONST
TVIF_TEXT = $0001;
TVIF_IMAGE = $0002;
TVIF_PARAM = $0004;
TVIF_STATE = $0008;
TVIF_HANDLE = $0010;
TVIF_SELECTEDIMAGE = $0020;
TVIF_CHILDREN = $0040;
{$ifdef ie4plus}
TVIF_INTEGRAL = $0080;
{$ENDIF}
TVIS_SELECTED = $0002;
TVIS_CUT = $0004;
TVIS_DROPHILITED = $0008;
TVIS_BOLD = $0010;
TVIS_EXPANDED = $0020;
TVIS_EXPANDEDONCE = $0040;
{$ifdef ie3plus}
TVIS_EXPANDPARTIAL = $0080;
{$ENDIF}
TVIS_OVERLAYMASK = $0F00;
TVIS_STATEIMAGEMASK = $F000;
TVIS_USERMASK = $F000;
I_CHILDRENCALLBACK = (-1);
Type
tagTVITEMA = Record
mask : UINT;
hItem : HTREEITEM;
state : UINT;
stateMask : UINT;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
cChildren : cint;
lParam : LPARAM;
END;
TVITEMA = tagTVITEMA;
LPTVITEMA = ^tagTVITEMA;
TTVITEMA = tagTVITEMA;
PTVITEMA = ^tagTVITEMA;
tagTVITEMW = Record
mask : UINT;
hItem : HTREEITEM;
state : UINT;
stateMask : UINT;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
cChildren : cint;
lParam : LPARAM;
END;
TVITEMW = tagTVITEMW;
LPTVITEMW = ^tagTVITEMW;
TTVITEMW = tagTVITEMW;
PTVITEMW = ^tagTVITEMW;
{$ifdef ie4plus}
// only used for Get and Set messages. no notifies
tagTVITEMEXA = Record
mask : UINT;
hItem : HTREEITEM;
state : UINT;
stateMask : UINT;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
cChildren : cint;
lParam : LPARAM;
iIntegral : cint;
END;
TVITEMEXA = tagTVITEMEXA;
LPTVITEMEXA = ^tagTVITEMEXA;
TTVITEMEXA = tagTVITEMEXA;
PTVITEMEXA = ^tagTVITEMEXA;
// only used for Get and Set messages. no notifies
tagTVITEMEXW = Record
mask : UINT;
hItem : HTREEITEM;
state : UINT;
stateMask : UINT;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
cChildren : cint;
lParam : LPARAM;
iIntegral : cint;
END;
TVITEMEXW = tagTVITEMEXW;
LPTVITEMEXW = ^tagTVITEMEXW;
TTVITEMEXW = tagTVITEMEXW;
PTVITEMEXW = ^tagTVITEMEXW;
TYPE
{$ifdef ie3plus}
LPTV_ITEMW = LPTVITEMW;
LPTV_ITEMA = LPTVITEMA;
TV_ITEMW = TVITEMW;
TV_ITEMA = TVITEMA;
{$ELSE}
tagTVITEMA = _TV_ITEMA;
TVITEMA = TV_ITEMA;
LPTVITEMA = LPTV_ITEMA;
tagTVITEMW = _TV_ITEMW;
TVITEMW = TV_ITEMW;
LPTVITEMW = LPTV_ITEMW;
{$ENDIF}
{$IFDEF UNICODE}
TVITEMEX = TVITEMEXW;
LPTVITEMEX = LPTVITEMEXW;
{$ELSE}
TVITEMEX = TVITEMEXA;
LPTVITEMEX = LPTVITEMEXA;
{$ENDIF} // UNICODE
{$ENDIF}
{$IFDEF UNICODE}
TVITEM = TVITEMW;
LPTVITEM = LPTVITEMW;
{$ELSE}
TVITEM = TVITEMA;
LPTVITEM = LPTVITEMA;
{$ENDIF}
LPTV_ITEM = LPTVITEM;
TV_ITEM = TVITEM;
CONST
TVI_ROOT = HTREEITEM(ULONG_PTR(-$10000));
TVI_FIRST = HTREEITEM(ULONG_PTR(-$0FFFF));
TVI_LAST = HTREEITEM(ULONG_PTR(-$0FFFE));
TVI_SORT = HTREEITEM(ULONG_PTR(-$0FFFD));
// #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
// #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
Type
tagTVINSERTSTRUCTA = Record
hParent : HTREEITEM;
hInsertAfter : HTREEITEM;
{$ifdef ie4plus}
dumunion : record
case boolean of
false: (itemex : TVITEMEXA;);
True: (item : TV_ITEMA;);
end;
{$ELSE}
item : TV_ITEMA;
{$ENDIF}
END;
TVINSERTSTRUCTA = tagTVINSERTSTRUCTA;
LPTVINSERTSTRUCTA = ^tagTVINSERTSTRUCTA;
TTVINSERTSTRUCTA = tagTVINSERTSTRUCTA;
PTVINSERTSTRUCTA = ^tagTVINSERTSTRUCTA;
tagTVINSERTSTRUCTW = Record
hParent : HTREEITEM;
hInsertAfter : HTREEITEM;
{$ifdef ie4plus}
dumunion : record
case boolean of
false: (itemex : TVITEMEXW);
True: (item : TV_ITEMW);
end;
{$ELSE}
item : TV_ITEMW;
{$ENDIF}
END;
TVINSERTSTRUCTW = tagTVINSERTSTRUCTW;
LPTVINSERTSTRUCTW = ^tagTVINSERTSTRUCTW;
TTVINSERTSTRUCTW = tagTVINSERTSTRUCTW;
PTVINSERTSTRUCTW = ^tagTVINSERTSTRUCTW;
{$IFDEF UNICODE}
TVINSERTSTRUCT = TVINSERTSTRUCTW;
LPTVINSERTSTRUCT = LPTVINSERTSTRUCTW;
// TVINSERTSTRUCT_V1_SIZE = TVINSERTSTRUCTW_V1_SIZE;
{$ELSE}
TVINSERTSTRUCT = TVINSERTSTRUCTA;
LPTVINSERTSTRUCT = LPTVINSERTSTRUCTA;
// TVINSERTSTRUCT_V1_SIZE = TVINSERTSTRUCTA_V1_SIZE;
{$ENDIF}
CONST
TVM_INSERTITEMA = (TV_FIRST + 0);
TVM_INSERTITEMW = (TV_FIRST + 50);
{$IFDEF UNICODE}
TVM_INSERTITEM = TVM_INSERTITEMW;
{$ELSE}
TVM_INSERTITEM = TVM_INSERTITEMA;
{$ENDIF}
TYPE
{$ifdef ie3plus}
LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
{$ELSE}
tagTVINSERTSTRUCTA = _TV_INSERTSTRUCTA;
TVINSERTSTRUCTA = TV_INSERTSTRUCTA;
LPTVINSERTSTRUCTA = LPTV_INSERTSTRUCTA;
tagTVINSERTSTRUCTW = _TV_INSERTSTRUCTW;
TVINSERTSTRUCTW = TV_INSERTSTRUCTW;
LPTVINSERTSTRUCTW = LPTV_INSERTSTRUCTW;
{$ENDIF}
TV_INSERTSTRUCT = TVINSERTSTRUCT;
LPTV_INSERTSTRUCT = LPTVINSERTSTRUCT;
// Macro 156
Function TreeView_InsertItem( hwnd : hwnd; lpis : LPTV_INSERTSTRUCT):HTREEITEM;
CONST
TVM_DELETEITEM = (TV_FIRST + 1);
// Macro 157
Function TreeView_DeleteItem( hwnd : hwnd; hitem : HTREEITEM):BOOL;
// Macro 158
Function TreeView_DeleteAllItems( hwnd : hwnd):BOOL;
CONST
TVM_EXPAND = (TV_FIRST + 2);
// Macro 159
Function TreeView_Expand( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
CONST
TVE_COLLAPSE = $0001;
TVE_EXPAND = $0002;
TVE_TOGGLE = $0003;
{$ifdef ie3plus}
TVE_EXPANDPARTIAL = $4000;
{$ENDIF}
TVE_COLLAPSERESET = $8000;
TVM_GETITEMRECT = (TV_FIRST + 4);
// Macro 160
Function TreeView_GetItemRect( hwnd : hwnd; hitem: TREEITEM; code : WPARAM; prc : pRECT):BOOL;
CONST
TVM_GETCOUNT = (TV_FIRST + 5);
// Macro 161
Function TreeView_GetCount( hwnd : hwnd):UINT;
CONST
TVM_GETINDENT = (TV_FIRST + 6);
// Macro 162
Function TreeView_GetIndent( hwnd : hwnd):UINT;
CONST
TVM_SETINDENT = (TV_FIRST + 7);
// Macro 163
Function TreeView_SetIndent( hwnd : hwnd; indent : WPARAM):BOOL;
CONST
TVM_GETIMAGELIST = (TV_FIRST + 8);
// Macro 164
Function TreeView_GetImageList( hwnd : hwnd; iImage : cint ):HIMAGELIST;
CONST
TVSIL_NORMAL = 0;
TVSIL_STATE = 2;
TVM_SETIMAGELIST = (TV_FIRST + 9);
// Macro 165
Function TreeView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImage : cint):HIMAGELIST;
CONST
TVM_GETNEXTITEM = (TV_FIRST + 10);
// Macro 166
Function TreeView_GetNextItem( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):HTREEITEM;
CONST
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;
{$ifdef ie4plus}
TVGN_LASTVISIBLE = $000A;
{$ENDIF} // _WIN32_IE >= 0x0400
{$ifdef win32xp}
TVSI_NOSINGLEEXPAND = $8000; // Should not conflict with TVGN flags.
{$ENDIF}
// Macro 167
// #define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
// Macro 168
// #define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
// Macro 169
// #define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
// Macro 170
// #define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
// Macro 171
// #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
// Macro 172
// #define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
// Macro 173
// #define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
// Macro 174
// #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
// Macro 175
// #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
// Macro 176
// #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
{$ifdef ie4plus}
// Macro 177
// #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
{$ENDIF} // _WIN32_IE >= 0x0400
CONST
TVM_SELECTITEM = (TV_FIRST + 11);
// Macro 178
Function TreeView_Select( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
// Macro 179
Procedure TreeView_SelectItem(hwnd:hwnd; hitem:HTREEITEM);
// Macro 180
Procedure TreeView_SelectDropTarget(hwnd:hwnd; hitem:HTREEITEM);
// Macro 181
Procedure TreeView_SelectSetFirstVisible(hwnd:hwnd; hitem:HTREEITEM);
CONST
TVM_GETITEMA = (TV_FIRST + 12);
TVM_GETITEMW = (TV_FIRST + 62);
{$IFDEF UNICODE}
TYPE
TVM_GETITEM = TVM_GETITEMW;
{$ELSE}
TVM_GETITEM = TVM_GETITEMA;
{$ENDIF}
// Macro 182
Function TreeView_GetItem( hwnd : hwnd;var pitem : TV_ITEM ):BOOL;
CONST
TVM_SETITEMA = (TV_FIRST + 13);
TVM_SETITEMW = (TV_FIRST + 63);
{$IFDEF UNICODE}
TYPE
TVM_SETITEM = TVM_SETITEMW;
{$ELSE}
TVM_SETITEM = TVM_SETITEMA;
{$ENDIF}
// Macro 183
Function TreeView_SetItem( hwnd : hwnd;const pitem : TV_ITEM ):BOOL;
CONST
TVM_EDITLABELA = (TV_FIRST + 14);
TVM_EDITLABELW = (TV_FIRST + 65);
{$IFDEF UNICODE}
TYPE
TVM_EDITLABEL = TVM_EDITLABELW;
{$ELSE}
TVM_EDITLABEL = TVM_EDITLABELA;
{$ENDIF}
// Macro 184
Function TreeView_EditLabel( hwnd : hwnd; hitem : HTREEITEM):HWND;
CONST
TVM_GETEDITCONTROL = (TV_FIRST + 15);
// Macro 185
Function TreeView_GetEditControl( hwnd : hwnd):HWND;
CONST
TVM_GETVISIBLECOUNT = (TV_FIRST + 16);
// Macro 186
Function TreeView_GetVisibleCount( hwnd : hwnd):UINT;
CONST
TVM_HITTEST = (TV_FIRST + 17);
TYPE
tagTVHITTESTINFO = Record
pt : POINT;
flags : UINT;
hItem : HTREEITEM;
END;
TVHITTESTINFO = tagTVHITTESTINFO;
LPTVHITTESTINFO = ^tagTVHITTESTINFO;
TTVHITTESTINFO = tagTVHITTESTINFO;
PTVHITTESTINFO = ^tagTVHITTESTINFO;
{$ifdef ie3plus}
LPTV_HITTESTINFO = LPTVHITTESTINFO;
TV_HITTESTINFO = TVHITTESTINFO;
{$ELSE}
tagTVHITTESTINFO = _TV_HITTESTINFO;
TVHITTESTINFO = TV_HITTESTINFO;
LPTVHITTESTINFO = LPTV_HITTESTINFO;
{$ENDIF}
CONST
TVHT_NOWHERE = $0001;
TVHT_ONITEMICON = $0002;
TVHT_ONITEMLABEL = $0004;
TVHT_ONITEM = (TVHT_ONITEMICON OR TVHT_ONITEMLABEL OR TVHT_ONITEMSTATEICON);
TVHT_ONITEMINDENT = $0008;
TVHT_ONITEMBUTTON = $0010;
TVHT_ONITEMRIGHT = $0020;
TVHT_ONITEMSTATEICON = $0040;
TVHT_ABOVE = $0100;
TVHT_BELOW = $0200;
TVHT_TORIGHT = $0400;
TVHT_TOLEFT = $0800;
TVM_CREATEDRAGIMAGE = (TV_FIRST + 18);
// Macro 187
Function TreeView_HitTest( hwnd : hwnd; lpht : LPTV_HITTESTINFO):HTREEITEM;
// Macro 188
Function TreeView_CreateDragImage( hwnd : hwnd; hitem : HTREEITEM):HIMAGELIST;
CONST
TVM_SORTCHILDREN = (TV_FIRST + 19);
// Macro 189
Function TreeView_SortChildren( hwnd : hwnd; hitem : HTREEITEM; recurse : WPARAM):BOOL;
CONST
TVM_ENSUREVISIBLE = (TV_FIRST + 20);
// Macro 190
Function TreeView_EnsureVisible( hwnd : hwnd; hitem : HTREEITEM):BOOL;
CONST
TVM_ENDEDITLABELNOW = (TV_FIRST + 22);
// Macro 192
Function TreeView_EndEditLabelNow( hwnd : hwnd; fCancel : WPARAM):BOOL;
CONST
TVM_GETISEARCHSTRINGA = (TV_FIRST + 23);
TVM_GETISEARCHSTRINGW = (TV_FIRST + 64);
{$IFDEF UNICODE}
TYPE
TVM_GETISEARCHSTRING= TVM_GETISEARCHSTRINGW;
{$ELSE}
TVM_GETISEARCHSTRING= TVM_GETISEARCHSTRINGA;
{$ENDIF}
{$ifdef ie3plus}
CONST
TVM_SETTOOLTIPS = (TV_FIRST + 24);
// Macro 193
Function TreeView_SetToolTips( hwnd : hwnd; hwndTT : WPARAM):HWND;
CONST
TVM_GETTOOLTIPS = (TV_FIRST + 25);
// Macro 194
Function TreeView_GetToolTips( hwnd : hwnd):HWND;
{$ENDIF}
// Macro 195
Function TreeView_GetISearchString( hwndTV : hwnd; lpsz : LPTSTR):BOOL;
{$ifdef ie4plus}
CONST
TVM_SETINSERTMARK = (TV_FIRST + 26);
// Macro 196
Function TreeView_SetInsertMark( hwnd : hwnd; hItem : LPARAM ; fAfter : WPARAM ):BOOL;
CONST
TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
// Macro 197
Function TreeView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
CONST
TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
// Macro 198
Function TreeView_GetUnicodeFormat( hwnd : hwnd):BOOL;
{$ENDIF}
{$ifdef ie4plus}
CONST
TVM_SETITEMHEIGHT = (TV_FIRST + 27);
// Macro 199
Function TreeView_SetItemHeight( hwnd : hwnd; iHeight : WPARAM):cint;
CONST
TVM_GETITEMHEIGHT = (TV_FIRST + 28);
// Macro 200
Function TreeView_GetItemHeight( hwnd : hwnd):cint;
CONST
TVM_SETBKCOLOR = (TV_FIRST + 29);
// Macro 201
Function TreeView_SetBkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
CONST
TVM_SETTEXTCOLOR = (TV_FIRST + 30);
// Macro 202
Function TreeView_SetTextColor( hwnd : hwnd; clr : LPARAM):COLORREF;
CONST
TVM_GETBKCOLOR = (TV_FIRST + 31);
// Macro 203
Function TreeView_GetBkColor( hwnd : hwnd):COLORREF;
CONST
TVM_GETTEXTCOLOR = (TV_FIRST + 32);
// Macro 204
Function TreeView_GetTextColor( hwnd : hwnd):COLORREF;
CONST
TVM_SETSCROLLTIME = (TV_FIRST + 33);
// Macro 205
Function TreeView_SetScrollTime( hwnd : hwnd; uTime :wparam ):UINT;
CONST
TVM_GETSCROLLTIME = (TV_FIRST + 34);
// Macro 206
Function TreeView_GetScrollTime( hwnd : hwnd):UINT;
CONST
TVM_SETINSERTMARKCOLOR = (TV_FIRST + 37);
// Macro 207
Function TreeView_SetInsertMarkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
CONST
TVM_GETINSERTMARKCOLOR = (TV_FIRST + 38);
// Macro 208
Function TreeView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
{$ENDIF} // (_WIN32_IE >= 0x0400)
{$ifdef ie5plus}
// tvm_?etitemstate only uses mask, state and stateMask.
// so unicode or ansi is irrelevant.
// Macro 209
Procedure TreeView_SetItemState(hwndTV:HWND;hti:HTreeItem;data:UINT;_mask:UINT);
// Macro 210
Procedure TreeView_SetCheckState( hwndTV : hwnd; hti : HTreeItem ; fCheck : bool );
CONST
TVM_GETITEMSTATE = (TV_FIRST + 39);
// Macro 211
Function TreeView_GetItemState( hwndTV : hwnd; hti : WPARAM; mask : LPARAM):UINT;
// Macro 212
Function TreeView_GetCheckState( hwndTV : hwnd; hti : WPARAM):UINT;
CONST
TVM_SETLINECOLOR = (TV_FIRST + 40);
// Macro 213
Function TreeView_SetLineColor( hwnd : hwnd; clr : LPARAM):COLORREF;
CONST
TVM_GETLINECOLOR = (TV_FIRST + 41);
// Macro 214
Function TreeView_GetLineColor( hwnd : hwnd):COLORREF;
{$ENDIF}
{$ifdef Win32XP}
CONST
TVM_MAPACCIDTOHTREEITEM = (TV_FIRST + 42);
// Macro 215
Function TreeView_MapAccIDToHTREEITEM( hwnd : hwnd; id : UINT ):HTREEITEM;
CONST
TVM_MAPHTREEITEMTOACCID = (TV_FIRST + 43);
// Macro 216
Function TreeView_MapHTREEITEMToAccID( hwnd : hwnd; htreeitem : WPARAM):UINT;
{$ENDIF}
TYPE
PFNTVCOMPARE =function (lparam1:LPARAM;lparam2:LPARAM;lParamSort:LParam): cint; STDCALL;
tagTVSORTCB = Record
hParent : HTREEITEM;
lpfnCompare : PFNTVCOMPARE;
lParam : LPARAM;
END;
TVSORTCB = tagTVSORTCB;
LPTVSORTCB = ^tagTVSORTCB;
TTVSORTCB = tagTVSORTCB;
PTVSORTCB = ^tagTVSORTCB;
{$ifdef ie3plus}
LPTV_SORTCB = LPTVSORTCB;
TV_SORTCB = TVSORTCB;
{$ELSE}
tagTVSORTCB = _TV_SORTCB;
TVSORTCB = TV_SORTCB;
LPTVSORTCB = LPTV_SORTCB;
{$ENDIF}
tagNMTREEVIEWA = Record
hdr : NMHDR;
action : UINT;
itemOld : TVITEMA;
itemNew : TVITEMA;
ptDrag : POINT;
END;
NMTREEVIEWA = tagNMTREEVIEWA;
LPNMTREEVIEWA = ^tagNMTREEVIEWA;
TNMTREEVIEWA = tagNMTREEVIEWA;
PNMTREEVIEWA = ^tagNMTREEVIEWA;
tagNMTREEVIEWW = Record
hdr : NMHDR;
action : UINT;
itemOld : TVITEMW;
itemNew : TVITEMW;
ptDrag : POINT;
END;
NMTREEVIEWW = tagNMTREEVIEWW;
LPNMTREEVIEWW = ^tagNMTREEVIEWW;
TNMTREEVIEWW = tagNMTREEVIEWW;
PNMTREEVIEWW = ^tagNMTREEVIEWW;
{$IFDEF UNICODE}
NMTREEVIEW = NMTREEVIEWW;
LPNMTREEVIEW = LPNMTREEVIEWW;
{$ELSE}
NMTREEVIEW = NMTREEVIEWA;
LPNMTREEVIEW = LPNMTREEVIEWA;
{$ENDIF}
{$ifdef ie3plus}
LPNM_TREEVIEWA = LPNMTREEVIEWA;
LPNM_TREEVIEWW = LPNMTREEVIEWW;
NM_TREEVIEWW = NMTREEVIEWW;
NM_TREEVIEWA = NMTREEVIEWA;
{$ELSE}
tagNMTREEVIEWA = _NM_TREEVIEWA;
tagNMTREEVIEWW = _NM_TREEVIEWW;
NMTREEVIEWA = NM_TREEVIEWA;
NMTREEVIEWW = NM_TREEVIEWW;
LPNMTREEVIEWA = LPNM_TREEVIEWA;
LPNMTREEVIEWW = LPNM_TREEVIEWW;
{$ENDIF}
LPNM_TREEVIEW = LPNMTREEVIEW;
NM_TREEVIEW = NMTREEVIEW;
CONST
TVN_SELCHANGINGA = (TVN_FIRST-1);
TVN_SELCHANGINGW = (TVN_FIRST-50);
TVN_SELCHANGEDA = (TVN_FIRST-2);
TVN_SELCHANGEDW = (TVN_FIRST-51);
TVC_UNKNOWN = $0000;
TVC_BYMOUSE = $0001;
TVC_BYKEYBOARD = $0002;
TVN_GETDISPINFOA = (TVN_FIRST-3);
TVN_GETDISPINFOW = (TVN_FIRST-52);
TVN_SETDISPINFOA = (TVN_FIRST-4);
TVN_SETDISPINFOW = (TVN_FIRST-53);
TVIF_DI_SETITEM = $1000;
Type
tagTVDISPINFOA = Record
hdr : NMHDR;
item : TVITEMA;
END;
NMTVDISPINFOA = tagTVDISPINFOA;
LPNMTVDISPINFOA = ^tagTVDISPINFOA;
TTVDISPINFOA = tagTVDISPINFOA;
PTVDISPINFOA = ^tagTVDISPINFOA;
tagTVDISPINFOW = Record
hdr : NMHDR;
item : TVITEMW;
END;
NMTVDISPINFOW = tagTVDISPINFOW;
LPNMTVDISPINFOW = ^tagTVDISPINFOW;
TTVDISPINFOW = tagTVDISPINFOW;
PTVDISPINFOW = ^tagTVDISPINFOW;
{$IFDEF UNICODE}
NMTVDISPINFO = NMTVDISPINFOW;
LPNMTVDISPINFO = LPNMTVDISPINFOW;
{$ELSE}
NMTVDISPINFO = NMTVDISPINFOA;
LPNMTVDISPINFO = LPNMTVDISPINFOA;
{$ENDIF}
{$ifdef ie3plus}
TV_DISPINFOA = NMTVDISPINFOA;
TV_DISPINFOW = NMTVDISPINFOW;
{$ELSE}
tagTVDISPINFOA = _TV_DISPINFOA;
NMTVDISPINFOA = TV_DISPINFOA;
tagTVDISPINFOW = _TV_DISPINFOW;
NMTVDISPINFOW = TV_DISPINFOW;
{$ENDIF}
TV_DISPINFO = NMTVDISPINFO;
CONST
TVM_SORTCHILDRENCB = (TV_FIRST + 21);
// Macro 191
Function TreeView_SortChildrenCB( hwnd : hwnd;psort :lpTV_sortcb; recurse : WPARAM):BOOL;
CONST
TVN_ITEMEXPANDINGA = (TVN_FIRST-5);
TVN_ITEMEXPANDINGW = (TVN_FIRST-54);
TVN_ITEMEXPANDEDA = (TVN_FIRST-6);
TVN_ITEMEXPANDEDW = (TVN_FIRST-55);
TVN_BEGINDRAGA = (TVN_FIRST-7);
TVN_BEGINDRAGW = (TVN_FIRST-56);
TVN_BEGINRDRAGA = (TVN_FIRST-8);
TVN_BEGINRDRAGW = (TVN_FIRST-57);
TVN_DELETEITEMA = (TVN_FIRST-9);
TVN_DELETEITEMW = (TVN_FIRST-58);
TVN_BEGINLABELEDITA = (TVN_FIRST-10);
TVN_BEGINLABELEDITW = (TVN_FIRST-59);
TVN_ENDLABELEDITA = (TVN_FIRST-11);
TVN_ENDLABELEDITW = (TVN_FIRST-60);
TVN_KEYDOWN = (TVN_FIRST-12);
{$ifdef ie4plus}
TVN_GETINFOTIPA = (TVN_FIRST-13);
TVN_GETINFOTIPW = (TVN_FIRST-14);
TVN_SINGLEEXPAND = (TVN_FIRST-15);
TVNRET_DEFAULT = 0;
TVNRET_SKIPOLD = 1;
TVNRET_SKIPNEW = 2;
{$ENDIF} // 0x400
{$IFDEF _WIN32}
#include <pshpack1.h>
{$ENDIF}
TYPE
tagTVKEYDOWN = Record
hdr : NMHDR;
wVKey : WORD;
flags : UINT;
END;
NMTVKEYDOWN = tagTVKEYDOWN;
LPNMTVKEYDOWN = ^tagTVKEYDOWN;
TTVKEYDOWN = tagTVKEYDOWN;
PTVKEYDOWN = ^tagTVKEYDOWN;
{$ifdef ie3plus}
TV_KEYDOWN = NMTVKEYDOWN;
{$ELSE}
tagTVKEYDOWN = _TV_KEYDOWN;
NMTVKEYDOWN = TV_KEYDOWN;
{$ENDIF}
{$IFDEF _WIN32}
#include <poppack.h>
{$ENDIF}
Const
{$IFDEF UNICODE}
TVN_SELCHANGING = TVN_SELCHANGINGW;
TVN_SELCHANGED = TVN_SELCHANGEDW;
TVN_GETDISPINFO = TVN_GETDISPINFOW;
TVN_SETDISPINFO = TVN_SETDISPINFOW;
TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
TVN_BEGINDRAG = TVN_BEGINDRAGW;
TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
TVN_DELETEITEM = TVN_DELETEITEMW;
TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
{$ELSE}
TVN_SELCHANGING = TVN_SELCHANGINGA;
TVN_SELCHANGED = TVN_SELCHANGEDA;
TVN_GETDISPINFO = TVN_GETDISPINFOA;
TVN_SETDISPINFO = TVN_SETDISPINFOA;
TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
TVN_BEGINDRAG = TVN_BEGINDRAGA;
TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
TVN_DELETEITEM = TVN_DELETEITEMA;
TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
{$ENDIF}
{$ifdef ie3plus}
// #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
Type
tagNMTVCUSTOMDRAW = Record
nmcd : NMCUSTOMDRAW;
clrText : COLORREF;
clrTextBk : COLORREF;
{$ifdef ie4plus}
iLevel : cint;
{$ENDIF}
END;
NMTVCUSTOMDRAW = tagNMTVCUSTOMDRAW;
LPNMTVCUSTOMDRAW = ^tagNMTVCUSTOMDRAW;
TNMTVCUSTOMDRAW = tagNMTVCUSTOMDRAW;
PNMTVCUSTOMDRAW = ^tagNMTVCUSTOMDRAW;
{$ENDIF}
{$ifdef ie4plus}
// for tooltips
tagNMTVGETINFOTIPA = Record
hdr : NMHDR;
pszText : LPSTR;
cchTextMax : cint;
hItem : HTREEITEM;
lParam : LPARAM;
END;
NMTVGETINFOTIPA = tagNMTVGETINFOTIPA;
LPNMTVGETINFOTIPA = ^tagNMTVGETINFOTIPA;
TNMTVGETINFOTIPA = tagNMTVGETINFOTIPA;
PNMTVGETINFOTIPA = ^tagNMTVGETINFOTIPA;
tagNMTVGETINFOTIPW = Record
hdr : NMHDR;
pszText : LPWSTR;
cchTextMax : cint;
hItem : HTREEITEM;
lParam : LPARAM;
END;
NMTVGETINFOTIPW = tagNMTVGETINFOTIPW;
LPNMTVGETINFOTIPW = ^tagNMTVGETINFOTIPW;
TNMTVGETINFOTIPW = tagNMTVGETINFOTIPW;
PNMTVGETINFOTIPW = ^tagNMTVGETINFOTIPW;
CONST
{$IFDEF UNICODE}
TVN_GETINFOTIP = TVN_GETINFOTIPW;
TYPE
NMTVGETINFOTIP = NMTVGETINFOTIPW;
LPNMTVGETINFOTIP = LPNMTVGETINFOTIPW;
{$ELSE}
TVN_GETINFOTIP = TVN_GETINFOTIPA;
TYPE
NMTVGETINFOTIP = NMTVGETINFOTIPA;
LPNMTVGETINFOTIP = LPNMTVGETINFOTIPA;
{$ENDIF}
// treeview's customdraw return meaning don't draw images. valid on CDRF_NOTIFYITEMPREPAINT
CONST
TVCDRF_NOIMAGES = $00010000;
{$ENDIF} // _WIN32_IE >= 0x0400
{$ENDIF} // NOTREEVIEW
{$ifdef ie3plus}
{$IFNDEF NOUSEREXCONTROLS}
//////////////////// ComboBoxEx ////////////////////////////////
WC_COMBOBOXEXW = {L}'ComboBoxEx32';
WC_COMBOBOXEXA = 'ComboBoxEx32';
{$IFDEF UNICODE}
WC_COMBOBOXEX = WC_COMBOBOXEXW;
{$ELSE}
WC_COMBOBOXEX = WC_COMBOBOXEXA;
{$ENDIF}
CONST
CBEIF_TEXT = $00000001;
CBEIF_IMAGE = $00000002;
CBEIF_SELECTEDIMAGE = $00000004;
CBEIF_OVERLAY = $00000008;
CBEIF_INDENT = $00000010;
CBEIF_LPARAM = $00000020;
CBEIF_DI_SETITEM = $10000000;
TYPE
tagCOMBOBOXEXITEMA = Record
mask : UINT;
iItem : INT_PTR;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
iOverlay : cint;
iIndent : cint;
lParam : LPARAM;
END;
COMBOBOXEXITEMA = tagCOMBOBOXEXITEMA;
PCOMBOBOXEXITEMA = ^tagCOMBOBOXEXITEMA;
TCOMBOBOXEXITEMA = tagCOMBOBOXEXITEMA;
// PCOMBOBOXEXITEMA = ^tagCOMBOBOXEXITEMA;
PCCOMBOBOXEXITEMA = ^COMBOBOXEXITEMA;
tagCOMBOBOXEXITEMW = Record
mask : UINT;
iItem : INT_PTR;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
iSelectedImage : cint;
iOverlay : cint;
iIndent : cint;
lParam : LPARAM;
END;
COMBOBOXEXITEMW = tagCOMBOBOXEXITEMW;
PCOMBOBOXEXITEMW = ^tagCOMBOBOXEXITEMW;
TCOMBOBOXEXITEMW = tagCOMBOBOXEXITEMW;
// PCOMBOBOXEXITEMW = ^tagCOMBOBOXEXITEMW;
PCCOMBOBOXEXITEMW = ^COMBOBOXEXITEMW;
{$IFDEF UNICODE}
COMBOBOXEXITEM = COMBOBOXEXITEMW;
PCOMBOBOXEXITEM = PCOMBOBOXEXITEMW;
PCCOMBOBOXEXITEM = PCCOMBOBOXEXITEMW;
{$ELSE}
COMBOBOXEXITEM = COMBOBOXEXITEMA;
PCOMBOBOXEXITEM = PCOMBOBOXEXITEMA;
PCCOMBOBOXEXITEM = PCCOMBOBOXEXITEMA;
{$ENDIF}
CONST
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_DELETEITEM = CB_DELETESTRING;
CBEM_GETCOMBOCONTROL = (WM_USER + 6);
CBEM_GETEDITCONTROL = (WM_USER + 7);
{$ifdef ie4plus}
CBEM_SETEXSTYLE = (WM_USER + 8); // use SETEXTENDEDSTYLE instead
CBEM_SETEXTENDEDSTYLE = (WM_USER + 14); // lparam == new style, wParam (optional) == mask
CBEM_GETEXSTYLE = (WM_USER + 9); // use GETEXTENDEDSTYLE instead
CBEM_GETEXTENDEDSTYLE = (WM_USER + 9);
CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
{$ELSE}
CBEM_SETEXSTYLE = (WM_USER + 8);
CBEM_GETEXSTYLE = (WM_USER + 9);
{$ENDIF}
CBEM_HASEDITCHANGED = (WM_USER + 10);
CBEM_INSERTITEMW = (WM_USER + 11);
CBEM_SETITEMW = (WM_USER + 12);
CBEM_GETITEMW = (WM_USER + 13);
{$IFDEF UNICODE}
CBEM_INSERTITEM = CBEM_INSERTITEMW;
CBEM_SETITEM = CBEM_SETITEMW;
CBEM_GETITEM = CBEM_GETITEMW;
{$ELSE}
CBEM_INSERTITEM = CBEM_INSERTITEMA;
CBEM_SETITEM = CBEM_SETITEMA;
CBEM_GETITEM = CBEM_GETITEMA;
{$ENDIF}
{$ifdef win32xp}
CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
{$ENDIF}
CBES_EX_NOEDITIMAGE = $00000001;
CBES_EX_NOEDITIMAGEINDENT = $00000002;
CBES_EX_PATHWORDBREAKPROC = $00000004;
{$ifdef ie4plus}
CBES_EX_NOSIZELIMIT = $00000008;
CBES_EX_CASESENSITIVE = $00000010;
TYPE
DummyStruct9 = Record
hdr : NMHDR;
ceItem : COMBOBOXEXITEMA;
END;
NMCOMBOBOXEXA = DummyStruct9;
PNMCOMBOBOXEXA = ^DummyStruct9;
TDummyStruct9 = DummyStruct9;
PDummyStruct9 = ^DummyStruct9;
DummyStruct10 = Record
hdr : NMHDR;
ceItem : COMBOBOXEXITEMW;
END;
NMCOMBOBOXEXW = DummyStruct10;
PNMCOMBOBOXEXW = ^DummyStruct10;
TDummyStruct10 = DummyStruct10;
PDummyStruct10 = ^DummyStruct10;
{$ELSE}
DummyStruct11 = Record
hdr : NMHDR;
ceItem : COMBOBOXEXITEM;
END;
NMCOMBOBOXEX = DummyStruct11;
PNMCOMBOBOXEX = ^DummyStruct11;
TDummyStruct11 = DummyStruct11;
PDummyStruct11 = ^DummyStruct11;
CONST
CBEN_GETDISPINFO = (CBEN_FIRST - 0);
{$ENDIF} // _WIN32_IE >= 0x0400
CONST
{$ifdef ie4plus}
CBEN_GETDISPINFOA = (CBEN_FIRST - 0);
{$ENDIF}
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);
{$ifdef ie4plus}
CBEN_GETDISPINFOW = (CBEN_FIRST - 7);
{$ENDIF}
{$ifdef ie4plus}
CBEN_DRAGBEGINA = (CBEN_FIRST - 8);
CBEN_DRAGBEGINW = (CBEN_FIRST - 9);
{$IFDEF UNICODE}
CBEN_DRAGBEGIN = CBEN_DRAGBEGINW;
{$ELSE}
CBEN_DRAGBEGIN = CBEN_DRAGBEGINA;
{$ENDIF}
{$ENDIF} //(_WIN32_IE >= 0x0400)
TYPE
{$IFDEF UNICODE}
NMCOMBOBOXEX = NMCOMBOBOXEXW;
PNMCOMBOBOXEX = PNMCOMBOBOXEXW;
CONST
CBEN_GETDISPINFO = CBEN_GETDISPINFOW;
{$ELSE}
NMCOMBOBOXEX = NMCOMBOBOXEXA;
PNMCOMBOBOXEX = PNMCOMBOBOXEXA;
CONST
CBEN_GETDISPINFO = CBEN_GETDISPINFOA;
{$ENDIF}
// lParam specifies why the endedit is happening
{$IFDEF UNICODE}
CBEN_ENDEDIT = CBEN_ENDEDITW;
{$ELSE}
CBEN_ENDEDIT = CBEN_ENDEDITA;
{$ENDIF}
CONST
CBENF_KILLFOCUS = 1;
CBENF_RETURN = 2;
CBENF_ESCAPE = 3;
CBENF_DROPDOWN = 4;
CBEMAXSTRLEN = 260;
{$ifdef ie4plus}
// CBEN_DRAGBEGIN sends this information ...
TYPE
DummyStruct12 = Record
hdr : NMHDR;
iItemid : cint;
szText : Array[0..CBEMAXSTRLEN-1] OF WCHAR;
END;
NMCBEDRAGBEGINW = DummyStruct12;
LPNMCBEDRAGBEGINW = ^DummyStruct12;
PNMCBEDRAGBEGINW = ^DummyStruct12;
TDummyStruct12 = DummyStruct12;
PDummyStruct12 = ^DummyStruct12;
DummyStruct13 = Record
hdr : NMHDR;
iItemid : cint;
szText : Array[0..CBEMAXSTRLEN-1] OF char;
END;
NMCBEDRAGBEGINA = DummyStruct13;
LPNMCBEDRAGBEGINA = ^DummyStruct13;
PNMCBEDRAGBEGINA = ^DummyStruct13;
TDummyStruct13 = DummyStruct13;
PDummyStruct13 = ^DummyStruct13;
{$IFDEF UNICODE}
NMCBEDRAGBEGIN = NMCBEDRAGBEGINW;
LPNMCBEDRAGBEGIN = LPNMCBEDRAGBEGINW;
PNMCBEDRAGBEGIN = PNMCBEDRAGBEGINW;
{$ELSE}
NMCBEDRAGBEGIN = NMCBEDRAGBEGINA;
LPNMCBEDRAGBEGIN = LPNMCBEDRAGBEGINA;
PNMCBEDRAGBEGIN = PNMCBEDRAGBEGINA;
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0400
// CBEN_ENDEDIT sends this information...
// fChanged if the user actually did anything
// iNewSelection gives what would be the new selection unless the notify is failed
// iNewSelection may be CB_ERR if there's no match
DummyStruct14 = Record
hdr : NMHDR;
fChanged : BOOL;
iNewSelection : cint;
szText : Array[0..CBEMAXSTRLEN-1] OF WCHAR;
iWhy : cint;
END;
NMCBEENDEDITW = DummyStruct14;
LPNMCBEENDEDITW = ^DummyStruct14;
PNMCBEENDEDITW = ^DummyStruct14;
TDummyStruct14 = DummyStruct14;
PDummyStruct14 = ^DummyStruct14;
DummyStruct15 = Record
hdr : NMHDR;
fChanged : BOOL;
iNewSelection : cint;
szText : Array[0..CBEMAXSTRLEN-1] OF char;
iWhy : cint;
END;
NMCBEENDEDITA = DummyStruct15;
LPNMCBEENDEDITA = ^DummyStruct15;
PNMCBEENDEDITA = ^DummyStruct15;
TDummyStruct15 = DummyStruct15;
PDummyStruct15 = ^DummyStruct15;
{$IFDEF UNICODE}
NMCBEENDEDIT = NMCBEENDEDITW;
LPNMCBEENDEDIT = LPNMCBEENDEDITW;
PNMCBEENDEDIT = PNMCBEENDEDITW;
{$ELSE}
NMCBEENDEDIT = NMCBEENDEDITA;
LPNMCBEENDEDIT = LPNMCBEENDEDITA;
PNMCBEENDEDIT = PNMCBEENDEDITA;
{$ENDIF}
{$ENDIF}
{$ENDIF} // _WIN32_IE >= 0x0300
//====== TAB CONTROL ==========================================================
{$IFNDEF NOTABCONTROL}
{$IFDEF _WIN32}
CONST
WC_TABCONTROLA = 'SysTabControl32';
WC_TABCONTROLW = {L}'SysTabControl32';
{$IFDEF UNICODE}
TYPE
WC_TABCONTROL = WC_TABCONTROLW;
{$ELSE}
WC_TABCONTROL = WC_TABCONTROLA;
{$ENDIF}
{$ELSE}
CONST
WC_TABCONTROL = 'SysTabControl';
{$ENDIF}
// begin_r_commctrl
{$ifdef ie3plus}
TCS_SCROLLOPPOSITE = $0001; // assumes multiline tab
TCS_BOTTOM = $0002;
TCS_RIGHT = $0002;
TCS_MULTISELECT = $0004; // allow multi-select in button mode
{$ENDIF}
{$ifdef ie4plus}
TCS_FLATBUTTONS = $0008;
{$ENDIF}
TCS_FORCEICONLEFT = $0010;
TCS_FORCELABELLEFT = $0020;
{$ifdef ie3plus}
TCS_HOTTRACK = $0040;
TCS_VERTICAL = $0080;
{$ENDIF}
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;
// end_r_commctrl
{$ifdef ie4plus}
// EX styles for use with TCM_SETEXTENDEDSTYLE
TCS_EX_FLATSEPARATORS = $00000001;
TCS_EX_REGISTERDROP = $00000002;
{$ENDIF}
TCM_GETIMAGELIST = (TCM_FIRST + 2);
// Macro 217
Function TabCtrl_GetImageList( hwnd : hwnd):HIMAGELIST;
CONST
TCM_SETIMAGELIST = (TCM_FIRST + 3);
// Macro 218
Function TabCtrl_SetImageList( hwnd : hwnd; himl : HIMAGELIST):HIMAGELIST;
CONST
TCM_GETITEMCOUNT = (TCM_FIRST + 4);
// Macro 219
Function TabCtrl_GetItemCount( hwnd : hwnd):cint;
CONST
TCIF_TEXT = $0001;
TCIF_IMAGE = $0002;
TCIF_RTLREADING = $0004;
TCIF_PARAM = $0008;
{$ifdef ie3plus}
TCIF_STATE = $0010;
TCIS_BUTTONPRESSED = $0001;
{$ENDIF}
{$ifdef ie4plus}
TCIS_HIGHLIGHTED = $0002;
{$ENDIF}
TYPE
tagTCITEMHEADERA = Record
mask : UINT;
lpReserved1 : UINT;
lpReserved2 : UINT;
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
END;
TCITEMHEADERA = tagTCITEMHEADERA;
LPTCITEMHEADERA = ^tagTCITEMHEADERA;
TTCITEMHEADERA = tagTCITEMHEADERA;
PTCITEMHEADERA = ^tagTCITEMHEADERA;
tagTCITEMHEADERW = Record
mask : UINT;
lpReserved1 : UINT;
lpReserved2 : UINT;
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
END;
TCITEMHEADERW = tagTCITEMHEADERW;
LPTCITEMHEADERW = ^tagTCITEMHEADERW;
TTCITEMHEADERW = tagTCITEMHEADERW;
PTCITEMHEADERW = ^tagTCITEMHEADERW;
{$IFDEF UNICODE}
TCITEMHEADER = TCITEMHEADERW;
LPTCITEMHEADER = LPTCITEMHEADERW;
{$ELSE}
TCITEMHEADER = TCITEMHEADERA;
LPTCITEMHEADER = LPTCITEMHEADERA;
{$ENDIF}
{$ifdef ie3plus}
TC_ITEMHEADERA = TCITEMHEADERA;
TC_ITEMHEADERW = TCITEMHEADERW;
{$ELSE}
tagTCITEMHEADERA = _TC_ITEMHEADERA;
TCITEMHEADERA = TC_ITEMHEADERA;
tagTCITEMHEADERW = _TC_ITEMHEADERW;
TCITEMHEADERW = TC_ITEMHEADERW;
{$ENDIF}
TC_ITEMHEADER = TCITEMHEADER;
tagTCITEMA = Record
mask : UINT;
{$ifdef ie3plus}
dwState : DWORD;
dwStateMask : DWORD;
{$ELSE}
lpReserved1 : UINT;
lpReserved2 : UINT;
{$ENDIF}
pszText : LPSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
END;
TCITEMA = tagTCITEMA;
LPTCITEMA = ^tagTCITEMA;
TTCITEMA = tagTCITEMA;
PTCITEMA = ^tagTCITEMA;
tagTCITEMW = Record
mask : UINT;
{$ifdef ie3plus}
dwState : DWORD;
dwStateMask : DWORD;
{$ELSE}
lpReserved1 : UINT;
lpReserved2 : UINT;
{$ENDIF}
pszText : LPWSTR;
cchTextMax : cint;
iImage : cint;
lParam : LPARAM;
END;
TCITEMW = tagTCITEMW;
LPTCITEMW = ^tagTCITEMW;
TTCITEMW = tagTCITEMW;
PTCITEMW = ^tagTCITEMW;
{$IFDEF UNICODE}
TCITEM = TCITEMW;
LPTCITEM = LPTCITEMW;
{$ELSE}
TCITEM = TCITEMA;
LPTCITEM = LPTCITEMA;
{$ENDIF}
{$ifdef ie3plus}
TC_ITEMA = TCITEMA;
TC_ITEMW = TCITEMW;
{$ELSE}
tagTCITEMA = _TC_ITEMA;
TCITEMA = TC_ITEMA;
tagTCITEMW = _TC_ITEMW;
TCITEMW = TC_ITEMW;
{$ENDIF}
TC_ITEM = TCITEM;
CONST
TCM_GETITEMA = (TCM_FIRST + 5);
TCM_GETITEMW = (TCM_FIRST + 60);
{$IFDEF UNICODE}
TYPE
TCM_GETITEM =