From 3af4741b5e8c7ad11ba81e693985c4ad31072d29 Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 27 May 2009 16:26:32 +0000 Subject: [PATCH] * vista items till WC_STATICA, roughly at 80% now. git-svn-id: trunk@13203 - --- packages/winunits-base/src/commctrl.pp | 600 +++++++++++++++++++++++-- 1 file changed, 569 insertions(+), 31 deletions(-) diff --git a/packages/winunits-base/src/commctrl.pp b/packages/winunits-base/src/commctrl.pp index 584355c95e..2f2344e6aa 100644 --- a/packages/winunits-base/src/commctrl.pp +++ b/packages/winunits-base/src/commctrl.pp @@ -59,12 +59,14 @@ CONST CommCtrlDLL = 'comctl32.dll'; {$DEFINE IE3PLUS} {$DEFINE IE4PLUS} {$define IE5plus} -{$define WIN32XP} -{$define win32vista} // till lvgroup +{$define WIN32XP} // also 0x501, win2003 +{$define win32vista} // till WC_STATICA {$define ie501plus} {$ifdef win32} {$define _win32} {$endif win32} +{$define ie6plus} +{$define NTDDI_WIN7} {$ifdef win64} {$define _win32} @@ -103,6 +105,26 @@ CONST CommCtrlDLL = 'comctl32.dll'; // NOSCROLLBAR Scrollbar control. // //============================================================================= +// Moved items due to forward defining limitations + +Const + MAX_LINKID_TEXT = 48; + L_MAX_URL_LENGTH = (2048 + 32 + length('://')); +Type + tagLITEM = Record + mask : UINT; + iLink : cint; + state : UINT; + stateMask : UINT; + szID : Array [0..MAX_LINKID_TEXT-1] OF WCHAR; + szUrl : Array [0..L_MAX_URL_LENGTH-1] OF WCHAR; + END; + LITEM = tagLITEM; + PLITEM = ^tagLITEM; + TLITEM = tagLITEM; +// PLITEM = ^tagLITEM; + + // include @@ -3749,7 +3771,7 @@ CONST LVSIL_NORMAL = 0; LVSIL_SMALL = 1; LVSIL_STATE = 2; - + LVSIL_GROUPHEADER = 3; LVM_SETIMAGELIST = (LVM_FIRST + 3); // Macro 43 @@ -3896,7 +3918,8 @@ Type LV_ITEM = LVITEM; TLVItem = LVITEM; PLVItem = LPLVITEM; - + TLV_ITEM = LVITEM; + PLV_ITEM = PLVITEM; CONST LPSTR_TEXTCALLBACKW = LPWSTR(-1); LPSTR_TEXTCALLBACKA = LPSTR (-1); @@ -4865,6 +4888,22 @@ TYPE stateMask : UINT; state : UINT; uAlign : UINT; +{$ifdef win32vista} + pszSubtitle : LPWSTR; + cchSubtitle : UINT; + pszTask : LPWSTR; + cchTask : UINT; + pszDescriptionTop : LPWSTR; + cchDescriptionTop : UINT; + pszDescriptionBottom: LPWSTR; + cchDescriptionBottom: UINT; + iTitleImage : cint; + iExtendedImage : cint; + iFirstItem : cint; // Read only + cItems : UINT; // Read only + pszSubsetTitle : LPWSTR;// NULL if group is not subset + cchSubsetTitle : UINT; +{$endif} END; LVGROUP = tagLVGROUP; PLVGROUP = ^tagLVGROUP; @@ -4995,11 +5034,14 @@ CONST LVTVIF_FIXEDWIDTH = $00000001; LVTVIF_FIXEDHEIGHT = $00000002; LVTVIF_FIXEDSIZE = $00000003; - +{$ifdef win32vista} + LVTVIF_EXTENDED = $00000004; +{$endif} LVTVIM_TILESIZE = $00000001; LVTVIM_COLUMNS = $00000002; LVTVIM_LABELMARGIN = $00000004; + TYPE tagLVTILEVIEWINFO = Record @@ -5020,6 +5062,9 @@ TYPE iItem : cint; cColumns : UINT; puColumns : PUINT; + {$ifdef win32vista} + piColFmt : PCINT; + {$endif} END; LVTILEINFO = tagLVTILEINFO; PLVTILEINFO = ^tagLVTILEINFO; @@ -5166,8 +5211,96 @@ CONST // Macro 153 Function ListView_MapIDToIndex( hwnd : hwnd; id : WPARAM):UINT; + +const LVM_ISITEMVISIBLE = (LVM_FIRST + 182); + +// macro 153b +function ListView_IsItemVisible(hwnd:hwnd; aindex:cuint):cuint; +// (UINT)SNDMSG((hwnd), LVM_ISITEMVISIBLE, (WPARAM)(index), (LPARAM)0) + {$ENDIF} +{$ifdef win32vista} +CONST + LVM_GETEMPTYTEXT = (LVM_FIRST + 204); + LVM_GETFOOTERRECT = (LVM_FIRST + 205); + LVM_GETFOOTERINFO = (LVM_FIRST + 206); + LVM_GETFOOTERITEMRECT = (LVM_FIRST + 207); + LVM_GETFOOTERITEM = (LVM_FIRST + 208); + LVM_GETITEMINDEXRECT = (LVM_FIRST + 209); + LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210); + LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211); + +// footer flags + LVFF_ITEMCOUNT = $00000001; + +// footer item flags + LVFIF_TEXT = $00000001; + LVFIF_STATE = $00000002; + +// footer item state + LVFIS_FOCUSED = $0001; + +TYPE + tagLVFOOTERINFO = Record + mask : CUINT; // LVFF_* + pszText : LPWSTR; + cchTextMax: CINT; + cItems : CUINT; + end; + + LVFOOTERINFO = tagLVFOOTERINFO; + LPLVFOOTERINFO = ^tagLVFOOTERINFO; + TLVFOOTERINFO = tagLVFOOTERINFO; + PLVFOOTERINFO = LPLVFOOTERINFO; + + + tagLVFOOTERITEM = Record + mask : CUINT; // LVFIF_* + iItem : CINT; + pszText : LPWSTR; + cchTextMax: CINT; + state : CUINT; // LVFIS_* + stateMask : CUINT; // LVFIS_* + end; + + LVFOOTERITEM = tagLVFOOTERITEM; + LPLVFOOTERITEM = ^tagLVFOOTERITEM; + TLVFOOTERITEM = tagLVFOOTERITEM; + PLVFOOTERITEM = LPLVFOOTERITEM; + +// supports a single item in multiple groups. + tagLVITEMINDEX = Record + iItem : CINT; // listview item index + iGroup : CINT; // group index (must be -1 if group view is not enabled) + end; + LVITEMINDEX = tagLVITEMINDEX; + PLVITEMINDEX = ^tagLVITEMINDEX; + tLVITEMINDEX = TAGLVITEMINDEX; + + +function ListView_SetGroupHeaderImageList(hwnd:HWNd;himl:HIMAGELIST):HIMAGELIST; + +function ListView_GetGroupHeaderImageList(hwnd:HWND):HIMAGELIST; + +function ListView_GetEmptyText(hwnd:HWND;pszText:LPWSTR; cchText:CUINT):BOOL; + +function ListView_GetFooterRect(hwnd:HWND; prc:PRECT):BOOL; + +function ListView_GetFooterInfo(hwnd:HWND;plvfi: LPLVFOOTERINFO ):BOOL; + +function ListView_GetFooterItemRect(hwnd:HWND;iItem:CUINT;prc:PRECT):BOOL; + +function ListView_GetFooterItem(hwnd:HWND;iItem:CUINT; pfi:PLVFOOTERITEM):BOOL; + +function ListView_GetItemIndexRect(hwnd:hwnd; plvii:PLVITEMINDEX; iSubItem:clong; code:clong; prc:LPRECT) :BOOL; + +function ListView_SetItemIndexState(hwndLV:HWND; plvii:PLVITEMINDEX; data:CUINT; mask:CUINT):HRESULT; + +function ListView_GetNextItemIndex(hwnd:HWND;plvii:PLVITEMINDEX; flags:LPARAM):BOOL; + +{$endif} + Type {$IFDEF UNICODE} @@ -5504,6 +5637,19 @@ CONST LVN_MARQUEEBEGIN = (LVN_FIRST-56); {$ENDIF} +{$ifdef win32vista} +Type + tagNMLVLIN = Record + hdr: NMHDR; + link: LITEM; + iItem: cint; + iSubItem: cint; + end; + NMLVLINK = tagNMLVLIN; + TNMLVLINK = tagNMLVLIN; + PNMLVLINK = ^tagNMLVLIN; +{$endif} + {$ifdef ie4plus} TYPE @@ -5551,6 +5697,17 @@ CONST LVN_GETINFOTIPA = (LVN_FIRST-57); LVN_GETINFOTIPW = (LVN_FIRST-58); + LVN_INCREMENTALSEARCHA = (LVN_FIRST-62); + LVN_INCREMENTALSEARCHW = (LVN_FIRST-63); + + LVNSCH_DEFAULT = -1; + LVNSCH_ERROR = -2; + LVNSCH_IGNORE = -3; + +{$ifdef win32vista} + LVN_COLUMNDROPDOWN = (LVN_FIRST-64); + LVN_COLUMNOVERFLOWCLICK = (LVN_FIRST-66); +{$endif} Const {$IFDEF UNICODE} @@ -5567,7 +5724,7 @@ type {$ENDIF} // _WIN32_IE >= 0x0400 -{$ifdef win32xp} +{$ifdef win32xp} // actually 2003 tagNMLVSCROLL = Record hdr : NMHDR; dx : cint; @@ -5580,10 +5737,29 @@ type CONST - LVN_BEGINSCROLL = (LVN_FIRST-80) ; + LVN_BEGINSCROLL = (LVN_FIRST-80); LVN_ENDSCROLL = (LVN_FIRST-81); // {$ENDIF} +{$ifdef win32vista} + LVN_LINKCLICK = (LVN_FIRST-84); + LVN_GETEMPTYMARKUP = (LVN_FIRST-87); + + EMF_CENTERED = $00000001; // render markup centered in the listview area + +Type + tagNMLVEMPTYMARKUP = Record + hdr : NMHDR; + // out params from client back to listview + dwFlags :DWORD; // EMF_* + szMarkup : array[0..L_MAX_URL_LENGTH-1] of wchar; // markup displayed + end; + NMLVEMPTYMARKUP = tagNMLVEMPTYMARKUP; + TNMLVEMPTYMARKUP = tagNMLVEMPTYMARKUP; + PNMLVEMPTYMARKUP = ^tagNMLVEMPTYMARKUP; + +{$endif} + {$ENDIF} // NOLISTVIEW //====== TREEVIEW CONTROL ===================================================== @@ -5628,9 +5804,20 @@ CONST {$ifdef ie5plus} TVS_NOHSCROLL = $8000; // TVS_NOSCROLL overrides this {$ENDIF} +{$ifdef win32vista} + TVS_EX_MULTISELECT = $0002; + TVS_EX_DOUBLEBUFFER = $0004; + TVS_EX_NOINDENTSTATE = $0008; + TVS_EX_RICHTOOLTIP = $0010; + TVS_EX_AUTOHSCROLL = $0020; + TVS_EX_FADEINOUTEXPANDOS = $0040; + TVS_EX_PARTIALCHECKBOXES = $0080; + TVS_EX_EXCLUSIONCHECKBOXES = $0100; + TVS_EX_DIMMEDCHECKBOXES = $0200; + TVS_EX_DRAWIMAGEASYNC = $0400; +{$endif} {$ENDIF} - // end_r_commctrl TYPE @@ -5647,6 +5834,10 @@ CONST {$ifdef ie4plus} TVIF_INTEGRAL = $0080; {$ENDIF} +{$ifdef win32vista} + TVIF_STATEEX = $0100; + TVIF_EXPANDEDIMAGE = $0200; +{$endif} TVIS_SELECTED = $0002; TVIS_CUT = $0004; TVIS_DROPHILITED = $0008; @@ -5661,6 +5852,25 @@ CONST TVIS_STATEIMAGEMASK = $F000; TVIS_USERMASK = $F000; +// IE6 + TVIS_EX_FLAT = $0001; +{$ifdef win32vista} + TVIS_EX_DISABLED = $0002; +{$endif} + TVIS_EX_ALL = $0002; +Type + +// Structure for TreeView's NM_TVSTATEIMAGECHANGING notification + tagNMTVSTATEIMAGECHANGING = Record + hdr : NMHDR; + hti : HTREEITEM; + iOldStateImageIndex : cint; + iNewStateImageIndex : cint; + end; + NMTVSTATEIMAGECHANGING = tagNMTVSTATEIMAGECHANGING; + LPNMTVSTATEIMAGECHANGING = ^tagNMTVSTATEIMAGECHANGING; + +Const I_CHILDRENCALLBACK = (-1); Type tagTVITEMA = Record @@ -5674,6 +5884,14 @@ Type iSelectedImage : cint; cChildren : cint; lParam : LPARAM; +{$ifdef ie6plus} + uStateEx : cUINT; + hwnd : HWND; + iExpandedImage : cint; +{$endif} +{$ifdef NTDDI_WIN7} + iPadding : cint; +{$endif} END; TVITEMA = tagTVITEMA; LPTVITEMA = ^tagTVITEMA; @@ -5692,6 +5910,14 @@ Type iSelectedImage : cint; cChildren : cint; lParam : LPARAM; +{$ifdef ie6plus} + uStateEx : cUINT; + hwnd : HWND; + iExpandedImage : cint; +{$endif} +{$ifdef NTDDI_WIN7} + iPadding : cint; +{$endif} END; TVITEMW = tagTVITEMW; LPTVITEMW = ^tagTVITEMW; @@ -5953,12 +6179,13 @@ CONST TVGN_PREVIOUSVISIBLE = $0007; TVGN_DROPHILITE = $0008; TVGN_CARET = $0009; - {$ifdef ie4plus} TVGN_LASTVISIBLE = $000A; {$ENDIF} // _WIN32_IE >= 0x0400 - -{$ifdef win32xp} +{$ifdef ie6plus} + TVGN_NEXTSELECTED = $000B; +{$endif} +{$ifdef win32xp} // 0x501 TVSI_NOSINGLEEXPAND = $8000; // Should not conflict with TVGN flags. {$ENDIF} @@ -5975,6 +6202,9 @@ function TreeView_GetDropHilite(hwnd:hwnd) : HTREEITEM;inline; function TreeView_GetRoot(hwnd:hwnd) : HTREEITEM;inline; function TreeView_GetLastVisible(hwnd:hwnd) : HTREEITEM;inline; +{$ifdef win32vista} +function TreeView_GetNextSelected(hwnd:hwnd; hitem:HTREEITEM):HTREEITEM;inline; +{$endif} CONST TVM_SELECTITEM = (TV_FIRST + 11); @@ -6367,10 +6597,41 @@ CONST // Macro 216 Function TreeView_MapHTREEITEMToAccID( hwnd : hwnd; htreeitem : WPARAM):UINT; - - {$ENDIF} +{$ifdef win32vista} +CONST + TVM_GETSELECTEDCOUNT = (TV_FIRST + 70); + TVM_SHOWINFOTIP = (TV_FIRST + 71); + TVM_GETITEMPARTRECT = (TV_FIRST + 72); + +Type + TVITEMPART = (TVGIPR_BUTTON = $0001); + pTVITEMPART = ^TVITEMPART; + + tagTVGETITEMPARTRECTINFO = Record + hti :HTREEITEM ; + prc :PRECT; + partID :TVITEMPART; + end; + TVGETITEMPARTRECTINFO = tagTVGETITEMPARTRECTINFO; + +function TreeView_GetSelectedCount(hwnd:hwnd):DWORD; +// (DWORD)SNDMSG((hwnd), TVM_GETSELECTEDCOUNT, 0, 0) + +function TreeView_ShowInfoTip(hwnd:HWND; hitem:HTREEITEM):DWORD; +// (DWORD)SNDMSG((hwnd), TVM_SHOWINFOTIP, 0, (LPARAM)(hitem)) + +function TreeView_GetItemPartRect(hwnd:HWND; hitem:HTREEITEM; prc:prect; partid:TVITEMPART):bool; +//{ TVGETITEMPARTRECTINFO info; \ +// info.hti = (hitem); \ +// info.prc = (prc); \ +// info.partID = (partid); \ +// (BOOL)SNDMSG((hwnd), TVM_GETITEMPARTRECT, 0, (LPARAM)&info); \ + +{$endif} + + TYPE PFNTVCOMPARE =function (lparam1:LPARAM;lparam2:LPARAM;lParamSort:LParam): cint; STDCALL; TTVCompare = PFNTVCOMPARE; @@ -6504,6 +6765,35 @@ Type LPNMTVDISPINFO = LPNMTVDISPINFOA; {$ENDIF} +{$ifdef IE6plus} + tagTVDISPINFOEXA = Record + hdr : NMHDR; + item :TVITEMEXA; + end; + NMTVDISPINFOEXA = tagTVDISPINFOEXA; + LPNMTVDISPINFOEXA = ^tagTVDISPINFOEXA; + + tagTVDISPINFOEXW = Record + hdr : NMHDR; + item :TVITEMEXW; + end; + NMTVDISPINFOEXW = tagTVDISPINFOEXW; + LPNMTVDISPINFOEXW = ^tagTVDISPINFOEXW; + +{$IFDEF UNICODE} + NMTVDISPINFOEX = NMTVDISPINFOEXW; + LPNMTVDISPINFOEX = LPNMTVDISPINFOEXW; +{$ELSE} + NMTVDISPINFOEX = NMTVDISPINFOEXA; + LPNMTVDISPINFOEX = LPNMTVDISPINFOEXA; +{$ENDIF} + + TV_DISPINFOEXA = NMTVDISPINFOEXA; + TV_DISPINFOEXW = NMTVDISPINFOEXW; + TV_DISPINFOEX = NMTVDISPINFOEX; + + +{$endif} {$ifdef ie3plus} TV_DISPINFOA = NMTVDISPINFOA; @@ -6550,6 +6840,14 @@ CONST TVNRET_SKIPOLD = 1; TVNRET_SKIPNEW = 2; +{$ifdef win32vista} + TVN_ITEMCHANGINGA = (TVN_FIRST-16); + TVN_ITEMCHANGINGW = (TVN_FIRST-17); + TVN_ITEMCHANGEDA = (TVN_FIRST-18); + TVN_ITEMCHANGEDW = (TVN_FIRST-19); + TVN_ASYNCDRAW = (TVN_FIRST-20); +{$endif} + {$ENDIF} // 0x400 @@ -6680,6 +6978,41 @@ CONST {$ENDIF} // _WIN32_IE >= 0x0400 +{$ifdef ie6plus} +Type + tagTVITEMCHANGE = packed record + hdr : NMHDR; + uChanged : UINT; + hItem : HTREEITEM; + uStateNew : UINT; + uStateOld : UINT; + lParam : LPARAM; + end; + NMTVITEMCHANGE = tagTVITEMCHANGE; + PNMTVITEMCHANGE = ^NMTVITEMCHANGE; + + tagNMTVASYNCDRAW = packed record + hdr : NMHDR; + pimldp : PIMAGELISTDRAWPARAMS; { the draw that failed } + hr : HRESULT; { why it failed } + hItem : HTREEITEM; { item that failed to draw icon } + lParam : LPARAM; { its data } + dwRetFlags : DWORD; { Out Params } + iRetImageIndex : longint; { What listview should do on return } + end; { used if ADRF_DRAWIMAGE is returned } + NMTVASYNCDRAW = tagNMTVASYNCDRAW; + PNMTVASYNCDRAW = ^NMTVASYNCDRAW; + +CONST +{$IFDEF UNICODE} + TVN_ITEMCHANGING = TVN_ITEMCHANGINGW; + TVN_ITEMCHANGED = TVN_ITEMCHANGEDW; +{$ELSE} + TVN_ITEMCHANGING = TVN_ITEMCHANGINGA; + TVN_ITEMCHANGED = TVN_ITEMCHANGEDA; +{$ENDIF} +{$endif} + {$ENDIF} // NOTREEVIEW {$ifdef ie3plus} @@ -6805,7 +7138,9 @@ CONST {$ifdef ie4plus} CBES_EX_NOSIZELIMIT = $00000008; CBES_EX_CASESENSITIVE = $00000010; - +{$ifdef win32vista} + CBES_EX_TEXTENDELLIPSIS = $00000020; +{$endif} TYPE DummyStruct9 = Record @@ -8875,18 +9210,100 @@ CONST BCN_HOTITEMCHANGE = (BCN_FIRST + $0001); BST_HOT = $0200; +{$ifdef win32vista} + BST_DROPDOWNPUSHED = $0400; +// BUTTON STYLES + BS_SPLITBUTTON = $00000000C; // This block L suffixed (unsigned) + BS_DEFSPLITBUTTON = $00000000D; + BS_COMMANDLINK = $00000000E; + BS_DEFCOMMANDLINK = $00000000F; + +// SPLIT BUTTON INFO mask flags + BCSIF_GLYPH = $00001; + BCSIF_IMAGE = $00002; + BCSIF_STYLE = $00004; + BCSIF_SIZE = $00008; + +// SPLIT BUTTON STYLE flags + BCSS_NOSPLIT = $00001; + BCSS_STRETCH = $00002; + BCSS_ALIGNLEFT = $00004; + BCSS_IMAGE = $00008; + + BCM_SETDROPDOWNSTATE = (BCM_FIRST + $0006); + BCM_SETSPLITINFO = (BCM_FIRST + $0007); + BCM_GETSPLITINFO = (BCM_FIRST + $0008); + BCM_SETNOTE = (BCM_FIRST + $0009); + BCM_GETNOTE = (BCM_FIRST + $000A); + BCM_GETNOTELENGTH = (BCM_FIRST + $000B); + BCM_SETSHIELD = (BCM_FIRST + $000C); + + +// Value to pass to BCM_SETIMAGELIST to indicate that no glyph should be +// displayed + BCCL_NOGLYPH = HIMAGELIST(-1); + + BCN_DROPDOWN = (BCN_FIRST + $0002); +Type + + tagBUTTON_SPLITINFO = record + mask : UINT; + himlGlyph : HIMAGELIST; + uSplitStyle : UINT; + size : SIZE; + end; + BUTTON_SPLITINFO = tagBUTTON_SPLITINFO; + PBUTTON_SPLITINFO = ^BUTTON_SPLITINFO; + LPBUTTON_SPLITINFO = PBUTTON_SPLITINFO; + + { NOTIFICATION MESSAGES } + + tagNMBCDROPDOWN = packed record + hdr : NMHDR; + rcButton : RECT; + end; + NMBCDROPDOWN = tagNMBCDROPDOWN; + PNMBCDROPDOWN = ^NMBCDROPDOWN; + LPNMBCDROPDOWN = PNMBCDROPDOWN; + +// BUTTON MESSAGES + +function Button_SetDropDownState(hwnd:HWND; fDropDown:BOOL) : BOOL; +// (BOOL)SNDMSG((hwnd), BCM_SETDROPDOWNSTATE, (WPARAM)(fDropDown), 0) + +function Button_SetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO):BOOL; +// (BOOL)SNDMSG((hwnd), BCM_SETSPLITINFO, 0, (LPARAM)(pInfo)) + +function Button_GetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO) :BOOL; +// (BOOL)SNDMSG((hwnd), BCM_GETSPLITINFO, 0, (LPARAM)(pInfo)) + +function Button_SetNote(hwnd:HWND; psz:LPCWSTR) :BOOL; +// (BOOL)SNDMSG((hwnd), BCM_SETNOTE, 0, (LPARAM)(psz)) + +function Button_GetNote(hwnd:HWND; psz:LPCWSTR; pcc:cint) :BOOL; +// (BOOL)SNDMSG((hwnd), BCM_GETNOTE, (WPARAM)pcc, (LPARAM)psz) + +function Button_GetNoteLength(hwnd:HWND) :LRESULT; +// (LRESULT)SNDMSG((hwnd), BCM_GETNOTELENGTH, 0, 0) + +// Macro to use on a button or command link to display an elevated icon + +function Button_SetElevationRequiredState(hwnd:HWND; fRequired:BOOL) :LRESULT; +// (LRESULT)SNDMSG((hwnd), BCM_SETSHIELD, 0, (LPARAM)fRequired) + +{$endif} {$ENDIF} - - {$ENDIF} // NOBUTTON + /// ===================== End Button Control ========================= /// ====================== Static Control ============================= {$IFNDEF NOSTATIC} +const {$IFDEF _WIN32} // Static Class Name @@ -9104,8 +9521,8 @@ CONST {$ifdef win32xp} INVALID_LINK_INDEX = (-1); - MAX_LINKID_TEXT = 48; - L_MAX_URL_LENGTH = (2048 + 32 + length('://')); + + WC_LINK = {L}'SysLink'; @@ -9134,19 +9551,6 @@ CONST TYPE - tagLITEM = Record - mask : UINT; - iLink : cint; - state : UINT; - stateMask : UINT; - szID : Array [0..MAX_LINKID_TEXT-1] OF WCHAR; - szUrl : Array [0..L_MAX_URL_LENGTH-1] OF WCHAR; - END; - LITEM = tagLITEM; - PLITEM = ^tagLITEM; - TLITEM = tagLITEM; -// PLITEM = ^tagLITEM; - tagLHITTESTINFO = Record pt : POINT; @@ -10981,8 +11385,77 @@ Function ListView_MapIDToIndex( hwnd : hwnd; id : WPARAM):UINT; Begin Result:=UINT(SendMessage((hwnd), LVM_MAPIDTOINDEX, id, LPARAM(0))); end; + +function ListView_IsItemVisible(hwnd:hwnd; aindex:cuint):cuint; +begin + Result:=UINT(SendMessage((hwnd),LVM_ISITEMVISIBLE, WPARAM(aindex), LPARAM(0))); +end; {$ENDIF} +{$ifdef win32vista} + +function ListView_SetGroupHeaderImageList(hwnd:HWNd;himl:HIMAGELIST):HIMAGELIST; +begin + Result:=HIMAGELIST(SendMessage((hwnd),LVM_SETIMAGELIST, WPARAM(LVSIL_GROUPHEADER), LPARAM(HIMAGELIST((himl))))); +end; + +function ListView_GetGroupHeaderImageList(hwnd:HWND):HIMAGELIST; +begin + Result:=HIMAGELIST(SendMessage((hwnd),LVM_GETIMAGELIST, WPARAM(LVSIL_GROUPHEADER),LPARAM(0))); +end; + +function ListView_GetEmptyText(hwnd:HWND;pszText:LPWSTR; cchText:CUINT):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETEMPTYTEXT, WPARAM(cchText), LPARAM(pszText))); +end; + +function ListView_GetFooterRect(hwnd:HWND; prc:PRECT):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERRECT, WPARAM(0), LPARAM(prc))); +end; + +function ListView_GetFooterInfo(hwnd:HWND;plvfi: LPLVFOOTERINFO ):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERINFO, WPARAM(0), LPARAM(plvfi))); +end; + +function ListView_GetFooterItemRect(hwnd:HWND;iItem:CUINT;prc:PRECT):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERITEMRECT, WPARAM(iItem), LPARAM(prc))); +end; + +function ListView_GetFooterItem(hwnd:HWND;iItem:CUINT; pfi:PLVFOOTERITEM):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERITEM, WPARAM(iItem), LPARAM(pfi))); +end; + +// (hwnd), LVM_GETITEMINDEXRECT, (WPARAM)(LVITEMINDEX*)(plvii), \ +// ((prc) ? ((((LPRECT)(prc))->top = (iSubItem)), (((LPRECT)(prc))->left = (code)), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL)) + +function ListView_GetItemIndexRect(hwnd:hwnd; plvii:PLVITEMINDEX; iSubItem:clong; code:clong; prc:LPRECT) :BOOL; +begin + if assigned(prc) then + begin + prc^.top:=iSubItem; + prc^.left:=code; + end; + Result:=BOOL(SendMessage((hwnd), LVM_GETITEMINDEXRECT, WPARAM(pLVITEMINDEX(plvii)), LPARAM(PRC))); +end; + +function ListView_SetItemIndexState(hwndLV:HWND; plvii:PLVITEMINDEX; data:CUINT; mask:CUINT):HRESULT; + var macro_lvi: LV_ITEM ; +begin + macro_lvi.stateMask := (mask); + macro_lvi.state := (data); + Result:=HRESULT(SendMessage((hwndLV),LVM_SETITEMINDEXSTATE, WPARAM(pLVITEMINDEX(plvii)), LPARAM(PLV_ITEM(@macro_lvi)))); +end; + +function ListView_GetNextItemIndex(hwnd:HWND;plvii:PLVITEMINDEX; flags:LPARAM):BOOL; +begin + Result:=BOOL(SendMessage((hwnd),LVM_GETNEXTITEMINDEX, WPARAM(pLVITEMINDEX(plvii)), MAKELPARAM(flags, 0))); +end; +{$endif} + // Macro 154 // #define ListView_SetBkImage(hwnd, plvbki) \ // (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki)) @@ -11718,6 +12191,27 @@ Begin end; {$endif} +{$ifdef win32vista} +function TreeView_GetSelectedCount(hwnd:hwnd):DWORD; +Begin + Result:=DWORD(SendMessage((hwnd),TVM_GETSELECTEDCOUNT, 0, 0)); +end; + +function TreeView_ShowInfoTip(hwnd:HWND; hitem:HTREEITEM):DWORD; +Begin + Result:=DWORD(SendMessage((hwnd),TVM_SHOWINFOTIP, 0, LPARAM(hitem))); +end; + +function TreeView_GetItemPartRect(hwnd:HWND; hitem:HTREEITEM; prc:prect; partid:TVITEMPART):bool; +var info : TVGETITEMPARTRECTINFO; +Begin + info.hti := (hitem); + info.prc := (prc); + info.partID := (partid); + Result:=BOOL(SendMessage((hwnd), TVM_GETITEMPARTRECT, 0, LPARAM(@info))); +end; +{$endif} + // Macro 217 //#define TabCtrl_GetImageList(hwnd) \ @@ -12741,5 +13235,49 @@ Begin Result:=cint(SendMessage((hwnd), CB_GETMINVISIBLE, 0, 0)) end; +{$ifdef win32vista} +function TreeView_GetNextSelected(hwnd:hwnd; hitem:HTREEITEM):HTREEITEM;inline; +begin + result:=TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTSELECTED) +end; +{$endif} +{$ifdef win32vista} +function Button_SetDropDownState(hwnd:HWND; fDropDown:BOOL) : BOOL; +Begin + Result:=BOOL(SendMessage((hwnd), BCM_SETDROPDOWNSTATE, WPARAM(fDropDown), 0)); +end; + +function Button_SetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO):BOOL; +Begin + Result:=BOOL(SendMessage((hwnd), BCM_SETSPLITINFO, 0, LPARAM(pInfo))); +end; + +function Button_GetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO) :BOOL; +Begin + Result:=BOOL(SendMessage((hwnd), BCM_GETSPLITINFO, 0, LPARAM(pInfo))); +end; + +function Button_SetNote(hwnd:HWND; psz:LPCWSTR) :BOOL; +Begin + Result:=BOOL(SendMessage((hwnd), BCM_SETNOTE, 0, LPARAM(psz))); +end; + +function Button_GetNote(hwnd:HWND; psz:LPCWSTR; pcc:cint) :BOOL; +Begin + Result:=BOOL(SendMessage((hwnd), BCM_GETNOTE, WPARAM(pcc), LPARAM(psz))); +end; + +function Button_GetNoteLength(hwnd:HWND) :LRESULT; +Begin + Result:=LRESULT(SendMessage((hwnd), BCM_GETNOTELENGTH, 0, 0)); +end; + +// Macro to use on a button or command link to display an elevated icon + +function Button_SetElevationRequiredState(hwnd:HWND; fRequired:BOOL) :LRESULT; +Begin + Result:=LRESULT(SendMessage((hwnd), BCM_SETSHIELD, 0, LPARAM(fRequired))); +end; +{$endif} End.