以下代码在radasm编译后打开.exe无法生成窗口_ProcWinMain proc uses ebx esi edi hWnd,wMsg,wParam,lParam
LOCAL @stPs:PAINTSTRUCT
LOCAL @hDc
mov eax,wMsg
.if eax==WM_CREATE
mov Score,0
mov PlayFlag,1
mov Velocity,400
invoke LoadIcon,hInstance,ID_ICO
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.elseif
.else
invoke DefWindowProc,hWnd,wMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
_ProcWinMain endp
;********************************************************************
;创建窗口
;********************************************************************
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL @wc:WNDCLASSEX
LOCAL @msg:MSG
LOCAL @hwnd:HWND
mov @wc.cbSize,sizeof WNDCLASSEX
mov @wc.style,CS_HREDRAW or CS_VREDRAW
mov @wc.lpfnWndProc,offset _ProcWinMain
mov @wc.cbClsExtra,NULL
mov @wc.cbWndExtra,NULL
push hInstance
pop @wc.hInstance
invoke LoadMenu,hInstance,IDR_MENU
mov hMenu,eax
mov @wc.hbrBackground,COLOR_BTNFACE+1
mov @wc.lpszMenuName,NULL
mov @wc.lpszClassName,offset ClassName
invoke LoadIcon,hInstance,ID_ICO
mov @wc.hIcon,eax
mov @wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov @wc.hCursor,eax
invoke RegisterClassEx,addr @wc
invoke CreateWindowEx,WS_EX_CLIENTEDGE or WS_EX_WINDOWEDGE,\
addr ClassName,addr AppName,\
WS_MINIMIZEBOX or WS_SYSMENU,\
CW_USEDEFAULT,CW_USEDEFAULT,\
132h,179h,NULL,hMenu,hInst,NULL
mov @hwnd,eax
invoke ShowWindow,@hwnd,CmdShow
invoke UpdateWindow,@hwnd
.while TRUE
invoke GetMessage,addr @msg,NULL,0,0
.break .if(!eax)
invoke TranslateMessage,addr @msg
invoke DispatchMessage,addr @msg
.endw
mov eax,@msg.wParam
ret
WinMain endp
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
end start
最新发布