Win32



macro MessageVector message1, message2:REST

IFNB <message1>

dd message1

dd offset @@&message1

@@VecCount = @@VecCount + 1

MessageVector message2

ENDIF

endm MessageVector

macro WndMessages VecName, message1, message2:REST

@@VecCount = 0

DataSeg

label @@&VecName dword

MessageVector message1, message2

@@&VecName&Cnt = @@VecCount

CodeSeg

mov ecx,@@&VecName&Cnt

mov eax,[@@msg]

@@&VecName&_1: dec ecx

js @@default

cmp eax,[dword ecx * 8 + offset @@&VecName]

jne @@&VecName&_1

jmp [dword ecx + offset @@&VecName + 4]

 

@@default: call DefWindowProcA, [@@hWnd], [@@msg], [@@wPar], [@@lPar]

@@ret: ret

@@ret_false: xor eax,eax

jmp @@ret

@@ret_true: mov eax,-1

dec eax

jmp @@ret

endm WndMessage