Advertisement
Guest User

Untitled

a guest
Apr 27th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4.  
  5. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
  6.  
  7. include \masm32\include\windows.inc
  8. include \masm32\include\user32.inc
  9. include \masm32\include\kernel32.inc
  10. includelib \masm32\lib\user32.lib
  11. includelib \masm32\lib\kernel32.lib
  12.  
  13. .data
  14.  
  15. ClassName db "SimpleWinClass",0
  16. AppName db "Our First Window",0
  17. MenuName db "FirstMenu",0
  18. ButtonClassName db "button",0
  19. ButtonText db "My First Button",0
  20. EditClassName db "edit",0
  21. TestString db "Wow! I'm in an edit box now",0
  22.  
  23. .data?
  24.  
  25. hInstance HINSTANCE ?
  26. CommandLine LPSTR ?
  27. hwndButton HWND ?
  28. hwndEdit HWND ?
  29. buffer db 512 dup(?) ; buffer to store the text retrieved from the edit box
  30.  
  31. .const
  32.  
  33. ButtonID equ 1 ; The control ID of the button control
  34. EditID equ 2 ; The control ID of the edit control
  35. IDM_HELLO equ 1
  36. IDM_CLEAR equ 2
  37. IDM_GETTEXT equ 3
  38. IDM_EXIT equ 4
  39.  
  40. .code
  41.  
  42. start:
  43. invoke GetModuleHandle, NULL
  44. mov hInstance,eax
  45. invoke GetCommandLine
  46. mov CommandLine,eax
  47. invoke WinMain, hInstance,NULL,CommandLine, 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.  
  55. mov wc.cbSize,SIZEOF WNDCLASSEX
  56. mov wc.style, CS_HREDRAW or CS_VREDRAW
  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_BTNFACE+1
  63. mov wc.lpszMenuName,OFFSET MenuName
  64. mov wc.lpszClassName,OFFSET ClassName
  65.  
  66. invoke LoadIcon,NULL,IDI_APPLICATION
  67. mov wc.hIcon,eax
  68. mov wc.hIconSm,eax
  69. invoke LoadCursor,NULL,IDC_ARROW
  70. mov wc.hCursor,eax
  71. invoke RegisterClassEx, addr wc
  72. invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName, \
  73. ADDR AppName, WS_OVERLAPPEDWINDOW,\
  74. CW_USEDEFAULT, CW_USEDEFAULT,\
  75. 300,200,NULL,NULL, hInst,NULL
  76. mov hwnd,eax
  77. invoke ShowWindow, hwnd,SW_SHOWNORMAL
  78. invoke UpdateWindow, hwnd
  79. .WHILE TRUE
  80. invoke GetMessage, ADDR msg,NULL,0,0
  81. .BREAK .IF (!eax)
  82. invoke TranslateMessage, ADDR msg
  83. invoke DispatchMessage, ADDR msg
  84. .ENDW
  85. mov eax,msg.wParam
  86. ret
  87.  
  88. WinMain endp
  89.  
  90. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  91. .IF uMsg==WM_DESTROY
  92. invoke PostQuitMessage,NULL
  93. .ELSEIF uMsg==WM_CREATE
  94. invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\
  95. WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
  96. ES_AUTOHSCROLL,\
  97. 50,35,200,25,hWnd,8,hInstance,NULL
  98. mov hwndEdit,eax
  99. invoke SetFocus, hwndEdit
  100. invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR ButtonText,\
  101. WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\
  102. 75,70,140,25,hWnd,ButtonID,hInstance,NULL
  103. mov hwndButton,eax
  104. .ELSEIF uMsg==WM_COMMAND
  105. mov eax,wParam
  106. .IF lParam==0
  107. .IF ax==IDM_HELLO
  108. invoke SetWindowText,hwndEdit,ADDR TestString
  109. .ELSEIF ax==IDM_CLEAR
  110. invoke SetWindowText,hwndEdit,NULL
  111. .ELSEIF ax==IDM_GETTEXT
  112. invoke GetWindowText,hwndEdit,ADDR buffer,512
  113. invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK
  114. .ELSE
  115. invoke DestroyWindow,hWnd
  116. .ENDIF
  117. .ELSE
  118. .IF ax==ButtonID
  119. shr eax,16
  120. .IF ax==BN_CLICKED
  121. invoke SendMessage,hWnd,WM_COMMAND,IDM_GETTEXT,0
  122. .ENDIF
  123. .ENDIF
  124. .ENDIF
  125. .ELSE
  126. invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  127. ret
  128. .ENDIF
  129. xor eax,eax
  130.  
  131. ret
  132.  
  133. WndProc endp
  134. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement