Guest User

Untitled

a guest
Nov 20th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. .586
  2. .model flat,stdcall
  3. option casemap:none
  4.  
  5. include \masm32\include\windows.inc
  6. include \masm32\include\user32.inc
  7. include \masm32\include\kernel32.inc
  8. include \masm32\include\comctl32.inc
  9. include \masm32\include\gdi32.inc
  10. includelib \masm32\lib\user32.lib
  11. includelib \masm32\lib\kernel32.lib
  12. includelib \masm32\lib\comctl32.lib
  13. includelib \masm32\lib\gdi32.lib
  14. include \masm32\include\masm32.inc ;for dwtoa function
  15. include \masm32\macros\macros.asm ;for rv() macro
  16. includelib \masm32\lib\masm32.lib
  17.  
  18. WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  19.  
  20. RGB macro red,green,blue ;used for TextOut function
  21. xor eax,eax
  22. mov ah,blue
  23. shl eax,8
  24. mov ah,green
  25. mov al,red
  26. endm
  27.  
  28. .data
  29. ClassName db "WinClassName",0
  30. AppName db "WinAppName",0
  31. Hello_txt db "Hello there!",0
  32.  
  33. .data?
  34. hInstance HINSTANCE ?
  35. buffer db 128 dup(?)
  36.  
  37.  
  38. .const
  39. Scr_Width equ 1024
  40. Scr_Height equ 640
  41.  
  42. .code
  43.  
  44. start:
  45. invoke GetModuleHandle,NULL
  46. mov hInstance,eax
  47. invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT
  48. invoke ExitProcess,eax
  49.  
  50. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
  51. LOCAL wc:WNDCLASSEX
  52. LOCAL msg:MSG
  53. LOCAL hwnd:HWND
  54. LOCAL rc:RECT
  55.  
  56. mov wc.cbSize,SIZEOF WNDCLASSEX
  57. mov wc.style,CS_HREDRAW or CS_VREDRAW
  58. mov wc.lpfnWndProc,OFFSET WndProc
  59. mov wc.cbClsExtra,NULL
  60. mov wc.cbWndExtra,NULL
  61. push hInst
  62. pop wc.hInstance
  63.  
  64. RGB 0,0,0
  65. invoke CreateSolidBrush,eax
  66. mov wc.hbrBackground,eax
  67.  
  68. mov wc.lpszMenuName,NULL
  69. mov wc.lpszClassName,OFFSET ClassName
  70. invoke LoadIcon,NULL,IDI_APPLICATION
  71. mov wc.hIcon,eax
  72. mov wc.hIconSm,eax
  73. invoke LoadCursor,NULL,IDC_ARROW
  74. mov wc.hCursor,eax
  75. invoke RegisterClassEx,addr wc
  76.  
  77. mov rc.left,0
  78. mov rc.top,0
  79. mov rc.right,Scr_Width
  80. mov rc.bottom,Scr_Height
  81. invoke GetSystemMetrics,SM_CXFIXEDFRAME
  82. shl eax,1
  83. add rc.right,eax
  84. invoke GetSystemMetrics,SM_CYFIXEDFRAME
  85. shl eax,1
  86. add rc.bottom,eax
  87. invoke GetSystemMetrics,SM_CYCAPTION
  88. add rc.bottom,eax
  89. invoke GetSystemMetrics,SM_CXSCREEN
  90. sub eax,Scr_Width
  91. shr eax,1
  92. mov rc.left,eax
  93. invoke GetSystemMetrics,SM_CYSCREEN
  94. sub eax,Scr_Height
  95. shr eax,1
  96. mov rc.top,eax
  97.  
  98. invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,WS_VISIBLE+WS_SYSMENU+WS_DLGFRAME+WS_MINIMIZEBOX+WS_MAXIMIZEBOX,rc.left,rc.top,rc.right,rc.bottom,NULL,NULL,hInst,NULL
  99. mov hwnd,eax
  100.  
  101. .WHILE TRUE
  102. invoke GetMessage,ADDR msg,NULL,0,0
  103. .BREAK .IF(!eax)
  104. invoke TranslateMessage,ADDR msg
  105. invoke DispatchMessage,ADDR msg
  106. .ENDW
  107.  
  108. mov eax,msg.wParam
  109. ret
  110. WinMain endp
  111.  
  112. WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
  113. LOCAL hdc:HDC
  114. LOCAL ps:PAINTSTRUCT
  115. LOCAL hfont:HFONT
  116.  
  117. .if uMsg==WM_PAINT
  118. invoke BeginPaint,hWnd,ADDR ps
  119. mov hdc,eax
  120. invoke CreateFont,24,16,0,0,400,0,0,0,OEM_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL
  121. invoke SelectObject,hdc,eax
  122. mov hfont,eax
  123.  
  124. RGB 255,255,255
  125. invoke SetTextColor,hdc,eax
  126. RGB 0,0,0
  127. invoke SetBkColor,hdc,BLACK_BRUSH
  128.  
  129. invoke TextOut,hdc,450,300,ADDR Hello_txt,len(ADDR Hello_txt)
  130.  
  131. mov eax,12345
  132. invoke dwtoa,eax,ADDR buffer
  133. invoke TextOut,hdc,450,350,ADDR buffer,len(ADDR buffer)
  134.  
  135. invoke EndPaint,hWnd,ADDR ps
  136.  
  137. .elseif uMsg==WM_CREATE ;used to create edit controls, buttons, etc.
  138.  
  139. invoke InvalidateRect,hWnd,NULL,TRUE
  140. invoke UpdateWindow,hWnd
  141.  
  142. .elseif uMsg==WM_COMMAND ;used to process menu commands
  143.  
  144. .elseif uMsg==WM_CHAR ;used to handle keyboard input
  145.  
  146. .elseif uMsg==WM_DESTROY
  147. invoke PostQuitMessage,NULL
  148.  
  149. .else
  150. invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  151. ret
  152.  
  153. .endif
  154. xor eax,eax
  155. ret
  156.  
  157. WndProc endp
  158.  
  159. end start
Add Comment
Please, Sign In to add comment