📄 listview.mac
字号:
ListView_SetHoverTime MACRO hwnd:REQ, dwHoverTime:REQ
invoke SendMessage, hwnd, LVM_SETHOVERTIME, 0, dwHoverTime
ENDM
IFNDEF LVM_SETICONSPACING
LVM_SETICONSPACING equ LVM_FIRST + 53
ENDIF
;; -1 for x and y means we'll use the default (system settings)
;; 0 for x or y means use the current setting (allows you to change just one param)
ListView_SetIconSpacing MACRO hwnd:REQ, x:REQ, y:REQ
invoke SendMessage, hwnd, LVM_SETICONSPACING, 0, $MAKEDWORD(x, y)
ENDM
ListView_SetImageList MACRO hwnd:REQ, himl:REQ, iImageList:REQ
invoke SendMessage, hwnd, LVM_SETIMAGELIST, iImageList, himl
ENDM
IFNDEF LVSETINFOTIP
LVSETINFOTIP STRUCT
cbSize UINT ?
dwFlags DWORD ?
pszText LPWSTR ?
iItem DWORD ?
iSubItem DWORD ?
LVSETINFOTIP ENDS
ENDIF
IFNDEF LVM_SETINFOTIP
LVM_SETINFOTIP equ LVM_FIRST + 173
ENDIF
ListView_SetInfoTip MACRO hwnd:REQ, plvInfoTip:REQ
invoke SendMessage, hwnd, LVM_SETINFOTIP, 0, plvInfoTip
ENDM
IFNDEF LVM_SETINSERTMARK
LVM_SETINSERTMARK equ LVM_FIRST + 166
ENDIF
ListView_SetInsertMark MACRO hwnd:REQ, lvim:REQ
invoke SendMessage, hwnd, LVM_SETINSERTMARK, 0, lvim
ENDM
IFNDEF LVM_SETINSERTMARKCOLOR
LVM_SETINSERTMARKCOLOR equ LVM_FIRST + 170
ENDIF
ListView_SetInsertMarkColor MACRO hwnd:REQ, color:REQ
invoke SendMessage, hwnd, LVM_SETINSERTMARKCOLOR, 0, color
ENDM
ListView_SetItem MACRO hwnd:REQ, pitem:REQ
invoke SendMessage, hwnd, LVM_SETITEM, 0, pitem
ENDM
ListView_SetItemCount MACRO hwnd:REQ, cItems:REQ
invoke SendMessage, hwnd, LVM_SETITEMCOUNT, cItems, 0
ENDM
;; these flags only apply to LVS_OWNERDATA listviews in report or list mode
IFNDEF LVSICF_NOINVALIDATEALL
LVSICF_NOINVALIDATEALL equ 1
ENDIF
IFNDEF LVSICF_NOSCROLL
LVSICF_NOSCROLL equ 2
ENDIF
ListView_SetItemCountEx MACRO hwnd:REQ, cItems:REQ, dwFlags:REQ
invoke SendMessage, hwnd, LVM_SETITEMCOUNT, cItems, dwFlags
ENDM
ListView_SetItemPosition MACRO hwnd:REQ, i:REQ, x:REQ, y:REQ
invoke SendMessage, hwnd, LVM_SETITEMPOSITION, i, $MAKEDWORD(x, y)
ENDM
;;...................................................................
ListView_SetItemPosition32 MACRO hwnd:REQ, iItem:REQ, ix:REQ, iy:REQ
;;local SegName
;; IFNDEF ListView_dummy_POINT
;; ;SegName TEXTEQU @CurSeg
;; .data?
;; ListView_dummy_POINT POINT <?>
;; .code
;; ;line TEXTEQU %@Line
;; ;% ECHO @FileCur(line) : ListView_SetItemPosition32 macro report! Extra POINT structure defined.;;'
;; ;@CurSeg ENDS
;; ;SegName SEGMENT
;; ENDIF
sub esp, sizeof POINT
IF (OPATTR (ix)) AND 00000010y ;; Is a memory variable
push ix
pop (POINT PTR [esp]).x
ELSE
mov (POINT PTR [esp]).x, ix
ENDIF
IF (OPATTR (iy)) AND 00000010y ;; Is a memory variable
push iy
pop (POINT PTR [esp]).y
ELSE
mov (POINT PTR [esp]).y, iy
ENDIF
invoke SendMessage, hwnd, LVM_SETITEMPOSITION32, iItem, esp
add esp, sizeof POINT
ENDM
IFNDEF LVIS_ACTIVATING
LVIS_ACTIVATING equ 20h
ENDIF
IFNDEF LVIF_INDENT
LVIF_INDENT equ 10h
ENDIF
IFNDEF LVIF_NORECOMPUTE
LVIF_NORECOMPUTE equ 800h
ENDIF
;;...................................................................
ListView_SetItemState MACRO hwnd:REQ, iItem:REQ, data:REQ, flags:REQ
;;local SegName
;; IFNDEF ListView_dummy_LV_ITEM
;; ;SegName TEXTEQU @CurSeg
;; .data?
;; ListView_dummy_LV_ITEM LV_ITEM <>
;; .code
;; ;line TEXTEQU %@Line
;; ;% ECHO @FileCur(line) : ListView_SetItemState macro report! Extra LV_ITEM structure defined.;;'
;; ;@CurSeg ENDS
;; ;SegName SEGMENT
;; ENDIF
sub esp, sizeof LV_ITEM
IF (OPATTR (data)) AND 00000010y ;; Is a memory variable
push data
pop (LV_ITEM PTR [esp]).state
ELSE
mov (LV_ITEM PTR [esp]).state, data
ENDIF
IF (OPATTR (flags)) AND 00000010y ;; Is a memory variable
push flags
pop (LV_ITEM PTR [esp]).stateMask
ELSE
mov (LV_ITEM PTR [esp]).stateMask, flags
ENDIF
invoke SendMessage, hwnd, LVM_SETITEMSTATE, iItem, esp
add esp, sizeof LV_ITEM
ENDM
;;...................................................................
ListView_SetCheckState MACRO hwnd:REQ, i:REQ, fCheck:REQ
local line, reax, err
reax = 0
err = 0
IF (OPATTR (fCheck)) AND 00000100y ;; Is an immediate value
IF fCheck
ListView_SetItemState hwnd, i, $INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK
ELSE
ListView_SetItemState hwnd, i, $INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK
ENDIF
ELSE
IF (OPATTR (fCheck)) AND 00010000y ;; Is a register value
IFDIFI <fCheck>, <eax> ;; not eax
xor eax, eax
cmp fCheck, 0
setnz al
ENDIF
ELSE
xor eax, eax
cmp fCheck, 0
setnz al
ENDIF
inc eax
shl eax, 12
reax = 1
IF reax
IFIDNI <hwnd>, <eax>
err = 1
ENDIF
IFIDNI <i>, <eax>
err = 1
ENDIF
IF err
line TEXTEQU %@Line
% ECHO @FileCur(line) : ERROR! Register value overwritten by ListView_SetItemState macro.
.ERR
ENDIF
ENDIF
ListView_SetItemState hwnd, i, eax, LVIS_STATEIMAGEMASK
ENDIF
ENDM
;.............................................................
ListView_SetItemText MACRO hwnd:REQ, itm:REQ, sbi:REQ, psz:REQ
local SegName, p, line, reax, err
reax = 0
err = 0
;; IFNDEF ListView_dummy_LV_ITEM
;; ;SegName TEXTEQU @CurSeg
;; .data?
;; ListView_dummy_LV_ITEM LV_ITEM <>
;; .code
;; ;line TEXTEQU %@Line
;; ;% ECHO @FileCur(line) : ListView_SetItemText macro report! Extra LV_ITEM structure defined.;;'
;; ;@CurSeg ENDS
;; ;SegName SEGMENT
;; ENDIF
sub esp, sizeof LV_ITEM
IF (OPATTR (sbi)) AND 00000010y ;; Is a memory variable
push sbi
pop (LV_ITEM PTR [esp]).iSubItem
ELSE
mov (LV_ITEM PTR [esp]).iSubItem, sbi
ENDIF
IF $IsAddr(psz)
;; IF @InStr(1, <psz>, <addr >)
p SUBSTR <psz>, 6
IF (OPATTR (p)) AND 01000000y ;; Is relative to SS
lea eax, p
mov (LV_ITEM PTR [esp]).pszText, eax
reax = 1
ELSE
mov (LV_ITEM PTR [esp]).pszText, offset p ;; 1 byte smaller than lea
ENDIF
ELSEIF (OPATTR (psz)) AND 00010000y ;; Is a register value
mov (LV_ITEM PTR [esp]).pszText, psz
ELSEIF (OPATTR (psz)) AND 00000100y ;; Is an immediate value
;;ELSEIF psz EQ 0
;and (LV_ITEM PTR [esp]).pszText, 0
mov (LV_ITEM PTR [esp]).pszText, psz
ELSEIF (OPATTR (psz)) AND 00000010y ;; Is a memory variable
push psz
pop (LV_ITEM PTR [esp]).pszText
ELSE
line TEXTEQU %@Line
% ECHO @FileCur(line) : ListView_SetItemText macro ERROR! Can't recognize type of &psz. Should be string pointer.;;'
.ERR
ENDIF
IF reax
IFIDNI <hwnd>, <eax>
err = 1
ENDIF
IFIDNI <itm>, <eax>
err = 1
ENDIF
IF err
line TEXTEQU %@Line
% ECHO @FileCur(line) : ERROR! Register value overwritten by ListView_SetItemText macro.
.ERR
ENDIF
ENDIF
invoke SendMessage, hwnd, LVM_SETITEMTEXT, itm, esp
add esp, sizeof LV_ITEM
ENDM
IFNDEF LVM_SETOUTLINECOLOR
LVM_SETOUTLINECOLOR equ LVM_FIRST + 177
ENDIF
ListView_SetOutlineColor MACRO hwnd:REQ, color:REQ
invoke SendMessage, hwnd, LVM_SETOUTLINECOLOR, 0, color
ENDM
IFNDEF LVM_SETSELECTEDCOLUMN
LVM_SETSELECTEDCOLUMN equ LVM_FIRST + 140
ENDIF
ListView_SetSelectedColumn MACRO hwnd:REQ, iCol:REQ
invoke SendMessage, hwnd, LVM_SETSELECTEDCOLUMN, iCol, 0
ENDM
IFNDEF LVM_SETSELECTIONMARK
LVM_SETSELECTIONMARK equ LVM_FIRST + 67
ENDIF
ListView_SetSelectionMark MACRO hwnd:REQ, iItem:REQ
invoke SendMessage, hwnd, LVM_SETSELECTIONMARK, 0, iItem
ENDM
ListView_SetTextBkColor MACRO hwnd:REQ, clrText:REQ
invoke SendMessage, hwnd, LVM_SETTEXTBKCOLOR, 0, clrText
ENDM
ListView_SetTextColor MACRO hwnd:REQ, clrText:REQ
invoke SendMessage, hwnd, LVM_SETTEXTCOLOR, 0, clrText
ENDM
IFNDEF LVM_SETTILEINFO
LVM_SETTILEINFO equ LVM_FIRST + 164
ENDIF
ListView_SetTileInfo MACRO hwnd:REQ, pti:REQ
invoke SendMessage, hwnd, LVM_SETTILEINFO, 0, pti
ENDM
IFNDEF LVM_SETTILEVIEWINFO
LVM_SETTILEVIEWINFO equ LVM_FIRST + 162
ENDIF
ListView_SetTileViewInfo MACRO hwnd:REQ, ptvi:REQ
invoke SendMessage, hwnd, LVM_SETTILEVIEWINFO, 0, ptvi
ENDM
IFNDEF LVM_SETTOOLTIPS
LVM_SETTOOLTIPS equ LVM_FIRST + 74
ENDIF
ListView_SetToolTips MACRO hwnd:REQ, hwndToolTip:REQ
invoke SendMessage, hwnd, LVM_SETTOOLTIPS, hwndToolTip, 0
ENDM
IFNDEF LVM_SETTILEWIDTH
LVM_SETTILEWIDTH equ LVM_FIRST + 141
ENDIF
ListView_SetTileWidth MACRO hwnd:REQ, cpWidth:REQ
invoke SendMessage, hwnd, LVM_SETTILEWIDTH, cpWidth, 0
ENDM
IFNDEF LVM_SETUNICODEFORMAT
LVM_SETUNICODEFORMAT equ CCM_SETUNICODEFORMAT
ENDIF
ListView_SetUnicodeFormat MACRO hwnd:REQ, fUnicode:REQ
invoke SendMessage, hwnd, LVM_SETUNICODEFORMAT, fUnicode, 0
ENDM
IFNDEF LVM_SETVIEW
LVM_SETVIEW equ LVM_FIRST + 142
ENDIF
ListView_SetView MACRO hwnd:REQ, iView:REQ
invoke SendMessage, hwnd, LVM_SETVIEW, iView, 0
ENDM
IFNDEF LV_MAX_WORKAREAS
LV_MAX_WORKAREAS equ 16
ENDIF
IFNDEF LVM_SETWORKAREAS
LVM_SETWORKAREAS equ LVM_FIRST + 65
ENDIF
ListView_SetWorkAreas MACRO hwnd:REQ, nWorkAreas:REQ, prc:REQ
local n, line
IF (OPATTR (nWorkAreas)) AND 00000100y
;; Is an immediate value
IF nWorkAreas GT LV_MAX_WORKAREAS
n TEXTEQU %LV_MAX_WORKAREAS
line TEXTEQU %@Line
% ECHO @FileCur(line) : ListView_SetWorkAreas macro ERROR! The maximum number of working areas allowed is n.
.ERR
ENDIF
ENDIF
invoke SendMessage, hwnd, LVM_SETWORKAREAS, nWorkAreas, prc
ENDM
IFNDEF LVM_SORTGROUPS
LVM_SORTGROUPS equ LVM_FIRST + 158
ENDIF
ListView_SortGroups MACRO hwnd:REQ, pfnGroupCompate:REQ, plv:REQ
invoke SendMessage, hwnd, LVM_SORTGROUPS, pfnGroupCompate, plv
ENDM
ListView_SortItems MACRO hwnd:REQ, pfnCompare:REQ, lParamSort:REQ
invoke SendMessage, hwnd, LVM_SORTITEMS, lParamSort, pfnCompare
ENDM
IFNDEF LVM_SORTITEMSEX
LVM_SORTITEMSEX equ LVM_FIRST + 81
ENDIF
ListView_SortItemsEx MACRO hwnd:REQ, pfnCompare:REQ, lParamSort:REQ
invoke SendMessage, hwnd, LVM_SORTITEMSEX, lParamSort, pfnCompare
ENDM
ListView_SubItemHitTest MACRO hwnd:REQ, plvhti:REQ
invoke SendMessage, hwnd, LVM_SUBITEMHITTEST, 0, plvhti
ENDM
ListView_Update MACRO hwnd:REQ, iItem:REQ
invoke SendMessage, hwnd, LVM_UPDATE, iItem, 0
ENDM
IFNDEF NMLVGETINFOTIP
NMLVGETINFOTIP STRUCT
hdr NMHDR <>
dwFlags DWORD ?
pszText LPSTR ?
cchTextMax UINT ?
iItem UINT ?
iSubItem UINT ?
lParam LPARAM ?
NMLVGETINFOTIP ENDS
NMLVGETINFOTIPW equ <NMLVGETINFOTIP>
NMLVGETINFOTIPA equ <NMLVGETINFOTIP>
ENDIF
IFNDEF LVGIT_UNFOLDED
LVGIT_UNFOLDED equ 1
ENDIF
IFNDEF LVN_GETINFOTIP
LVN_GETINFOTIPA equ LVN_FIRST-57
LVN_GETINFOTIPW equ LVN_FIRST-58
IF UNICODE
LVN_GETINFOTIP equ LVN_GETINFOTIPW
ELSE
LVN_GETINFOTIP equ LVN_GETINFOTIPA
ENDIF
ENDIF
IFNDEF LVN_HOTTRACK
LVN_HOTTRACK equ LVN_FIRST - 21
ENDIF
IFNDEF LVN_ITEMACTIVATE
LVN_ITEMACTIVATE equ LVN_FIRST - 14
ENDIF
IFNDEF LVN_ODSTATECHANGED
LVN_ODSTATECHANGED equ LVN_FIRST - 15
ENDIF
IFNDEF LVN_MARQUEEBEGIN
LVN_MARQUEEBEGIN equ LVN_FIRST - 56
ENDIF
IFNDEF LVN_ODCACHEHINT
LVN_ODCACHEHINT equ LVN_FIRST - 13
ENDIF
IFNDEF LVN_ODFINDITEM
LVN_ODFINDITEMA equ LVN_FIRST - 52
LVN_ODFINDITEMW equ LVN_FIRST - 79
IF UNICODE
LVN_ODFINDITEM equ LVN_ODFINDITEMW
ELSE
LVN_ODFINDITEM equ LVN_ODFINDITEMA
ENDIF
ENDIF
IFNDEF NM_CUSTOMDRAW
NM_CUSTOMDRAW equ NM_FIRST - 12
ENDIF
IFNDEF NM_HOVER
NM_HOVER equ NM_FIRST - 13
ENDIF
IFNDEF NM_RELEASEDCAPTURE
NM_RELEASEDCAPTURE equ NM_FIRST - 16
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -