Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с мышью  (Прочитано 5797 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Nazzusa
Читатель

ua
Offline Offline

« : 10-05-2019 18:05 » 

Пишу курсовую на тему "Пример обработки нажимания и вывода в окно текста"
Помогите написать комментарии к коду, пожалуйста!!!
.386
.model flat,stdcall

include   win32.inc

.data
szTitleName   db "Mouse", 0
szClassName   db "SimpleWinClass",0
AppName     db "Mouse Click",0
MouseClick    db 0               ; 0=нажатия все еще нет

.data?

hInst   dd ?
msg      MSGSTRUCT   <?>
wc      WNDCLASS   <?>
Rect      RECT      <?>
PaintStruct   PAINTSTRUCT   <?>
point      POINT      <?>
newhwnd      dd ?
hDC      dd ?
CommandLine   dd ?

.code

start:
   call   GetModuleHandleA, 0
   mov   [hInst],eax
   call   GetCommandLineA
   call   WinMain, [hInst], 0, [CommandLine], SW_SHOWNORMAL
   call   ExitProcess,eax

WinMain   proc   uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\
      wparam:DWORD, lparam:DWORD

        mov     [wc.clsStyle], CS_HREDRAW + CS_VREDRAW
        mov     [wc.clsLpfnWndProc], offset WndProc
        mov     [wc.clsCbClsExtra], 0
        mov     [wc.clsCbWndExtra], 0

        mov     eax, [hInst]
        mov     [wc.clsHInstance], eax

        call    LoadIconA, 0, IDI_APPLICATION
        mov     [wc.clsHIcon], eax

        call    LoadCursorA, 0 ,IDC_ARROW
        mov     [wc.clsHCursor], eax

        call    GetStockObject, WHITE_BRUSH
        mov     [wc.clsHbrBackground], eax

        mov     [wc.clsLpszMenuName], 0
        mov     [wc.clsLpszClassName], offset szClassName

        call    RegisterClassA, offset wc

        call    CreateWindowExA, 0, offset szClassName, offset szTitleName, \
                WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, \
                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,0,0, \
                [hInst], 0

        mov     [newhwnd], eax

        call    ShowWindow, [newhwnd], SW_SHOWNORMAL
        call    UpdateWindow, [newhwnd]
;----------------------------------------------------------------------
   .WHILE TRUE
   call   GetMessageA, offset msg, 0,0,0
                .BREAK .IF (!eax)
   call   DispatchMessageA, offset msg
   .ENDW
   mov     eax, [wparam]
   ret
;----------------------------------------------------------------------
WinMain endp

WndProc   proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\
      wparam:DWORD, lparam:DWORD

   .IF wmsg==WM_DESTROY
   call   PostQuitMessage, 0
   .ELSEIF wmsg==WM_LBUTTONDOWN   ; если нажата левая кнопка мыши
   mov   eax, [lparam]
   and   eax,0ffffh
   mov   [point.ptX],eax
   mov   eax,[lparam]
   shr   eax,16
   mov   [point.ptY],eax
   mov   [MouseClick],TRUE
   call   InvalidateRect, [hwnd], 0, TRUE
   .ELSEIF wmsg==WM_PAINT
   call   BeginPaint,[hwnd], offset PaintStruct   ; получим контекст устройства
   mov    [hDC],eax            ; на которое будет вывод
   .IF MouseClick
   call   TextOutA, [hDC], [point.ptX], [point.ptY], offset AppName,11
   .ENDIF
   call   EndPaint, [hwnd], offset PaintStruct   ; удалим контекст устройства
   .ELSE
   call   DefWindowProcA, [hwnd], [wmsg], [wparam], [lparam]
      ret
   .ENDIF
   xor    eax,eax
   ret
WndProc endp
end start
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-05-2019 18:21 » 

Так ты ж его сам писал, никто кроме тебя лучше не прокомментирует!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 11-05-2019 05:20 » new

RXL, "вот, написалось..." Отлично
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines