MASM32学习日志,常用宏

时间:2021-11-09 01:14:21

用VS2005写MASM一些常的文件备份,放在这里备份。以免电脑坏了文件丢失。好有一个参考。

 

windowsx.h

;//////////////////////////////////////////////////////////////////////////
;//通用命令宏


IFNDEF WINDOWSX_H
	WINDOWSX_H EQU <1>  
include listview.h
HANDLE_CMD_START MACRO
        .IF EAX !=EAX
        RET
ENDM
 
HANDLE_CMD MACRO subName,cmdID
        NameF CATSTR <.ELSEIF EAX == cmdID>
        NameT CATSTR <invoke > ,<subName>,<_>,<On>,<cmdID> ,<, hwnd>,<,wParam>,<,lParam>
        NameF
        NameT
		RET
ENDM

HANDLE_CMD_END MACRO 
        .ENDIF
ENDM
 

;//////////////////////////////////////////////////////////////////////////
;//消息宏
HANDLE_MSG_START MACRO
	.IF EAX != EAX
		RET
ENDM

HANDLE_MSG	MACRO  subName,msgID
		NameF CATSTR <.ELSEIF EAX == msgID>
		NameT CATSTR <invoke > ,<subName>,<_>,<msgID> ,<, hwnd>,<,wParam>,<,lParam>
		NameF
		NameT
		RET
ENDM

HANDLE_MSG_END MACRO
		.ENDIF
ENDM

string MACRO Name, Text:VARARG
	LOCAL lbl
	jmp lbl
	Name db Text,0
	lbl:
ENDM

m2m MACRO M1, M2
	push M2
	pop  M1
ENDM

return MACRO arg
	mov eax, arg
	ret
ENDM


RGB MACRO red,green,blue
	xor eax,eax
	mov ah,blue
	shl eax,8
	mov ah,green
	mov al,red
ENDM


MAKELONG macro a:REQ, b:REQ
	MOV EAX,0  
	mov AH,a
	SHL EAX,8
	mov AL,b
ENDM
;//A=1 B=100h C=MAKELONG(A, B)=(1 and 0FFFFh) or (100h shl 16)=1000001h 最后 (1 and 0FFFFh) or (100h shl 16) 这一段Masm可以直接识别  



;//这是一个常用的宏
@GetDlgItem MACRO hwnd:REQ, hwndCtrl:REQ,hVar:REQ
	invoke GetDlgItem ,hwnd,hwndCtrl
	MOV hVar,eax 
ENDM

USEPARAM MACRO
	ADD		wParam,0
	ADD		lParam,0
	add		hwnd,0
ENDM
 
 
ENDIF


listview.h 对listview控件常用宏在汇编语言中的定义

IFNDEF LISTVIEW_H
	LISTVIEW_H EQU <1>
;// ListView宏定义文件
;//////////////////////////////////////////////////////////////////////////


;// 删除所有的项目
ListView_DeleteAllItems		MACRO  ListView:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke SendMessage,ListView,LVM_DELETEALLITEMS,0,0	 
ENDM  
  
;// 设置项目排列方式
ListView_Arrange		MACRO ListView:REQ,iCode:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke	SendMessage,ListView,LVM_ARRANGE,iCode,0 
ENDM

;//结束编辑
ListView_CancelEditLabel		MACRO  ListView:REQ 
		invoke GetDlgItem ,hwnd,ListView
		invoke	SendMessage,ListView,LVM_CANCELEDITLABEL,0,0
ENDM

;//拖放时显示的图标
ListView_CreateDragImage	MACRO  ListView:REQ,iItem:REQ , lpptUpLeft:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke	SendMessage,ListView,LVM_CREATEDRAGIMAGE ,iItem,lpptUpLeft
ENDM

;// 删除列
ListView_DeleteColumn	MACRO  ListView:REQ,iCol:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke SendMessage,ListView,LVM_DELETECOLUMN ,iCol,0	 
ENDM

;//删除行
ListView_DeleteItem		MACRO  ListView:REQ,iItem:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke SendMessage,ListView,LVM_DELETEITEM ,iItem,0	
ENDM

;//改变图标样式
ListView_SetView	MACRO	ListView:REQ,iView:REQ
		invoke GetDlgItem ,hwnd,ListView
		invoke	SendMessage,ListView,LVM_SETVIEW ,iView,0
ENDM

;//开始编辑文本
;/////////////////////////////////////////////////////////////////////////////////
ListView_EditLabel	MACRO	ListView:REQ ,iItem:REQ
	;//iItem
	;//The index of the list-view item. To cancel editing, set iItem to -1. 
	invoke GetDlgItem ,hwnd,ListView
	invoke	SendMessage,ListView,LVM_EDITLABEL  ,iItem,0
ENDM

;//启用分组预览
ListView_EnableGroupView	MACRO	ListView:REQ, fEnable:REQ
	;//Use TRUE to enable grouping, FALSE to disable it.  
	invoke GetDlgItem ,hwnd,ListView
	invoke	SendMessage,ListView,LVM_ENABLEGROUPVIEW  ,fEnable,0
ENDM

;//确保第i行,可以完全显示还是部分显示
ListView_EnsureVisible	MACRO	ListView:REQ ,i:REQ,fPartialOK:REQ
	
	invoke	SendMessage,ListView,LVM_ENSUREVISIBLE	,i,fPartialOK
ENDM

;//检索行
ListView_FindItem	MACRO	ListView:REQ,iStart:REQ ,plvfi:REQ
	;// -1 to start from the beginning. 
	
	invoke	SendMessage,ListView,LVM_FINDITEM ,iStart,plvfi
ENDM


;//取背景颜色
ListView_GetBkColor MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETBKCOLOR ,0,0	
ENDM

;//取背景图片信息
ListView_GetBkImage	MACRO	ListView:REQ, plvbki:REQ
	
	invoke	SendMessage,ListView,LVM_GETBKIMAGE ,0,plvbki
ENDM

;//取状态码
ListView_GetCallbackMask MACRO ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETCALLBACKMASK  ,0,0
ENDM

;//检索第行前面的选择框状态
;ListView_GetCheckState	MACRO ListView:REQ, iIndex:RREQ
	;
	;invoke	SendMessage,ListView,LVS_EX_CHECKBOXES  ,iIndex,0
;ENDM


;//取列信息
ListView_GetColumn	MACRO	ListView:REQ,iCol:REQ,pcol:REQ
	
	invoke	SendMessage,ListView,LVM_GETCOLUMN,iCol,pcol
ENDM

;//取列的排序数组
ListView_GetColumnOrderArray	MACRO	ListView:REQ,iCount:REQ	,lpiArray:REQ
	
	invoke	SendMessage,ListView,LVM_GETCOLUMNORDERARRAY,iCount,lpiArray	
ENDM

;//取列的宽度
ListView_GetColumnWidth	MACRO	ListView:REQ,iCol:REQ
	
	invoke	SendMessage,ListView,LVM_GETCOLUMNWIDTH ,iCol,0	
ENDM
  

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

;//获取编程状态的句柄窗口
ListView_GetEditControl		MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETEDITCONTROL  ,0,0	
ENDM

;//
ListView_GetEmptyText	MACRO	ListView:REQ,pszText:REQ ,cchText:REQ
	
	invoke	SendMessage,ListView,LVM_GETEMPTYTEXT ,cchText,pszText
ENDM

;//获取扩展样式表
ListView_GetExtendedListViewStyle	MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETEXTENDEDLISTVIEWSTYLE ,0,0
ENDM
;//

ListView_GetFocusedGroup	MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETFOCUSEDGROUP ,0,0
ENDM

;//
ListView_GetFooterInfo		MACRO	ListView:REQ,plvfi:REQ
	
	invoke	SendMessage,ListView,LVM_GETFOOTERINFO ,0,plvfi
ENDM

;//
ListView_GetFooterItem		MACRO	ListView:REQ,iItem:REQ,pfi:REQ
	
	invoke	SendMessage,ListView,LVM_GETFOOTERITEM ,iItem,pfi
ENDM

;//
ListView_GetFooterItemRect	MACRO	ListView:REQ,iItem:REQ,prc:REQ
	
	invoke	SendMessage,ListView,LVM_GETFOOTERITEMRECT ,iItem,prc
ENDM

;//
ListView_GetFooterRect		MACRO	ListView:REQ,prc:REQ
	
	invoke	SendMessage,ListView,LVM_GETFOOTERRECT,0,prc
ENDM


;//
ListView_GetGroupCount		MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPCOUNT,0,0
ENDM

;//
;ListView_GetGroupHeaderImageList	MACRO	ListView:REQ
	
;ENDM
	
;//
ListView_GetGroupInfo		MACRO	ListView:REQ,iGroupId:REQ, pgrp:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPINFO,iGroupId,pgrp
ENDM

;//取分组信息
ListView_GetGroupInfoByIndex	 MACRO	ListView:REQ,iIndex:REQ, pgrp:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPINFOBYINDEX ,iIndex,pgrp
ENDM

;//取分组信息
ListView_GetGroupMetrics	MACRO	ListView:REQ,pGroupMetrics:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPMETRICS,0,pGroupMetrics
ENDM

;//
ListView_GetGroupRect	MACRO	ListView:REQ,iGroupId:REQ,prc:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPRECT,iGroupId,prc
ENDM

;//
ListView_GetGroupState	MACRO	ListView:REQ,dwGroupId:REQ,dwMask:REQ
	
	invoke	SendMessage,ListView,LVM_GETGROUPSTATE ,dwGroupId,dwMask
ENDM

;//
ListView_GetHeader	MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETHEADER ,0,0
ENDM

;//
ListView_GetHotCursor	MACRO	ListView:REQ
	
	invoke	SendMessage,ListView,LVM_GETHOTCURSOR ,0,0
ENDM

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

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

ListView_GetImageList	MACRO	ListView:REQ,iImageList:REQ
	
	invoke	SendMessage,ListView,LVM_GETHOVERTIME  ,0,iImageList
ENDM

ListView_GetInsertMark	MACRO	ListView:REQ,plvim:REQ
	
	invoke	SendMessage,ListView,LVM_GETINSERTMARK,0,plvim
ENDM

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


ListView_GetInsertMarkRect	MACRO	ListView:REQ,prc:REQ	 
	invoke	SendMessage,ListView,LVM_GETINSERTMARKCOLOR,0,prc
ENDM

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


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

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

ListView_GetItemIndexRect	MACRO	ListView:REQ,plvii:REQ,prc:REQ
	invoke	SendMessage,ListView,LVM_GETITEMINDEXRECT ,plvii,prc
ENDM

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

ListView_GetItemRect		MACRO	ListView:REQ, i:REQ,prc:REQ 
	invoke	SendMessage,ListView,LVM_GETITEMRECT ,i,prc	
ENDM

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

ListView_GetItemState		MACRO	ListView:REQ,i:REQ,mask:REQ
	invoke	SendMessage,ListView,LVM_GETITEMSTATE ,i,mask	
ENDM

ListView_GetItemText		MACRO	ListView:REQ,iItem:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_GETITEMTEXT  ,iItem,pitem	
ENDM

ListView_GetNextItem		MACRO	ListView:REQ,iStart:REQ,flags:REQ
	invoke	SendMessage,ListView,LVM_GETNEXTITEM  ,iStart,flags		
ENDM

ListView_GetNextItemIndex	MACRO	ListView:REQ,plvii:REQ,flags:REQ
	invoke	SendMessage,ListView,LVM_GETNEXTITEMINDEX  ,plvii,flags		
ENDM

ListView_GetNumberOfWorkAreas	MACRO	ListView:REQ,lpuWorkAreas:REQ
	invoke	SendMessage,ListView,LVM_GETNEXTITEMINDEX  ,0,lpuWorkAreas		
ENDM

ListView_GetOrigin		MACRO	ListView:REQ,lpptOrg:REQ
	invoke	SendMessage,ListView,LVM_GETORIGIN  ,0,lpptOrg	
ENDM

ListView_GetOutlineColor	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETOUTLINECOLOR   ,0,0	
ENDM


ListView_GetSelectedColumn	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETSELECTEDCOLUMN    ,0,0	
ENDM

ListView_GetSelectedCount	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETSELECTEDCOUNT     ,0,0	
ENDM

ListView_GetSelectionMark	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETSELECTIONMARK      ,0,0	
ENDM


ListView_GetStringWidth		MACRO	ListView:REQ,psz:REQ
	invoke	SendMessage,ListView,LVM_GETSTRINGWIDTH,0,psz
ENDM

ListView_GetSubItemRect		MACRO	ListView:REQ,iItem,lpRect:REQ
	invoke	SendMessage,ListView,LVM_GETSUBITEMRECT,iItem,lpRect
ENDM

ListView_GetTextBkColor		MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETTEXTBKCOLOR,0,0
ENDM

ListView_GetTextColor		MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETTEXTCOLOR,0,0
ENDM

ListView_GetTileInfo		MACRO	ListView:REQ,plvtinfo:REQ
	invoke	SendMessage,ListView,LVM_GETTILEINFO,0,plvtinfo
ENDM

ListView_GetTileViewInfo	MACRO	ListView:REQ,plvtvinfo:REQ
	invoke	SendMessage,ListView,LVM_GETTILEVIEWINFO ,0,plvtvinfo
ENDM

ListView_GetToolTips		MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETTOOLTIPS  ,0,0
ENDM

ListView_GetTopIndex		MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETTOPINDEX   ,0,0
ENDM


ListView_GetUnicodeFormat	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETUNICODEFORMAT   ,0,0
ENDM

ListView_GetView		MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_GETVIEW  ,0,0
ENDM

ListView_GetViewRect		MACRO	ListView:REQ,prc:REQ
	invoke	SendMessage,ListView,LVM_GETVIEW  ,0,prc
ENDM

ListView_GetWorkAreas		MACRO	ListView:REQ,nWorkAreas:REQ,lprc:REQ
	invoke	SendMessage,ListView,LVM_GETWORKAREAS,nWorkAreas,lprc
ENDM


ListView_HasGroup		MACRO	ListView:REQ,dwGroupId:REQ
	invoke	SendMessage,ListView,LVM_HASGROUP,dwGroupId,0
ENDM


ListView_HitTest		MACRO	ListView:REQ,pinfo:REQ
	invoke	SendMessage,ListView,LVM_HITTEST,0,pinfo
ENDM

ListView_HitTestEx		MACRO	ListView:REQ,pinfo:REQ
	invoke	SendMessage,ListView,LVM_HITTEST,0,pinfo
ENDM

ListView_InsertColumn		MACRO	ListView:REQ,iCol:REQ,pcol:REQ
	invoke	SendMessage,ListView,LVM_INSERTCOLUMN,iCol,pcol
ENDM

ListView_InsertGroup		MACRO	ListView:REQ,index:REQ,pgrp:REQ
	invoke	SendMessage,ListView,LVM_INSERTGROUP,index,pgrp
ENDM

ListView_InsertGroupSorted	MACRO	ListView:REQ,structInsert:REQ
	invoke	SendMessage,ListView,LVM_INSERTGROUPSORTED,structInsert,0
ENDM


ListView_InsertItem		MACRO	ListView:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_INSERTITEM,0,pitem
ENDM

ListView_InsertMarkHitTest	MACRO	ListView:REQ,point:REQ,plvim:REQ
	 invoke	SendMessage,ListView,LVM_INSERTMARKHITTEST,point,plvim
ENDM

ListView_IsGroupViewEnabled	MACRO	ListView:REQ
	invoke	SendMessage,ListView,LVM_ISGROUPVIEWENABLED ,0,0
ENDM

ListView_IsItemVisible		MACRO	ListView:REQ,index:REQ
	invoke	SendMessage,ListView,LVM_ISITEMVISIBLE  ,index,0
ENDM


ListView_MapIDToIndex		MACRO	ListView:REQ,id:REQ
	 invoke	SendMessage,ListView,LVM_MAPIDTOINDEX  ,id,0
ENDM

ListView_MapIndexToID		MACRO	ListView:REQ,index:REQ
	invoke	SendMessage,ListView,LVM_MAPINDEXTOID  ,index,0
ENDM

ListView_RedrawItems		MACRO	ListView:REQ,iFirst:REQ,iLast:REQ
	invoke	SendMessage,ListView,LVM_REDRAWITEMS  ,iFirst,iLast
ENDM

ListView_RemoveAllGroups	MACRO	ListView:REQ	
	invoke	SendMessage,ListView,LVM_REMOVEALLGROUPS   ,0,0
ENDM

ListView_RemoveGroup		MACRO	ListView:REQ,iGroupId:REQ
	invoke	SendMessage,ListView,LVM_REMOVEGROUP   ,iGroupId,0
ENDM

ListView_Scroll			MACRO	ListView:REQ,dx:REQ,dy:REQ
	invoke	SendMessage,ListView,LVM_SCROLL   ,dx,dy
ENDM

ListView_SetBkColor		MACRO	ListView:REQ,clrBk:REQ
	invoke	SendMessage,ListView,LVM_SETBKCOLOR    ,0,clrBk
ENDM


ListView_SetBkImage		MACRO	ListView:REQ,plvbki:REQ
	invoke	SendMessage,ListView,LVM_SETBKIMAGE    ,0,plvbki
ENDM

ListView_SetCallbackMask	MACRO	ListView:REQ,mask:REQ
	invoke	SendMessage,ListView,LVM_SETCALLBACKMASK    ,mask,0
ENDM

ListView_SetCheckState		MACRO	ListView:REQ,i:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_SETITEMSTATE,i,pitem
ENDM

ListView_SetColumn		MACRO	ListView:REQ,iCol:REQ,pcol:REQ
	invoke	SendMessage,ListView,LVM_SETCOLUMN,iCol,pcol
ENDM

ListView_SetColumnOrderArray	MACRO	ListView:REQ,iCount:REQ,lpiArray:REQ
	invoke	SendMessage,ListView,LVM_SETCOLUMNORDERARRAY,iCount,lpiArray
ENDM

ListView_SetColumnWidth		MACRO	ListView:REQ,iCol:REQ,cx:REQ
	invoke	SendMessage,ListView,LVM_SETCOLUMNWIDTH ,iCol,cx
ENDM

ListView_SetExtendedListViewStyle	MACRO	ListView:REQ,dwExMask:REQ,dwExStyle:REQ
	invoke	SendMessage,ListView,LVM_SETEXTENDEDLISTVIEWSTYLE ,dwExMask,dwExStyle
ENDM

ListView_SetGroupInfo		MACRO	ListView:REQ,iGroupId:REQ,pgrp:REQ
	invoke	SendMessage,ListView,LVM_SETGROUPINFO  ,iGroupId,pgrp
ENDM

ListView_SetGroupMetrics	MACRO	ListView:REQ,pGroupMetrics:REQ
	invoke	SendMessage,ListView,LVM_SETGROUPMETRICS,0,pGroupMetrics
ENDM

ListView_SetHotCursor 		MACRO	ListView:REQ,hCursor:REQ
	invoke	SendMessage,ListView,LVM_SETHOTCURSOR,0,hCursor
ENDM

ListView_SetHotItem		MACRO	ListView:REQ,iIndex:REQ
	invoke	SendMessage,ListView,LVM_SETHOTITEM ,iIndex,0
ENDM


ListView_SetHoverTime		MACRO	ListView:REQ,dwHoverTime:REQ
	invoke	SendMessage,ListView,LVM_SETHOVERTIME , 0,dwHoverTime 
ENDM


ListView_SetIconSpacing		MACRO	ListView:REQ,cx:REQ,cy:REQ
	invoke	SendMessage,ListView,LVM_SETICONSPACING , 0,MAKELONG(cx,cy) 
ENDM


ListView_SetImageList		MACRO	ListView:REQ,iImageList:REQ,himl:REQ
	invoke	SendMessage,ListView,LVM_SETIMAGELIST , iImageList,himl
ENDM

ListView_SetInfoTip		MACRO	ListView:REQ,plvSetInfoTip:REQ
	invoke	SendMessage,ListView,LVM_SETINFOTIP , 0,plvSetInfoTip
ENDM


ListView_SetInsertMark		MACRO	ListView:REQ,plvim:REQ
	invoke	SendMessage,ListView,LVM_SETINSERTMARK, 0, plvim
ENDM


ListView_SetInsertMarkColor	MACRO	ListView:REQ,color:REQ
	invoke	SendMessage,ListView,LVM_SETINSERTMARKCOLOR, 0, plvim
ENDM

ListView_SetItem		MACRO	ListView:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_SETITEM , 0, pitem
ENDM

ListView_SetItemCount		MACRO	ListView:REQ,cItems:REQ,dwFlags:REQ
	invoke	SendMessage,ListView,LVM_SETITEMCOUNT , cItems, dwFlags	
ENDM

ListView_SetItemIndexState	MACRO	ListView:REQ,plvii:REQ,lvi:REQ
	invoke	SendMessage,ListView,LVM_SETITEMINDEXSTATE , plvii, lvi	
ENDM

