Àññåìáëåð è 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



Ñîäåðæàíèå ðàçäåëà