
found myself
   
Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006
Репутация: 1 Всего: 121
|
| Код | .386 .model flat,stdcall option casemap:none
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib
.data ClassName db "MyClass",0 Zagolovok db "Hello",0 ButtonClassName db "button",0 ButtonText db "Click me",0 EditClassName db "edit",0 lpFmtd db "%d",0 .data? hinstance HINSTANCE ? CommandLine LPSTR ? hwndButton HWND ? hwndEdit1 HWND ? hwndEdit2 HWND ? buf db 512 dup(?)
.const ButtonID equ 1 EditId equ 2
.code start: invoke GetModuleHandle,NULL mov hinstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain,hinstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,eax
WinMain proc hinst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:DWORD,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 WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hinst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszMenuName,NULL mov wc.lpszClassName,offset ClassName invoke LoadIcon,NULL,IDI_APPLICATION 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,addr ClassName,\ addr Zagolovok,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\ CW_USEDEFAULT,300,200,NULL,NULL,hinst,NULL mov hwnd,eax invoke ShowWindow,hwnd,SW_SHOWNORMAL 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
WndProc proc hwnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_CREATE invoke CreateWindowEx,WS_EX_CLIENTEDGE,addr EditClassName,\ NULL,WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\ ES_AUTOHSCROLL,50,35,200,25,hwnd,8,hinstance,NULL mov hwndEdit1,eax invoke CreateWindowEx,WS_EX_CLIENTEDGE,addr EditClassName,\ NULL,WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\ ES_AUTOHSCROLL,50,105,200,25,hwnd,8,hinstance,NULL mov hwndEdit2,eax invoke SetFocus,hwndEdit1 invoke CreateWindowEx,NULL,addr ButtonClassName,addr ButtonText,\ WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 75,70,140,25,hwnd,ButtonID,hinstance,NULL mov hwndButton,eax .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF ax==ButtonID shr eax,16 .IF ax==BN_CLICKED push esi push edi push ebx invoke GetWindowText,hwndEdit1,addr buf,512 invoke lstrlen,addr buf mov esi,eax xor edi,edi xor eax,eax xor ebx,ebx mov cx,10 l1: mov bl,byte ptr buf[edi] sub bl,'0' jb error cmp bl,9 ja error mul cx add eax,ebx inc edi cmp edi,esi jb l1 push eax invoke GetWindowText,hwndEdit2,addr buf,512 invoke lstrlen,addr buf mov esi,eax xor edi,edi xor eax,eax xor ebx,ebx mov cx,10 l2: mov bl,byte ptr buf[edi] sub bl,'0' jb error cmp bl,9 ja error mul cx add eax,ebx inc edi cmp edi,esi jb l2 pop ebx add eax,ebx invoke wsprintf,addr buf,addr lpFmtd, eax invoke MessageBox,hwnd,addr buf,addr Zagolovok,MB_OK pop ebx pop edi pop esi error: .ENDIF .ENDIF .ELSE invoke DefWindowProc,hwnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp
end start
|
--------------------
"Бог умер" © Ницше "Ницше умер" © Бог
|