Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .model flat, stdcall
- option casemap :none
- include \masm32\include\windows.inc
- include \masm32\include\user32.inc
- include \masm32\include\kernel32.inc
- includelib \masm32\lib\user32.lib
- includelib \masm32\lib\kernel32.lib
- WinMain proto :DWORD, :DWORD, :DWORD, :DWORD
- .data
- ClassName db "WinClass", 0
- AppName db "Simple Window", 0
- ButtonClassName db "Button", 0
- ButtonText db "ButtonText", 0
- EditClassName db "Edit", 0
- .data?
- ButtonID HWND ?
- EditID HWND ?
- hInstance HINSTANCE ?
- hButton HWND ?
- hEdit HWND ?
- .code
- start:
- invoke GetModuleHandle, NULL
- mov hInstance, eax
- invoke WinMain, hInstance, NULL, NULL, 0
- invoke ExitProcess, eax
- WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR,
- CmdShow:DWORD
- local wc:WNDCLASSEX
- local msg:MSG
- local hwnd:HWND
- mov wc.cbSize, SIZEOF WNDCLASSEX
- mov wc.style, CS_HREDRAW or CS_VREDRAW
- mov wc.lpfnWndProc, offset WndProc
- mov wc.cbClsExtra, NULL
- mov wc.cbWndExtra, NULL
- push hInstance
- pop wc.hInstance
- mov wc.hbrBackground, COLOR_WINDOW+1
- mov wc.lpszMenuName, NULL
- mov wc.lpszClassName, offset ClassName
- invoke LoadIcon, NULL, IDI_APPLICATION
- mov wc.hIcon, eax
- mov wc.hIconSm, eax
- invoke LoadCursor, NULL, IDC_ARROW
- mov wc.hCursor, eax
- invoke RegisterClassEx, addr wc
- invoke CreateWindowEx, 0, addr ClassName, addr AppName, WS_OVERLAPPEDWINDOW or WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 375, 200, NULL, NULL, hInst, NULL
- mov hwnd, eax
- .while TRUE
- invoke GetMessage, addr msg, NULL, 0, 0
- .break .if (!eax)
- invoke TranslateMessage, addr msg
- invoke DispatchMessage, addr msg
- .endw
- mov eax, msg.wParam
- ret
- WinMain endp
- WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
- .if uMsg == WM_DESTROY
- invoke PostQuitMessage, 0
- .elseif uMsg == WM_CREATE
- invoke CreateWindowEx, NULL, addr ButtonClassName, addr ButtonText, WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON, 160, 15, 125, 25, hWnd, ButtonID, hInstance, NULL
- mov hButton, eax
- invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr EditClassName, NULL, WS_CHILD or WS_VISIBLE, 160, 150, 125, 25, hWnd, EditID, hInstance, NULL
- mov hEdit, eax
- .else
- invoke DefWindowProc, hWnd, uMsg, wParam, lParam
- ret
- .endif
- xor eax, eax
- ret
- WndProc endp
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement