home *** CD-ROM | disk | FTP | other *** search
/ ftp.sberbank.sumy.ua / 2014.11.ftp.sberbank.sumy.ua.tar / ftp.sberbank.sumy.ua / incoming / 1 / mousepix1.asm < prev    next >
Assembly Source File  |  2014-02-08  |  3KB  |  152 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.   MakePixelsLoc PROTO :DWORD,:DWORD
  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.  
  37. .code
  38.  
  39. start:
  40.       invoke GetModuleHandle, NULL
  41.       mov hInstance, eax
  42.  
  43.       invoke GetCommandLine
  44.       mov CommandLine, eax
  45.  
  46.       invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
  47.       invoke ExitProcess,eax
  48.  
  49. WinMain proc hInst     :DWORD, hPrevInst :DWORD, CmdLine   :DWORD, CmdShow   :DWORD
  50.  
  51.       LOCAL wc   :WNDCLASSEX
  52.       LOCAL msg  :MSG
  53.  
  54.       mov wc.cbSize,          sizeof WNDCLASSEX
  55.       mov wc.style,           CS_HREDRAW or CS_VREDRAW \
  56.                               or CS_BYTEALIGNWINDOW
  57.       mov  wc.lpfnWndProc,    offset WndProc
  58.       mov  wc.cbClsExtra,     NULL
  59.       mov  wc.cbWndExtra,     NULL
  60.       push hInst
  61.       pop  wc.hInstance
  62.       mov  wc.hbrBackground,  COLOR_WINDOW
  63.       mov  wc.lpszMenuName,   NULL
  64.       mov  wc.lpszClassName,  offset szClassName
  65.       push hIcon
  66.       pop  wc.hIcon
  67.       invoke LoadCursor,NULL,IDC_ARROW
  68.       mov  wc.hCursor,        eax
  69.       push hIcon 
  70.       pop  wc.hIconSm
  71.  
  72.       invoke RegisterClassEx, ADDR wc
  73.  
  74.  
  75.       invoke CreateWindowEx, 0,
  76.                             ADDR szClassName,
  77.                             ADDR szDisplayName,
  78.                             WS_OVERLAPPEDWINDOW,
  79.                             0,0,650,520,
  80.                             NULL,NULL,
  81.                             hInst,NULL
  82.       mov   hWnd,eax
  83.  
  84.       invoke ShowWindow,hWnd,SW_MAXIMIZE
  85.       invoke UpdateWindow,hWnd
  86.  
  87.     StartLoop:
  88.       invoke GetMessage,ADDR msg,NULL,0,0
  89.       cmp eax, 0
  90.       je ExitLoop
  91.       invoke TranslateMessage, ADDR msg
  92.       invoke DispatchMessage,  ADDR msg
  93.       jmp StartLoop
  94.     ExitLoop:
  95.  
  96.       return msg.wParam
  97.  
  98. WinMain endp
  99.  
  100.  
  101. WndProc proc hWin :DWORD, uMsg   :DWORD, wParam :DWORD, lParam :DWORD
  102.   
  103.    .if uMsg == WM_MOUSEMOVE
  104.  
  105.       invoke MakePixelsLoc , hWin,  lParam
  106.       return 0
  107.  
  108.     .elseif uMsg == WM_DESTROY
  109.         invoke PostQuitMessage,NULL
  110.         return 0 
  111.     .endif
  112.  
  113.     invoke DefWindowProc,hWin,uMsg,wParam,lParam
  114.  
  115.     ret
  116.  
  117. WndProc endp
  118.  
  119. MakePixelsLoc proc  hWin:DWORD, PosXY:DWORD
  120.  LOCAL hDC  :DWORD
  121.  LOCAL PosX:DWORD
  122.  LOCAL PosY:DWORD
  123.  LOCAL RgbColor:DWORD
  124.  LOCAL Freq:DWORD
  125.  
  126.      mov eax, PosXY
  127.      mov PosX, eax
  128.      and PosX, 0ffffh
  129.  
  130.     mov eax,PosXY
  131.     shr eax, 16 
  132.     mov PosY,eax
  133.  
  134.      invoke GetDC, hWin
  135.      mov hDC, eax
  136.  
  137.     invoke GetTickCount
  138.     and eax, 0ffffffh
  139.     mov RgbColor,eax
  140.  
  141.      mov eax, PosX
  142.      add eax, PosY
  143.      mov Freq,eax
  144.  
  145.      invoke Beep, Freq, 40 
  146.      invoke SetPixel,  hDC, PosX, PosY,  RgbColor
  147.  
  148.      invoke ReleaseDC, hWin, hDC
  149.       ret
  150. MakePixelsLoc endp
  151. end start
  152.