Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. .386
  2. .model flat, stdcall
  3. option casemap :none
  4. include \masm32\include\windows.inc
  5. include \masm32\include\user32.inc
  6. include \masm32\include\kernel32.inc
  7. includelib \masm32\lib\user32.lib
  8. includelib \masm32\lib\kernel32.lib
  9.  
  10. WinMain proto :DWORD, :DWORD, :DWORD, :DWORD
  11. .data
  12. ClassName db "WinClass", 0
  13. AppName db "Simple Window", 0
  14. ButtonClassName db "Button", 0
  15. ButtonText db "ButtonText", 0
  16. EditClassName db "Edit", 0
  17.  
  18. .data?
  19. ButtonID HWND ?
  20. EditID HWND ?
  21. hInstance HINSTANCE ?
  22.  
  23. hButton HWND ?
  24. hEdit HWND ?
  25.  
  26.  
  27. .code
  28. start:
  29. invoke GetModuleHandle, NULL
  30. mov hInstance, eax
  31. invoke WinMain, hInstance, NULL, NULL, 0
  32. invoke ExitProcess, eax
  33.  
  34. WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR,
  35. CmdShow:DWORD
  36. local wc:WNDCLASSEX
  37. local msg:MSG
  38. local hwnd:HWND
  39.  
  40. mov wc.cbSize, SIZEOF WNDCLASSEX
  41. mov wc.style, CS_HREDRAW or CS_VREDRAW
  42. mov wc.lpfnWndProc, offset WndProc
  43. mov wc.cbClsExtra, NULL
  44. mov wc.cbWndExtra, NULL
  45. push hInstance
  46. pop wc.hInstance
  47. mov wc.hbrBackground, COLOR_WINDOW+1
  48.  
  49. mov wc.lpszMenuName, NULL
  50. mov wc.lpszClassName, offset ClassName
  51. invoke LoadIcon, NULL, IDI_APPLICATION
  52. mov wc.hIcon, eax
  53. mov wc.hIconSm, eax
  54. invoke LoadCursor, NULL, IDC_ARROW
  55. mov wc.hCursor, eax
  56. invoke RegisterClassEx, addr wc
  57.  
  58. invoke CreateWindowEx, 0, addr ClassName, addr AppName, WS_OVERLAPPEDWINDOW or WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 375, 200, NULL, NULL, hInst, NULL
  59. mov hwnd, eax
  60.  
  61. .while TRUE
  62. invoke GetMessage, addr msg, NULL, 0, 0
  63. .break .if (!eax)
  64. invoke TranslateMessage, addr msg
  65. invoke DispatchMessage, addr msg
  66. .endw
  67.  
  68. mov eax, msg.wParam
  69. ret
  70. WinMain endp
  71.  
  72. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  73. .if uMsg == WM_DESTROY
  74. invoke PostQuitMessage, 0
  75.  
  76. .elseif uMsg == WM_CREATE
  77.  
  78. invoke CreateWindowEx, NULL, addr ButtonClassName, addr ButtonText, WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 160, 15, 125, 25, hWnd, ButtonID, hInstance, NULL
  79. mov hButton, eax
  80.  
  81. invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr EditClassName, NULL, WS_CHILD or WS_VISIBLE, 160, 150, 125, 25, hWnd, EditID, hInstance, NULL
  82. mov hEdit, eax
  83.  
  84.  
  85. .else
  86. invoke DefWindowProc, hWnd, uMsg, wParam, lParam
  87. ret
  88. .endif
  89. xor eax, eax
  90. ret
  91. WndProc endp
  92. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement