📄 macros.asm
字号:
InkL Macro col,Thick:=<0>,Style:=<PS_SOLID>,HandleDC:=<CurrentDC> ;HandleDC optional
Invoke CreatePen,Style,Thick,col
Invoke SelectObject,HandleDC ,eax
EndM
;---------------------------------------------------------------------------------;
Paper Macro BkCol:req,HDC:=<CurrentDC>
Invoke SetBkColor,HDC ,BkCol
EndM
;---------------------------------------------------------------------------------;
PlayWave Macro pszSound,fdwSound ;fdwSound (flags) optional
Local PW1
.DATA
PW1 DB pszSound,0
.CODE
IFNB <fdwSound>
Invoke PlaySound,Addr PW1,NULL,SND_FILENAME or fdwSound
ELSE
Invoke PlaySound,Addr PW1,NULL,SND_FILENAME or SND_ASYNC
ENDIF
EndM
;---------------------------------------------------------------------------------;
Mem Macro pName:req,NoBytes:req
Align 4
.DATA?
pName DD ?
.CODE
Invoke GetProcessHeap
mov HeapHnd,eax
Invoke HeapAlloc,HeapHnd,NULL,NoBytes
;Invoke GlobalAlloc,GMEM_FIXED,NoBytes
mov pName,eax
ErrorCheck "Memory allocation"
EndM
;---------------------------------------------------------------------------------;
MemRsz Macro pName:req,NoBytes:req
Invoke GetProcessHeap
Invoke HeapReAlloc,eax,HEAP_GENERATE_EXCEPTIONS,pName,NoBytes
;Invoke HeapReAlloc,HeapHnd,HEAP_ZERO_MEMORY,pName,NoBytes
mov pName,eax
ErrorCheck "Heap Realloc"
EndM
;---------------------------------------------------------------------------------;
@Mem Macro NoBytes:req
Invoke GetProcessHeap
mov HeapHnd,eax
Invoke HeapAlloc,HeapHnd,HEAP_ZERO_MEMORY,NoBytes
ErrorCheck "Memory allocation@"
EXITM <eax>
EndM
;---------------------------------------------------------------------------------;
MemFree Macro pName:req,NoErCheck ; NoErCheck optional
Invoke GetProcessHeap
mov HeapHnd,eax
Invoke HeapFree,HeapHnd,NULL,pName
IFB <NoErCheck>
ErrorCheck "HeapFree"
ENDIF
EndM
;---------------------------------------------------------------------------------;
vMem Macro pName:req,NoBytes:req
.DATA?
pName DD ?
.CODE
Invoke VirtualAlloc,NULL,NoBytes,MEM_COMMIT,PAGE_READWRITE
mov pName,eax
ErrorCheck "Virtual Alloc"
EndM
;---------------------------------------------------------------------------------;
@vMem Macro NoBytes:req
.CODE
Invoke VirtualAlloc,NULL,NoBytes,MEM_COMMIT,PAGE_READWRITE
push eax
ErrorCheck "Virtual Alloc"
pop eax
EXITM <eax>
EndM
;---------------------------------------------------------------------------------;
VMfree Macro pName:req,NoErCheck ; NoErCheck optional
Invoke VirtualFree,pName,0,MEM_RELEASE
IFB <NoErCheck>
ErrorCheck "VirtualFree"
ENDIF
EndM
;-------------------------------***********************---------------------------;
;---------------------------------------------------------------------------------;
FileRead Macro FileHandle:req,pFileBuffer:req,NoBytes:req
Local rf1
.DATA?
rf1 DD ?
.CODE
Invoke ReadFile,FileHandle, pFileBuffer,NoBytes,Addr rf1,NULL
ErrorCheck "File Read"
mov eax,rf1
EndM
;---------------------------------------------------------------------------------;
FileWrite Macro fHnd:req,pBuffer:req,nBytes:req
Local NOfBw
.DATA?
NOfBw DD ?
.CODE
Invoke WriteFile,fHnd,pBuffer,nBytes,Addr NOfBw,NULL
ErrorCheck "Write File"
EndM
;---------------------------------------------------------------------------------;
FileOpen Macro strFileName:req,fHnd,OpenMode:=<OPEN_ALWAYS>, Attrib:=<Random> ;,ShareMode
Local oFName
.DATA
oFName DB strFileName,0
IFNB <fHnd>
.DATA?
fhan DD ?
ENDIF
.CODE
Invoke CreateFile,Addr oFName,Attrib,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OpenMode,FILE_ATTRIBUTE_ARCHIVE,NULL
IFNB <fHnd>
mov fhan,eax
ErrorCheck "File Open"
ELSE
push eax
ErrorCheck "File Open"
pop eax
ENDIF
EndM
;---------------------------------------------------------------------------------;
FileOpenPtr Macro pFileName:req,fHnd,OpenMode:=<OPEN_EXISTING>, Attrib:=<Random> ;,ShareMode
;Local oFName
.DATA
;oFName DB strFileName,0
IFNB <fHnd>
.DATA?
fhan DD ?
ENDIF
.CODE
;Invoke CreateFile,Addr pFileName,GENERIC_READ,0,0,OpenMode,FILE_ATTRIBUTE_ARCHIVE,NULL
Invoke CreateFile,Addr pFileName,Attrib,FILE_SHARE_READ or FILE_SHARE_WRITE,0,OpenMode,0,NULL
IFNB <fHnd>
mov fhan,eax
ErrorCheck "File Open"
ELSE
push eax
ErrorCheck "File Open"
pop eax
ENDIF
EndM
;---------------------------------------------------------------------------------;
CloseHnd Macro hObject:req,NoErCheck ; NoErCheck optional
Invoke CloseHandle,hObject
IFB <NoErCheck>
ErrorCheck "Close Handle"
ENDIF
EndM
;---------------------------------------------------------------------------------;
FileSeek Macro hFile:req,SeekPos:req,StartPoint:=<FILE_CURRENT>,NoErCheck ;out eax - Filepointer
Invoke SetFilePointer,hFile,SeekPos,NULL,StartPoint
IFB <NoErCheck>
push eax
ErrorCheck "Set File Pointer"
pop eax
ENDIF
EndM
;---------------------------------------------------------------------------------;
FileDel Macro FileName:req
Local fName
.DATA
fName DB FileName,0
Invoke DeleteFile,fName
ErrorCheck "Delete File"
EndM
;---------------------------------------------------------------------------------;
FileSize Macro FileHandle:req,nvarSize ;optional out
;IFNB <nvarSize>
;.DATA?
;nvarSize DD ?
.CODE
Invoke GetFileSize,FileHandle,NULL
IFNB <nvarSize>
mov nvarSize,eax
ErrorCheck "File Size"
ELSE
IFDEF EnableError
push eax
ErrorCheck "File Size"
pop eax
ENDIF
ENDIF
EndM
;---------------------------------------------------------------------------------;
@FileSize Macro FileHandle:req ;optional out
.CODE
Invoke GetFileSize,FileHandle,NULL
;IFDEF EnableError
;.if eax==inv
;push eax
;ErrorCheck "File size"
;pop eax
;EXITM <eax>
;ELSE
; EXITM <eax>
;ENDIF
.If eax==0ffffffffh
xor eax,eax
ErrorCheck "File size"
.EndIf
EXITM <eax>
EndM
;---------------------------------------------------------------------------------;
FileFindF Macro FileName:req,nBuffer ;out nBuffer - find struct
Local fName
.DATA
fName DB FileName,0
.DATA?
Align 4
nBuffer WIN32_FIND_DATA <?>
.CODE
Invoke FindFirstFile,Addr fName,Addr nBuffer
mov FindFileHnd,eax
ErrorCheck "Find File First"
EndM
;---------------------------------------------------------------------------------;
FileFindN Macro nBuffer:req
Invoke FindNextFile,FindFileHnd,Addr nBuffer
EndM
;-------------------------------***********************---------------------------;
;---------------------------------------------------------------------------------;
Font Macro TypeFaceName,fType:=<FF_ROMAN>,height:=<0>,width:=<0>,thick:=<400>,Italic:=<0>,Underline:=<0>, Strikeout:=<0>
IFB <TypeFaceName>
Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,NULL
ELSE
Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,cStr(TypeFaceName)
ENDIF
;push eax
;ErrorCheck "create font"
;pop eax
Invoke SelectObject,CurrentDC,eax
Invoke DeleteObject,eax
;ErrorCheck "select object"
EndM
;---------------------------------------------------------------------------------;
FontEx Macro TypeFaceName,fType:=<FF_ROMAN>,height:=<0>,width:=<0>,thick:=<400>,Italic:=<0>,Underline:=<0>, Strikeout:=<0>
IFB <TypeFaceName>
Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,NULL
ELSE
Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,Offset TypeFaceName
ENDIF
Invoke SelectObject,CurrentDC,eax
EndM
;---------------------------------------------------------------------------------;
SetDskBk Macro col:=<HTTRANSPARENT>
Invoke FindWindow, cStr("progman"), cStr("program manager")
Invoke FindWindowEx, eax, 0, cStr("shelldll_defview"), NULL
Invoke FindWindowEx, eax, 0, cStr("syslistview32"), NULL
Invoke SendMessage, eax, LVM_SETTEXTBKCOLOR, 0, col
Invoke SendMessage, eax, LVM_SETTEXTBKCOLOR, 0, col
Invoke SendMessage, HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
EndM
;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;
szText 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
;---------------------------------------------------------------------------------;
SetWinBk Macro col:req,hWnd ;RGB color
Invoke CreateSolidBrush,col
mov esi,eax
Invoke SetClassLong,hWnd,GCL_HBRBACKGROUND,eax
;Invoke SetWindowPos,hWnd,0,0,0,0,0,SWP_NOZORDER or SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOSIZE
Invoke InvalidateRect,hWnd,NULL,TRUE
Invoke DeleteObject,esi
EndM
;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;
Div3dQ Macro mmr1:req,mmr2:req
pfrcp mmr1,mmr1
pfmul mmr2,mmr1
EndM
;---------------------------------------------------------------------------------;
Div3dS Macro mmr1:req,mmr2:req,mmtmp:req
pfrcp mmtmp,mmr2
punpckldq mmr2,mmr2
pfrcpit1 mmr2,mmtmp
pfrcpit2 mmr2,mmtmp
pfmul mmr1,mmr2
EndM
;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -