Здравствуйте уважаемые эксперты
! Найдите ошибку в примере, ну и исправьте не могу понять, в чем причина!!!
вероятно, что ошибка кроится в строке: proc WindowProc, hwnd,wmsg,wparam,lparam
компилятор FASM!!!
Приложение:
;примерчик
format pe gui 4.0
entry start
include 'c:\fasm\include\win32w.inc'
section '.data'data readable writeable
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0
hInstance dd ?
CommandLine dd ?
msg MSG
wc WNDCLASS
section '.code'code readable executable
start:
invoke GetModuleHandle,0
mov [hinstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
mov [wc.srule],0
mov [wc.lpfnWndProc],WindowProc
mov [wc.cbClsExtra],0
mov [wc.cbWndExtra],0
mov eax,[hinstance]
mov [wc.hinstance],eax
mov [wc.hbrBackground],COLOR_BTNFACE+1
mov [wc.lpszMenuName],0
mov [wc.lpszClassName],ourClass
invoke RegisterClass,wc
invoke CreateWindowsEx,0,\
ClassName,\
AppName,\
WS_VISIBLE_WS_DLGFRAME+WS_SYSMENU,\
128,\
128,\
192,\
192,\
0,\
0,\
[hinstance],0
mov [ComandLine],eax
msg_loop:
invoke GetMesage,msg,0,0,0
or eax,eax
jz end_loop
invoke TranslateMessage,msg
jmp msg_loop
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc, hwnd,wmsg,wparam,lparam ;выводит что здесь ошибкааааа!!!
enter
push ebx esi edi
cmp [wmsg],WM_DESTROY
je wmdestroy
defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp finish
wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
finish:
pop edi esi ebx
return
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
RegisterClass,'RegisterClassA',\
CreateWindowEx,'CreateWindowExA',\
DefWindowProc,'DefWindowProcA',\
WindowProc,'WindowProc'
GetMessage,'GetMessageA',\
TranslateMessage,'TranslateMessage',\
DispatchMessage,'DispatchMessageA',\
LoadCursor,'LoadCursorA',\
LoadIcon,'LoadIconA',\
PostQuitMessage,'PostQuitMessage'