Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Программа на ассемблере 
:(
    Опции темы
ffldove
Дата 28.12.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

Вообще нужно чтобы она реагировала на гласные латинские клавиши, но хотябы подскажите куда и как вставить проверку клавиши?
PM MAIL   Вверх
dumb
Дата 28.12.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Модератор: Название темы не отражает ее суть, или несколько вопросов в одном топе!

Ознакомьтесь с правилами форума!:

http://forum.vingrad.ru/index.php?showtopic=96391
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.