Помогите подправить прогу на Assembler

  • Автор темы Tanzilit
  • Дата начала
T

Tanzilit

#1
Есть прога(текст ниже)...Она издает гудок при нажатии каждой 2 кропки,необходимо чтобы при нажатии каждой 2 клавиши она издавала щелчек.Подскажите где подправить и что
[codebox].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 "Курсовая СПО Иванюк Дмитрий Иванович",0
CommandLine DD 0
hWnd DD 0
hInstance DD 0
szClassName DB "Demo_Class", 0
sTitle DB "Введите символ", 0
sMsg DB "Вы ввели вторую букву : "
cll DB ?, 0 ;переменная хранящая введенный символ
koll 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 cll, AL

;возврат данных для окна

;проверка какая по счету буква

cmp koll, 0
jz next_12

cmp koll, 1
jz next_11

next_11:

mov koll, 0
jmp next_13

next_12:
mov koll, 1
jmp next_2

next_13:

push MB_OK
push offset sTitle
push offset sMsg
push 0
call MessageBeep ;возпроизводит звук если 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[/codebox]