⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listview.mac

📁 用汇编语言编写Windows驱动程序的工具
💻 MAC
📖 第 1 页 / 共 3 页
字号:
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 + -