📄 listview.mac
字号:
ListView_GetItemState MACRO hwnd:REQ, i:REQ, imask:REQ
invoke SendMessage, hwnd, LVM_GETITEMSTATE, i, imask
ENDM
;;......................................................................
ListView_GetItemText MACRO hwnd:REQ, itm:REQ, sbi:REQ, psz:REQ, cch: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_GetItemText 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 (OPATTR (cch)) AND 00000010y ;; Is a memory variable
push cch
pop (LV_ITEM PTR [esp]).cchTextMax
ELSE
mov (LV_ITEM PTR [esp]).cchTextMax, cch
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 00000010y ;; Is a memory variable
push psz
pop (LV_ITEM PTR [esp]).pszText
;;ELSEIF psz EQ NULL
;; line TEXTEQU %@Line
;; % ECHO @FileCur(line) : ListView_GetItemText macro ERROR! Pointer to string is NULL.
;; .ERR
ELSE
line TEXTEQU %@Line
% ECHO @FileCur(line) : ListView_GetItemText 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_GetItemText macro.
.ERR
ENDIF
ENDIF
invoke SendMessage, hwnd, LVM_GETITEMTEXT, itm, esp
add esp, sizeof LV_ITEM
ENDM
;;............................................................
ListView_GetNextItem MACRO hwnd:REQ, iStart:REQ, flags:REQ
invoke SendMessage, hwnd, LVM_GETNEXTITEM, iStart, $MAKEDWORD(flags, 0)
ENDM
IFNDEF LVM_GETNUMBEROFWORKAREAS
LVM_GETNUMBEROFWORKAREAS equ LVM_FIRST + 73
ENDIF
ListView_GetNumberOfWorkAreas MACRO hwnd:REQ, lpuWorkAreas:REQ
invoke SendMessage, hwnd, LVM_GETNUMBEROFWORKAREAS, 0, lpuWorkAreas
ENDM
ListView_GetOrigin MACRO hwnd:REQ, lpptOrg:REQ
invoke SendMessage, hwnd, LVM_GETORIGIN, 0, lpptOrg
ENDM
IFNDEF LVM_GETOUTLINECOLOR
LVM_GETOUTLINECOLOR equ LVM_FIRST + 176
ENDIF
ListView_GetOutlineColor MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETOUTLINECOLOR, 0, 0
ENDM
ListView_GetSelectedCount MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETSELECTEDCOUNT, 0, 0
ENDM
IFNDEF LVM_GETSELECTEDCOLUMN
LVM_GETSELECTEDCOLUMN equ LVM_FIRST + 174
ENDIF
ListView_GetSelectedColumn MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETSELECTEDCOLUMN, 0, 0
ENDM
IFNDEF LVM_GETSELECTIONMARK
LVM_GETSELECTIONMARK equ LVM_FIRST + 66
ENDIF
ListView_GetSelectionMark MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETSELECTIONMARK, 0, 0
ENDM
ListView_GetStringWidth MACRO hwnd:REQ, psz:REQ
invoke SendMessage, hwnd, LVM_GETSTRINGWIDTH, 0, psz
ENDM
IFNDEF LVM_GETSUBITEMRECT
LVM_GETSUBITEMRECT equ LVM_FIRST + 56
ENDIF
;;.................................................................................
ListView_GetSubItemRect MACRO hwnd:REQ, iItem:REQ, iSubItem:REQ, code:REQ, prc:REQ
local p, line
IF $IsAddr(prc)
;; IF @InStr(1, <prc>, <addr >)
p SUBSTR <prc>, 6
IF (OPATTR (p)) AND 01000000y ;; Is relative to SS
lea eax, p
ELSE
mov eax, offset p ;; 1 byte smaller than lea
ENDIF
IF (OPATTR (code)) AND 00000010y ;; Is a memory variable or has a relocatable data label
push code
pop dword ptr [eax]
ELSE
mov dword ptr [eax], code ;; (RECT PTR [eax]).left, code
ENDIF
IF (OPATTR (iSubItem)) AND 00000010y ;; Is a memory variable or has a relocatable data label
push iSubItem
pop dword ptr [eax][4]
ELSE
mov dword ptr [eax][4], iSubItem
ENDIF
;;_mov dword ptr [eax][4], iSubItem ; mov (RECT PTR [eax]).top, iSubItem
invoke SendMessage, hwnd, LVM_GETSUBITEMRECT, iItem, eax
ELSEIF (OPATTR (prc)) AND 00010000y ;; Is a register value
IF (OPATTR (code)) AND 00000010y ;; Is a memory variable or has a relocatable data label
push code
pop dword ptr [prc]
ELSE
mov dword ptr [prc], code
ENDIF
;;_mov dword ptr [prc], code
IF (OPATTR (iSubItem)) AND 00000010y ;; Is a memory variable or has a relocatable data label
push iSubItem
pop dword ptr [prc][4]
ELSE
mov dword ptr [prc][4], iSubItem
ENDIF
;;_mov dword ptr [prc][4], iSubItem
invoke SendMessage, hwnd, LVM_GETSUBITEMRECT, iItem, prc
ELSEIF prc EQ NULL
line TEXTEQU %@Line
% ECHO @FileCur(line) : ListView_GetSubItemRect macro ERROR! Pointer to RECT is NULL.
.ERR
ELSE
.ERR <ERROR!!! Can't recognize type of &prc.>;;'
ENDIF
ENDM
;;......................................
ListView_GetTextBkColor MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETTEXTBKCOLOR, 0, 0
ENDM
ListView_GetTextColor MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETTEXTCOLOR, 0, 0
ENDM
IFNDEF LVTILEINFO
LVTILEINFO STRUCT
cbSize DWORD ?
iItem DWORD ?
cColumns DWORD ?
puColumns DWORD ?
LVTILEINFO ENDS
ENDIF
IFNDEF LVM_GETTILEINFO
LVM_GETTILEINFO equ LVM_FIRST + 165
ENDIF
ListView_GetTileInfo MACRO pti:REQ
invoke SendMessage, hwnd, LVM_GETTILEINFO, 0, pti
ENDM
IFNDEF LVTILEVIEWINFO
LVTILEVIEWINFO STRUCT
cbSize DWORD ?
dwMask DWORD ?
dwFlags DWORD ?
sizeTile _SIZE <>
cLines DWORD ?
rcLabelMargin RECT <>
LVTILEVIEWINFO ENDS
ENDIF
IFNDEF LVM_GETTILEVIEWINFO
LVM_GETTILEVIEWINFO equ LVM_FIRST + 163
ENDIF
ListView_GetTileViewInfo MACRO ptvi:REQ
invoke SendMessage, hwnd, LVM_GETTILEVIEWINFO, 0, ptvi
ENDM
IFNDEF LVM_GETTOOLTIPS
LVM_GETTOOLTIPS equ LVM_FIRST + 78
ENDIF
ListView_GetToolTips MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETTOOLTIPS, 0, 0
ENDM
ListView_GetTopIndex MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETTOPINDEX, 0, 0
ENDM
IFNDEF LVM_GETUNICODEFORMAT
LVM_GETUNICODEFORMAT equ CCM_GETUNICODEFORMAT
ENDIF
ListView_GetUnicodeFormat MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETUNICODEFORMAT, 0, 0
ENDM
IFNDEF LVM_GETVIEW
LVM_GETVIEW equ LVM_FIRST + 143
ENDIF
ListView_GetView MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_GETVIEW, 0, 0
ENDM
IFNDEF LVM_GETVIEWRECT
LVM_GETVIEWRECT equ LVM_FIRST + 34
ENDIF
ListView_GetViewRect MACRO hwnd:REQ, prc:REQ
invoke SendMessage, hwnd, LVM_GETVIEWRECT, 0, prc
ENDM
IFNDEF LVM_GETWORKAREAS
LVM_GETWORKAREAS equ LVM_FIRST + 70
ENDIF
ListView_GetWorkAreas MACRO hwnd:REQ, nWorkAreas:REQ, prc:REQ
invoke SendMessage, hwnd, LVM_GETWORKAREAS, nWorkAreas, prc
ENDM
IFNDEF LVM_HASGROUP
LVM_HASGROUP equ LVM_FIRST + 161
ENDIF
ListView_HasGroup MACRO hwnd:REQ, dwGroupId:REQ
invoke SendMessage, hwnd, LVM_HASGROUP, dwGroupId, 0
ENDM
ListView_HitTest MACRO hwnd:REQ, pinfo:REQ
invoke SendMessage, hwnd, LVM_HITTEST, 0, pinfo
ENDM
ListView_InsertColumn MACRO hwnd:REQ, iCol:REQ, pcol:REQ
invoke SendMessage, hwnd, LVM_INSERTCOLUMN, iCol, pcol
ENDM
IFNDEF LVM_INSERTGROUP
LVM_INSERTGROUP equ LVM_FIRST + 145
ENDIF
ListView_InsertGroup MACRO hwnd:REQ, index:REQ, pgrp:REQ
invoke SendMessage, hwnd, LVM_INSERTGROUP, index, pgrp
ENDM
IFNDEF LVTILEVIEWINFO
LVTILEVIEWINFO STRUCT
pfnGroupCompare DWORD ?
pvData DWORD ?
lvGroup LVGROUP <>
LVTILEVIEWINFO ENDS
ENDIF
IFNDEF LVM_INSERTGROUPSORTED
LVM_INSERTGROUPSORTED equ LVM_FIRST + 159
ENDIF
ListView_InsertGroupSorted MACRO hwnd:REQ, structInsert:REQ
invoke SendMessage, hwnd, LVM_INSERTGROUPSORTED, structInsert, 0
ENDM
ListView_InsertItem MACRO hwnd:REQ, pitem:REQ
invoke SendMessage, hwnd, LVM_INSERTITEM, 0, pitem
ENDM
IFNDEF LVM_INSERTMARKHITTEST
LVM_INSERTMARKHITTEST equ LVM_FIRST + 168
ENDIF
ListView_InsertMarkHitTest MACRO hwnd:REQ, point:REQ, lvim:REQ
invoke SendMessage, hwnd, LVM_INSERTMARKHITTEST, point, lvim
ENDM
IFNDEF LVM_ISGROUPVIEWENABLED
LVM_ISGROUPVIEWENABLED equ LVM_FIRST + 175
ENDIF
ListView_IsGroupViewEnabled MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_ISGROUPVIEWENABLED, 0, 0
ENDM
IFNDEF LVM_MAPINDEXTOID
LVM_MAPINDEXTOID equ LVM_FIRST + 180
ENDIF
ListView_MapIndexToID MACRO hwnd:REQ, index:REQ
invoke SendMessage, hwnd, LVM_MAPINDEXTOID, index, 0
ENDM
IFNDEF LVM_MAPIDTOINDEX
LVM_MAPIDTOINDEX equ LVM_FIRST + 181
ENDIF
ListView_MapIDToIndex MACRO hwnd:REQ, id:REQ
invoke SendMessage, hwnd, LVM_MAPIDTOINDEX, id, 0
ENDM
IFNDEF LVM_MOVEGROUP
LVM_MOVEGROUP equ LVM_FIRST + 151
ENDIF
ListView_MoveGroup MACRO hwnd:REQ, iGroupId:REQ, toIndex:REQ
invoke SendMessage, hwnd, LVM_MOVEGROUP, iGroupId, toIndex
ENDM
IFNDEF LVM_MOVEITEMTOGROUP
LVM_MOVEITEMTOGROUP equ LVM_FIRST + 154
ENDIF
ListView_MoveItemToGroup MACRO hwnd:REQ, idItemFrom:REQ, idGroupTo:REQ
invoke SendMessage, hwnd, LVM_MOVEITEMTOGROUP, idItemFrom, idGroupTo
ENDM
ListView_RedrawItems MACRO hwnd:REQ, iFirst:REQ, iLast:REQ
invoke SendMessage, hwnd, LVM_REDRAWITEMS, iFirst, iLast
ENDM
IFNDEF LVM_REMOVEALLGROUPS
LVM_REMOVEALLGROUPS equ LVM_FIRST + 160
ENDIF
ListView_RemoveAllGroups MACRO hwnd:REQ
invoke SendMessage, hwnd, LVM_REMOVEALLGROUPS, 0, 0
ENDM
IFNDEF LVM_REMOVEGROUP
LVM_REMOVEGROUP equ LVM_FIRST + 150
ENDIF
ListView_RemoveGroup MACRO hwnd:REQ, iGroupId:REQ
invoke SendMessage, hwnd, LVM_REMOVEGROUP, iGroupId, 0
ENDM
ListView_Scroll MACRO hwnd:REQ, ix:REQ, iy:REQ
invoke SendMessage, hwnd, LVM_SCROLL, ix, iy
ENDM
ListView_SetBkColor MACRO hwnd:REQ, clrBk:REQ
invoke SendMessage, hwnd, LVM_SETBKCOLOR, 0, clrBk
ENDM
IFNDEF LVM_SETBKIMAGE
LVM_SETBKIMAGEA equ LVM_FIRST + 68
LVM_SETBKIMAGEW equ LVM_FIRST + 138
IF UNICODE
LVM_SETBKIMAGE equ LVM_SETBKIMAGEW
ELSE
LVM_SETBKIMAGE equ LVM_SETBKIMAGEA
ENDIF
ENDIF
ListView_SetBkImage MACRO hwnd:REQ, plvbki:REQ
invoke SendMessage, hwnd, LVM_SETBKIMAGE, 0, plvbki
ENDM
ListView_SetCallbackMask MACRO hwnd:REQ, imask:REQ
invoke SendMessage, hwnd, LVM_SETCALLBACKMASK, imask, 0
ENDM
ListView_SetColumn MACRO hwnd:REQ, iCol:REQ, pcol:REQ
invoke SendMessage, hwnd, LVM_SETCOLUMN, iCol, pcol
ENDM
IFNDEF LVM_SETCOLUMNORDERARRAY
LVM_SETCOLUMNORDERARRAY equ LVM_FIRST + 58
ENDIF
ListView_SetColumnOrderArray MACRO hwnd:REQ, iCount:REQ, lpiArray:REQ
invoke SendMessage, hwnd, LVM_SETCOLUMNORDERARRAY, iCount, lpiArray
ENDM
ListView_SetColumnWidth MACRO hwnd:REQ, iCol:REQ, x:REQ
invoke SendMessage, hwnd, LVM_SETCOLUMNWIDTH, iCol, $MAKEDWORD(x, 0)
ENDM
ListView_SetExtendedListViewStyle MACRO hwnd:REQ, dwExStyle:REQ
invoke SendMessage, hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwExStyle
ENDM
ListView_SetExtendedListViewStyleEx MACRO hwnd:REQ, dwExMask:REQ, dwExStyle:REQ
invoke SendMessage, hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, dwExMask, dwExStyle
ENDM
IFNDEF LVM_SETGROUPINFO
LVM_SETGROUPINFO equ LVM_FIRST + 147
ENDIF
ListView_SetGroupInfo MACRO hwnd:REQ, iGroupId:REQ, pgrp:REQ
invoke SendMessage, hwnd, LVM_SETGROUPINFO, iGroupId, pgrp
ENDM
IFNDEF LVM_SETGROUPMETRICS
LVM_SETGROUPMETRICS equ LVM_FIRST + 155
ENDIF
ListView_SetGroupMetrics MACRO hwnd:REQ, pGroupMetrics:REQ
invoke SendMessage, hwnd, LVM_SETGROUPMETRICS, 0, pGroupMetrics
ENDM
IFNDEF LVM_SETHOTCURSOR
LVM_SETHOTCURSOR equ LVM_FIRST + 62
ENDIF
ListView_SetHotCursor MACRO hwnd:REQ, hCursor:REQ
invoke SendMessage, hwnd, LVM_SETHOTCURSOR, 0, hCursor
ENDM
IFNDEF LVM_SETHOTITEM
LVM_SETHOTITEM equ LVM_FIRST + 60
ENDIF
ListView_SetHotItem MACRO hwnd:REQ, iItem:REQ
invoke SendMessage, hwnd, LVM_SETHOTITEM, iItem, 0
ENDM
IFNDEF LVM_SETHOVERTIME
LVM_SETHOVERTIME equ LVM_FIRST + 71
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -