Новичок
Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.5.2006
Репутация: нет Всего: нет
|
Нужно переделать программу чтобы она выдавала окно не на все клавиши а на определенные. код программы Код | .386 .model flat, stdcall option casemap:none
include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc include c:\masm32\include\gdi32.inc
includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\gdi32.lib WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD .data szDisplayName DB "monitor",0 CommandLine DD 0 hWnd DD 0 hInstance DD 0 szClassName DB "Demo_Class", 0 sTitle DB "vv simvol", 0 sMsg DB "vveli simvol" ;cl DB ?, 0 .code start: push NULL call GetModuleHandle mov hInstance, EAX
call GetCommandLine mov CommandLine, EAX push SW_SHOWDEFAULT push CommandLine push NULL push hInstance call WinMain push EAX call ExitProcess WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD
;локальные переменные процедуры
LOCAL wc :WNDCLASSEX LOCAL msg :MSG
;
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+9 mov wc.lpszMenuName, NULL mov wc.lpszClassName, offset szClassName invoke LoadIcon, NULL, IDI_APPLICATION mov wc.hIcon, EAX invoke LoadCursor, NULL, IDC_ARROW
mov wc.hCursor, EAX mov wc.hIconSm, 0 invoke RegisterClassEx, ADDR wc
invoke CreateWindowEx, WS_EX_OVERLAPPEDWINDOW, ADDR szClassName, \ ADDR szDisplayName, WS_OVERLAPPEDWINDOW, \ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \ CW_USEDEFAULT, NULL, NULL, hInst, NULL mov hWnd, EAX invoke ShowWindow, hWnd, SW_SHOWNORMAL invoke UpdateWindow, hWnd
;
StartLoop: push 0 push 0 push NULL lea EAX, msg
push EAX call GetMessage
cmp EAX, 0 je ExitLoop
lea EAX, msg push EAX call TranslateMessage
lea EAX, msg push EAX call DispatchMessage
jmp StartLoop ExitLoop: mov EAX,msg.wParam ret
WinMain endp
;
WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD,
LOCAL hdc :HDC LOCAL ps :PAINTSTRUCT
cmp uMsg, WM_PAINT jne next_1 invoke BeginPaint, hWnd, ADDR ps mov hdc, EAX lea EDX, ps push EDX push hWnd call EndPaint ret next_1: cmp uMsg, WM_CHAR jne next_2
mov EAX,wParam mov cl, AL push MB_OK push offset sTitle push offset sMsg push 0 call MessageBox ret next_2: cmp uMsg, WM_DESTROY jne next_3 push NULL call PostQuitMessage xor EAX, EAX ret next_3: push lParam push wParam push uMsg push hWin call DefWindowProc ret
WndProc endp
end start
|
Вообще нужно чтобы она реагировала на гласные латинские клавиши, но хотябы подскажите куда и как вставить проверку клавиши?
|