ListView_SetItemPosition	MACRO	ListView:REQ,i:REQ,x:REQ,y:REQ
	invoke	SendMessage,ListView,LVM_SETITEMPOSITION , i, MAKELONG(x,y)	
ENDM

ListView_SetItemPosition32	MACRO	ListView:REQ,i:REQ,x:REQ,y:REQ
	invoke	SendMessage,ListView,LVM_SETITEMPOSITION , i, MAKELONG(x,y)
ENDM

ListView_SetItemState		MACRO	ListView:REQ,i:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_SETITEMSTATE , i,pitem
ENDM

ListView_SetItemText		MACRO	ListView:REQ,i:REQ,pitem:REQ
	invoke	SendMessage,ListView,LVM_SETITEMTEXT , i,pitem
ENDM

ListView_SetOutlineColor	MACRO	ListView:REQ,color:REQ
	invoke	SendMessage,ListView,LVM_SETOUTLINECOLOR  , 0,color
ENDM

ListView_SetSelectedColumn	MACRO	ListView:REQ,iCol:REQ
	invoke	SendMessage,ListView,LVM_SETSELECTEDCOLUMN  , 0,iCol
ENDM

ListView_SetSelectionMark	MACRO	ListView:REQ,iIndex:REQ
	invoke	SendMessage,ListView,LVM_SETSELECTIONMARK  , 0,iIndex
ENDM

ListView_SetTextBkColor		MACRO	ListView:REQ,clrText:REQ
	invoke	SendMessage,ListView,LVM_SETTEXTBKCOLOR   , 0,clrText
ENDM

ListView_SetTextColor		MACRO	ListView:REQ,clrText:REQ
	invoke	SendMessage,ListView,LVM_SETTEXTCOLOR   , 0,clrText
ENDM

ListView_SetTileInfo		MACRO	ListView:REQ,plvtinfo:REQ
	invoke	SendMessage,ListView,LVM_SETTILEINFO   , 0,plvtinfo	
ENDM

ListView_SetTileViewInfo	MACRO	ListView:REQ,plvtvinfo:REQ
	invoke	SendMessage,ListView,LVM_SETTILEVIEWINFO   , 0,plvtinfo
ENDM

ListView_SetToolTips		MACRO	ListView:REQ,hwndToolTip:REQ
	invoke	SendMessage,ListView,LVM_SETTOOLTIPS   , 0,hwndToolTip
ENDM
 
ListView_SetUnicodeFormat	MACRO	ListView:REQ,fUnicode:REQ
	invoke	SendMessage,ListView,LVM_SETUNICODEFORMAT   , fUnicode,0
ENDM

ListView_SetView		MACRO	ListView:REQ,iView:REQ
	 invoke	SendMessage,ListView,LVM_SETVIEW   , iView,0
ENDM

ListView_SetWorkAreas		MACRO	ListView:REQ,nWorkAreas:REQ,lprc:REQ
	invoke	SendMessage,ListView,LVM_SETWORKAREAS   , nWorkAreas,lprc
ENDM

ListView_SortGroups		MACRO	ListView:REQ,pfnGroupCompare:REQ,plv:REQ
	invoke	SendMessage,ListView,LVM_SORTGROUPS   , pfnGroupCompare,plv
ENDM


ListView_SortItems		MACRO	ListView:REQ,pfnCompare:REQ,lParamSort:REQ
	invoke	SendMessage,ListView,LVM_SORTITEMS   , lParamSort,pfnCompare
ENDM

ListView_SubItemHitTest		MACRO	ListView:REQ,pInfo:REQ
	invoke	SendMessage,ListView,LVM_SUBITEMHITTEST   , 0,pInfo
ENDM

ListView_Update		MACRO	ListView:REQ,iItem:REQ
	invoke	SendMessage,ListView,LVM_UPDATE   , iItem,0
ENDM



;//////////////////////////////////////////////////////////////////////////////
;//comboBox宏
ComboBox_Enable MACRO	hwndCtl:REQ, fEnable:REQ
	INVOKE EnableWindow ,hwndCtl ,fEnable
ENDM

ComboBox_GetText MACRO	hwndCtl:REQ, lpch:REQ, cchMax:REQ 
	PUSH EDI
	LEA EDI,lpch
	INVOKE GetWindowText ,hwndCtl, EDI, cchMax
	POP EDI
ENDM

ComboBox_SetText MACRO hwndCtl:REQ, lpsz:REQ
	INVOKE SetWindowText ,hwndCtl,addr lpsz
ENDM

ComboBox_LimitText	MACRO	hwndCtl:REQ, cchLimit:REQ
	INVOKE SendMessage ,hwndCtl,CB_LIMITTEXT,cchLimit,0
ENDM

ComboBox_GetEditSel MACRO hwndCtl:REQ
	invoke SendMessage ,hwndCtl,CB_GETEDITSEL, 0,0
ENDM

ComboBox_GetTextLength MACRO hwndCtl:REQ
	INVOKE GetWindowTextLength,hwndCtl
ENDM

ComboBox_SetEditSel MACRO hwndCtl:REQ, ichStart:REQ, ichEnd:REQ
	PUSH EDI 
	MOV EDI,0 
	mov AH,ichEnd
	SHL EDI,8
	mov AL,ichStart
	invoke SendMessage ,hwndCtl , CB_SETEDITSEL, 0,EDI
	POP EDI
ENDM

ComboBox_GetCount MACRO hwndCtl:REQ
	invoke SendMessage,hwndCtl, CB_GETCOUNT, 0, 0
ENDM

ComboBox_ResetContent MACRO  hwndCtl:REQ  
	invoke SendMessage ,hwndCtl, CB_RESETCONTENT, 0, 0
ENDM

ComboBox_AddString	MACRO hwndCtl:REQ,lpsz:REQ
	PUSH EDI
	LEA EDI,lpsz
	invoke SendMessage,hwndCtl, CB_ADDSTRING, 0,EDI
	POP EDI
ENDM

ComboBox_InsertString	MACRO hwndCtl:REQ, index:REQ, lpsz:REQ
	push edi 
	lea edi ,lpsz
	invoke SendMessage,hwndCtl, CB_INSERTSTRING,index,EDI
	pop edi 
ENDM	 

;////////////////////////////////////////////////////////////////////////////////
;//TAB控件对应的宏
TabCtrl_InsertItem	MACRO hwndCtl:REQ, iItem:REQ, pitem:REQ
	invoke SendMessage,hwndCtl,TCM_INSERTITEM,iItem,pitem
ENDM

TabCtrl_DeleteItem	MACRO hwndCtl:REQ, iItem:REQ
	invoke	SendMessage ,hwndCtl,TCM_DELETEITEM ,iItem,0
ENDM

TabCtrl_GetCurSel	MACRO hwndCtl:REQ 
	invoke	SendMessage ,hwndCtl,TCM_GETCURSEL ,0,0
ENDM

TabCtrl_GetItem		MACRO hwndCtl:REQ, iItem:REQ, pitem:REQ
	invoke	SendMessage ,hwndCtl,TCM_GETITEM  ,iItem,addr pitem
ENDM

TabCtrl_GetRowCount	MACRO hwndCtl:REQ 
	invoke	SendMessage ,hwndCtl,TCM_GETROWCOUNT  ,0,0
ENDM


TabCtrl_SetImageList	MACRO hwndCtl:REQ, himl:REQ
	invoke	SendMessage ,hwndCtl,TCM_SETIMAGELIST   ,0,  himl
ENDM

TabCtrl_SetItem		MACRO hwndCtl:REQ, iItem:REQ, pitem:REQ
	invoke	SendMessage ,hwndCtl,TCM_SETITEM ,iItem,   ADDR pitem
ENDM

TabCtrl_GetItemCount	MACRO hwndCtl:REQ 
	invoke	SendMessage ,hwndCtl,TCM_GETITEMCOUNT  ,0,0
ENDM

TabCtrl_SetMinTabWidth	MACRO hwndCtl:REQ ,cx:REQ
	invoke SendMessage,hwndCtl,TCM_SETMINTABWIDTH,0,cx
ENDM

TabCtrl_SetItemSize	MACRO hwndCtl:REQ ,cx:REQ,cy:REQ
	 
	MOV eax,0 
	mov AH,cy
	SHL eax,8
	mov AL,cx
	invoke SendMessage ,hwndCtl , TCM_SETITEMSIZE, 0,eax
	 
ENDM


TabCtrl_SetCurSel 	MACRO hwndCtl:REQ ,iIndex:REQ
	invoke SendMessage ,hwndCtl,TCM_SETCURSEL ,iIndex,0
ENDM
;////////////////////////////////////////////////////////////////////////////////
ENDIF