macro |
MessageVector
|
message1,message2:REST
|
|
IFNB |
<message1> |
|
|
|
dd |
message1 |
|
|
dd |
offset
@@&message1 |
|
|
@@VecCount
= @@VecCount + 1 |
|
|
MessageVector |
message1 |
|
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 |
|
|