home *** CD-ROM | disk | FTP | other *** search
/ ftp.sberbank.sumy.ua / 2014.11.ftp.sberbank.sumy.ua.tar / ftp.sberbank.sumy.ua / incoming / 1 / mousepix.asm < prev    next >
Assembly Source File  |  2014-02-08  |  4KB  |  160 lines

  1.       .386
  2.       .model flat, stdcall  ; 32 bit memory model
  3.       option casemap :none  ; case sensitive
  4.  
  5.  
  6.       include \masm32\include\windows.inc
  7.       include \masm32\include\user32.inc
  8.       include \masm32\include\kernel32.inc
  9.       include \masm32\include\gdi32.inc
  10.       
  11.       includelib \masm32\lib\user32.lib
  12.       includelib \masm32\lib\kernel32.lib
  13.       includelib \masm32\lib\gdi32.lib
  14.  
  15.       return MACRO arg
  16.         mov eax, arg
  17.         ret
  18.       ENDM
  19.  
  20.  
  21.   WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  22.   WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
  23.   
  24.  
  25.  
  26. .data
  27.  
  28.  szClassName   db "Evgeney_Victorovich_Kupin_27_April_1982",0
  29.  szDisplayName db "(+)",0
  30.  
  31.  CommandLine   dd 0
  32.  hWnd          dd 0
  33.  hInstance     dd 0
  34.  hIcon         dd 0 
  35.  
  36. PosX  dd 0
  37. PosY  dd 0
  38. RgbColor dd 0ffh
  39.  
  40. .code
  41.  
  42. start:
  43.       invoke GetModuleHandle, NULL
  44.       mov hInstance, eax
  45.  
  46.       invoke GetCommandLine
  47.       mov CommandLine, eax
  48.  
  49.       invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
  50.       invoke ExitProcess,eax
  51.  
  52. WinMain proc hInst     :DWORD, hPrevInst :DWORD, CmdLine   :DWORD, CmdShow   :DWORD
  53.  
  54.       LOCAL wc   :WNDCLASSEX
  55.       LOCAL msg  :MSG
  56.  
  57.       mov wc.cbSize,          sizeof WNDCLASSEX
  58.       mov wc.style,           CS_HREDRAW or CS_VREDRAW \
  59.                               or CS_BYTEALIGNWINDOW
  60.       mov  wc.lpfnWndProc,    offset WndProc
  61.       mov  wc.cbClsExtra,     NULL
  62.       mov  wc.cbWndExtra,     NULL
  63.       push hInst
  64.       pop  wc.hInstance
  65.       mov  wc.hbrBackground,  COLOR_WINDOW
  66.       mov  wc.lpszMenuName,   NULL
  67.       mov  wc.lpszClassName,  offset szClassName
  68.       push hIcon
  69.       pop  wc.hIcon
  70.       invoke LoadCursor,NULL,IDC_ARROW
  71.       mov  wc.hCursor,        eax
  72.       push hIcon 
  73.       pop  wc.hIconSm
  74.  
  75.       invoke RegisterClassEx, ADDR wc
  76.  
  77.  
  78.       invoke CreateWindowEx, 0,
  79.                             ADDR szClassName,
  80.                             ADDR szDisplayName,
  81.                             WS_OVERLAPPEDWINDOW,
  82.                             0,0,650,520,
  83.                             NULL,NULL,
  84.                             hInst,NULL
  85.       mov   hWnd,eax
  86.  
  87.       invoke ShowWindow,hWnd,SW_MAXIMIZE
  88.       invoke UpdateWindow,hWnd
  89.  
  90.     StartLoop:
  91.       invoke GetMessage,ADDR msg,NULL,0,0
  92.       cmp eax, 0
  93.       je ExitLoop
  94.       invoke TranslateMessage, ADDR msg
  95.       invoke DispatchMessage,  ADDR msg
  96.       jmp StartLoop
  97.     ExitLoop:
  98.  
  99.       return msg.wParam
  100.  
  101. WinMain endp
  102.  
  103.  
  104. WndProc proc hWin   :DWORD, uMsg   :DWORD, wParam :DWORD, lParam :DWORD
  105.  
  106.     LOCAL Ps   :PAINTSTRUCT
  107.     LOCAL hDC  :DWORD
  108.     
  109.  
  110.     .if uMsg == WM_CREATE
  111.  
  112.         return 0
  113.  
  114.    .elseif uMsg == WM_MOUSEMOVE
  115.      mov eax, lParam
  116.      mov PosX, eax
  117.      and PosX, 0ffffh
  118.     
  119.    mov PosY, eax
  120.     shr PosY, 16 
  121.       
  122.       invoke InvalidateRect, hWnd,0, FALSE
  123.       return 0
  124.  
  125. .elseif uMsg == WM_LBUTTONDOWN
  126.  
  127.       shl RgbColor, 8
  128.       mov eax, RgbColor
  129.       and eax, 0ff000000h
  130.       shr eax, 24
  131.      and RgbColor, 0ffffffh
  132.      or RgbColor, eax
  133.  
  134.     return 0
  135.  
  136.     .elseif uMsg == WM_PAINT
  137.         invoke BeginPaint,hWin,ADDR Ps
  138.         mov hDC, eax
  139.  
  140.         mov eax, PosX
  141.         add eax, PosY
  142.  
  143.         invoke Beep, eax, 40 
  144.         invoke SetPixel,  hDC, PosX, PosY,  RgbColor
  145.  
  146.         invoke EndPaint,hWin,ADDR Ps
  147.         return 0
  148.  
  149.     .elseif uMsg == WM_DESTROY
  150.         invoke PostQuitMessage,NULL
  151.         return 0 
  152.     .endif
  153.  
  154.     invoke DefWindowProc,hWin,uMsg,wParam,lParam
  155.  
  156.     ret
  157.  
  158. WndProc endp
  159. end start
  160.