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

📄 listview.mac

📁 这是asm驱动的开发包
💻 MAC
📖 第 1 页 / 共 3 页
字号:
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;;
;;                     List View Control Macros
;;
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;;
;;      ListView.mac for 32 bit MASM v1.2 (September 2002)
;;
;;      This file contains the macros, equates and structures
;;      to make it easier to send messages to List View control
;;
;;      This include file is written and maintained by Four-F (four-f@mail.ru)
;;
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

;;   NOTE : windows.inc and cocomac.mac MUST be included before
;;   as ListView.mac require some difinitions from it.
;;
;;   If version of your windows.inc is prior to 1.25a ( 22 October 2001),
;;   please remove the following line from windows.inc:
;;   ListView_SetExtendedListViewStyle PROTO :DWORD, :DWORD

IFNDEF UNICODE
	UNICODE = 0
ENDIF

IFNDEF LPWSTR
	LPWSTR TYPEDEF	PTR WORD				;; ???
ENDIF

IFNDEF LVS_OWNERDATA
	LVS_OWNERDATA equ 1000h
ENDIF

IFNDEF LVS_EX_BORDERSELECT
	LVS_EX_BORDERSELECT equ 8000h ;; border selection style instead of highlight
ENDIF

IFNDEF LVS_EX_DOUBLEBUFFER
	LVS_EX_DOUBLEBUFFER equ 10000h
ENDIF

IFNDEF LVS_EX_HIDELABELS
	LVS_EX_HIDELABELS equ 20000h
ENDIF

IFNDEF LVS_EX_SINGLEROW
	LVS_EX_SINGLEROW equ 40000h
ENDIF

IFNDEF LVS_EX_SNAPTOGRID
	LVS_EX_SNAPTOGRID equ 80000h ;; Icons automatically snap to grid.
ENDIF

IFNDEF LVS_EX_SIMPLESELECT
	LVS_EX_SIMPLESELECT equ 100000h ;; Also changes overlay rendering to top right for icon mode.
ENDIF

IFNDEF LVIF_INDENT
	LVIF_INDENT equ 10h
ENDIF

IFNDEF LVIF_NORECOMPUTE
	LVIF_NORECOMPUTE equ 800h
ENDIF

IFNDEF LVIF_GROUPID
	LVIF_GROUPID equ 100h
ENDIF

IFNDEF LVIF_COLUMNS
	LVIF_COLUMNS equ 200h
ENDIF

IFNDEF LVIS_GLOW
	LVIS_GLOW equ 10h
ENDIF

IFNDEF LVIS_ACTIVATING
	LVIS_ACTIVATING equ 20h
ENDIF

IFNDEF LV_VIEW_ICON
	LV_VIEW_ICON		equ 0
	LV_VIEW_DETAILS		equ 1
	LV_VIEW_SMALLICON	equ 2
	LV_VIEW_LIST		equ 3
	LV_VIEW_TILE		equ 4
	LV_VIEW_MAX			equ 4
ENDIF

IFNDEF LVGF_NONE
	LVGF_NONE		equ 0
	LVGF_HEADER		equ 1
	LVGF_FOOTER		equ 2
	LVGF_STATE		equ 4
	LVGF_ALIGN		equ 8
	LVGF_GROUPID	equ 10h
ENDIF

IFNDEF LVGS_NORMAL
	LVGS_NORMAL		equ 0
	LVGS_COLLAPSED	equ 1
	LVGS_HIDDEN		equ 2
ENDIF

IFNDEF LVGA_HEADER_LEFT
	LVGA_HEADER_LEFT	equ 1
	LVGA_HEADER_CENTER	equ 2
	LVGA_HEADER_RIGHT	equ 4		;; Don't forget to validate exclusivity
	LVGA_FOOTER_LEFT	equ 8
	LVGA_FOOTER_CENTER	equ 10h
	LVGA_FOOTER_RIGHT	equ 20h		;; Don't forget to validate exclusivity
ENDIF

IFNDEF LVGMF_NONE
	LVGMF_NONE			equ 0
	LVGMF_BORDERSIZE	equ 4
	LVGMF_BORDERCOLOR	equ 2
	LVGMF_TEXTCOLOR		equ 4
ENDIF

IFNDEF LVTVIF_AUTOSIZE
	LVTVIF_AUTOSIZE		equ 0
	LVTVIF_FIXEDWIDTH	equ 1
	LVTVIF_FIXEDHEIGHT	equ 2
	LVTVIF_FIXEDSIZE	equ 3
ENDIF

IFNDEF LVTVIM_TILESIZE
	LVTVIM_TILESIZE		equ 1
	LVTVIM_COLUMNS		equ 2
	LVTVIM_LABELMARGIN	equ 4
ENDIF

IFNDEF LVM_APPROXIMATEVIEWRECT
	LVM_APPROXIMATEVIEWRECT equ LVM_FIRST + 64
ENDIF

ListView_ApproximateViewRect MACRO hwnd:REQ, x:REQ, y:REQ, iCount:REQ
	invoke SendMessage, hwnd, LVM_APPROXIMATEVIEWRECT, iCount, $MAKEDWORD(x, y)
ENDM

ListView_Arrange MACRO hwnd:REQ, code:REQ
	invoke SendMessage, hwnd, LVM_ARRANGE, code, 0
ENDM

IFNDEF LVM_CANCELEDITLABEL
	LVM_CANCELEDITLABEL equ LVM_FIRST + 179
ENDIF

ListView_CancelEditLabel MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_CANCELEDITLABEL, 0, 0
ENDM

ListView_CreateDragImage MACRO hwnd:REQ, iItem:REQ, lpptUpLeft:REQ
	invoke SendMessage, hwnd, LVM_CREATEDRAGIMAGE, iItem, lpptUpLeft
ENDM

ListView_DeleteAllItems MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_DELETEALLITEMS, 0, 0
ENDM

ListView_DeleteColumn MACRO hwnd:REQ, iCol:REQ
	invoke SendMessage, hwnd, LVM_DELETECOLUMN, iCol, 0
ENDM

ListView_DeleteItem MACRO hwnd:REQ, iItem:REQ
	invoke SendMessage, hwnd, LVM_DELETEITEM, iItem, 0
ENDM

ListView_EditLabel MACRO hwnd:REQ, iItem:REQ
	invoke SendMessage, hwnd, LVM_EDITLABEL, iItem, 0
ENDM

IFNDEF LVM_ENABLEGROUPVIEW
	LVM_ENABLEGROUPVIEW equ LVM_FIRST + 157
ENDIF

ListView_EnableGroupView MACRO hwnd:REQ, fEnable:REQ
	invoke SendMessage, hwnd, LVM_ENABLEGROUPVIEW, fEnable, 0
ENDM

ListView_EnsureVisible MACRO hwnd:REQ, i:REQ, fPartialOK:REQ
	invoke SendMessage, hwnd, LVM_ENSUREVISIBLE, i, $MAKEDWORD(fPartialOK, 0)
ENDM

ListView_FindItem MACRO hwnd:REQ, iStart:REQ, plvfi:REQ
	invoke SendMessage, hwnd, LVM_FINDITEM, iStart, plvfi
ENDM

ListView_GetBkColor MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETBKCOLOR, 0, 0
ENDM

IFNDEF LVBKIMAGE
	LVBKIMAGE STRUCT
		ulFlags			DWORD	?
		hbm				HBITMAP	?
		pszImage		LPSTR	?
		cchImageMax		DWORD	?
		xOffsetPercent	DWORD	?
		yOffsetPercent	DWORD	?
	LVBKIMAGE ENDS

	LVBKIMAGEA equ <LVBKIMAGE>
	LVBKIMAGEW equ <LVBKIMAGE>

	LVBKIF_SOURCE_NONE		equ 0
	LVBKIF_SOURCE_HBITMAP	equ 1
	LVBKIF_SOURCE_URL		equ 2
	LVBKIF_SOURCE_MASK		equ 3
	LVBKIF_STYLE_NORMAL		equ 0
	LVBKIF_STYLE_TILE		equ 10h
	LVBKIF_STYLE_MASK		equ 10h
	LVBKIF_FLAG_TILEOFFSET	equ 100h
	LVBKIF_TYPE_WATERMARK	equ 10000000h
ENDIF

IFNDEF LVM_GETBKIMAGE
	LVM_GETBKIMAGEA equ LVM_FIRST + 69
	LVM_GETBKIMAGEW equ LVM_FIRST + 139
	IF UNICODE
		LVM_GETBKIMAGE equ LVM_GETBKIMAGEW
	ELSE
		LVM_GETBKIMAGE equ LVM_GETBKIMAGEA		
	ENDIF
ENDIF

ListView_GetBkImage MACRO hwnd:REQ, plvbki:REQ
	invoke SendMessage, hwnd, LVM_GETBKIMAGE, 0, plvbki
ENDM

ListView_GetCallbackMask MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETCALLBACKMASK, 0, 0
ENDM

ListView_GetCheckState MACRO hwnd:REQ, iItem:REQ
	invoke SendMessage, hwnd, LVM_GETITEMSTATE, iItem, LVIS_STATEIMAGEMASK
	shr eax, 12
	dec eax
ENDM

ListView_GetColumn MACRO hwnd:REQ, iCol:REQ, pcol:REQ
	invoke SendMessage, hwnd, LVM_GETCOLUMN, iCol, pcol
ENDM

IFNDEF LVM_GETCOLUMNORDERARRAY
	LVM_GETCOLUMNORDERARRAY equ LVM_FIRST + 59
ENDIF

ListView_GetColumnOrderArray MACRO hwnd:REQ, iCount:REQ, lpiArray:REQ
	invoke SendMessage, hwnd, LVM_GETCOLUMNORDERARRAY, iCount, lpiArray
ENDM

ListView_GetColumnWidth MACRO hwnd:REQ, iCol:REQ
	invoke SendMessage, hwnd, LVM_GETCOLUMNWIDTH, iCol, 0
ENDM

ListView_GetCountPerPage MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETCOUNTPERPAGE, 0, 0
ENDM

ListView_GetEditControl MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETEDITCONTROL, 0, 0
ENDM

ListView_GetExtendedListViewStyle MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0
ENDM

IFNDEF LV_GROUP
	LV_GROUP STRUCT
		cbSize		UINT	?
		imask		UINT	?
		pszHeader	LPWSTR	?
		cchHeader	UINT	?

		pszFooter	LPWSTR	?
		cchFooter	LPWSTR	?

		iGroupId	UINT	?
		stateMask	UINT	?
		state		UINT	?
		uAlign		UINT	?
	LV_GROUP ENDS
	
	LVGROUP equ <LV_GROUP>
ENDIF

IFNDEF LVM_GETGROUPINFO
	LVM_GETGROUPINFO equ LVM_FIRST + 149
ENDIF

ListView_GetGroupInfo MACRO hwnd:REQ, iGroupId:REQ, pgrp:REQ
	invoke SendMessage, hwnd, LVM_GETGROUPINFO, iGroupId, pgrp
ENDM

IFNDEF LVGROUPMETRICS
	LVGROUPMETRICS STRUCT
		cbSize		UINT		?
		imask		UINT		?
		Left		UINT		?
		Top			UINT		?
		Right		UINT		?
		Bottom		UINT		?
		crLeft		COLORREF	?
		crTop		COLORREF	?
		crRight		COLORREF	?
		crBottom	COLORREF	?
		crHeader	COLORREF	?
		crFooter	COLORREF	?
	LVGROUPMETRICS ENDS
ENDIF

IFNDEF LVM_GETGROUPMETRICS
	LVM_GETGROUPMETRICS equ LVM_FIRST + 156
ENDIF

ListView_GetGroupMetrics MACRO hwnd:REQ, pGroupMetrics:REQ
	invoke SendMessage, hwnd, LVM_GETGROUPMETRICS, 0, pGroupMetrics
ENDM

ListView_GetHeader MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETHEADER, 0, 0
ENDM

IFNDEF LVM_GETHOTCURSOR
	LVM_GETHOTCURSOR equ LVM_FIRST + 63
ENDIF

ListView_GetHotCursor MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETHOTCURSOR, 0, 0
ENDM

IFNDEF LVM_GETHOTITEM
	LVM_GETHOTITEM equ LVM_FIRST + 61
ENDIF

ListView_GetHotItem MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETHOTITEM, 0, 0
ENDM

IFNDEF LVM_GETHOVERTIME
	LVM_GETHOVERTIME equ LVM_FIRST + 72
ENDIF

ListView_GetHoverTime MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETHOVERTIME, 0, 0
ENDM

ListView_GetImageList MACRO hwnd:REQ, iImageList:REQ
	invoke SendMessage, hwnd, LVM_GETIMAGELIST, iImageList, 0
ENDM

IFNDEF LVINSERTMARK
	LVINSERTMARK STRUCT
		cbSize		UINT	?
		dwFlags		DWORD	?
		iItem		DWORD	?
		dwReserved	DWORD	?
	LVINSERTMARK ENDS
ENDIF

IFNDEF LVIM_AFTER
	LVIM_AFTER equ 1		; TRUE = insert After iItem, otherwise before
ENDIF

IFNDEF LVM_GETINSERTMARK
	LVM_GETINSERTMARK equ LVM_FIRST + 167
ENDIF

ListView_GetInsertMark MACRO hwnd:REQ, lvim:REQ
	invoke SendMessage, hwnd, LVM_GETINSERTMARK, 0, lvim
ENDM

IFNDEF LVM_GETINSERTMARKCOLOR
	LVM_GETINSERTMARKCOLOR equ LVM_FIRST + 171
ENDIF

ListView_GetInsertMarkColor MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETINSERTMARKCOLOR, 0, 0
ENDM

IFNDEF LVM_GETINSERTMARKRECT
	LVM_GETINSERTMARKRECT equ LVM_FIRST + 169
ENDIF

ListView_GetInsertMarkRect MACRO hwnd:REQ, rc:REQ
	invoke SendMessage, hwnd, LVM_GETINSERTMARKRECT, 0, rc
ENDM

ListView_GetISearchString MACRO hwnd:REQ, lpsz:REQ
	invoke SendMessage, hwnd, LVM_GETISEARCHSTRING, 0, lpsz
ENDM

ListView_GetItem MACRO hwnd:REQ, pitem:REQ
	invoke SendMessage, hwnd, LVM_GETITEM, 0, pitem
ENDM

ListView_GetItemCount MACRO hwnd:REQ
	invoke SendMessage, hwnd, LVM_GETITEMCOUNT, 0, 0
ENDM

ListView_GetItemPosition MACRO hwnd:REQ, i:REQ, ppt:REQ
	invoke SendMessage, hwnd, LVM_GETITEMPOSITION, i, ppt
ENDM

;;............................................................
ListView_GetItemRect MACRO hwnd:REQ, i:REQ, prc:REQ, code:REQ

;;#define ListView_GetItemRect(hwnd, i, prc, code) \
;;SNDMSG(hwnd, LVM_GETITEMRECT, i, (prc ? (prc->left = code, prc) : NULL)

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
			IF (OPATTR (code)) AND 00000010y			;; Is a memory variable
				push code
				pop dword ptr [eax]
			ELSEIF (OPATTR (code)) AND 00000100y		;; Is an immediate value
				IF code
					mov dword ptr [eax], code
				ELSE				;; code = 0
					and dword ptr [eax], 0
				ENDIF
			ELSE
				mov dword ptr [eax], code
			ENDIF
			invoke SendMessage, hwnd, LVM_GETITEMRECT, i, eax
		ELSE
			IF (OPATTR (code)) AND 00000010y			;; Is a memory variable
				push code
				pop dword ptr p
			ELSE
				mov dword ptr p, code
			ENDIF
			invoke SendMessage, hwnd, LVM_GETITEMRECT, i, offset p
		ENDIF
	ELSEIF (OPATTR (prc)) AND 00010000y					;; Is a register value
		IF (OPATTR (code)) AND 00000010y				;; Is a memory variable
			push code
			pop dword ptr [prc]
		ELSE
			mov dword ptr [prc], code
		ENDIF
		invoke SendMessage, hwnd, LVM_GETITEMRECT, i, prc
;	ELSEIF prc EQ NULL
;		invoke SendMessage, hwnd, LVM_GETITEMRECT, i, NULL
		;line TEXTEQU %@Line
		;% ECHO @FileCur(line) : ListView_GetItemRect macro ERROR! Pointer to RECT is NULL.
		;.ERR
	ELSE
		line TEXTEQU %@Line
		% ECHO @FileCur(line) : ListView_GetItemRect macro ERROR! Can't recognize type of &prc. Should be pointer to RECT.;;'
		.ERR
	ENDIF
ENDM
;;............................................................

ListView_GetItemSpacing MACRO hwnd:REQ, fSmall:REQ
	invoke SendMessage, hwnd, LVM_GETITEMSPACING, fSmall, 0
ENDM

IFNDEF LVIS_ACTIVATING
	LVIS_ACTIVATING equ 20h
ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -