Here is how my source code looks in PoASM. I actually create my source files as Batch scripts, this allows me to use Right Click -> Edit to modify my source, and Double Click to build my source.
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; @echo off
; set Project=FileName
; set BinPath=E:\DEVELOPMENT\PELLESC\BIN
; set LibPath=E:\DEVELOPMENT\PELLESC\LIB\WIN
; set IncPath=E:\DEVELOPMENT\PELLESC\INCLUDE\WIN\ASM
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; set Libraries=kernel32.lib user32.lib
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; set AS=poasm.exe
; set LD=polink.exe
; set ASFLAGS=/AIA32 /Gz
; set LDFLAGS=/machine:ix86 /subsystem:windows
; goto BuildProject
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.486
.MODEL FLAT, STDCALL
OPTION CASEMAP: NONE
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; [Project Title] - Copyright (c) [Author], [Year]
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
INCLUDE WINDOWS.INC
INCLUDE KERNEL32.INC
INCLUDE USER32.INC
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WinMain PROTO :DWORD, :DWORD, :DWORD, :DWORD
WndProc PROTO :DWORD, :DWORD, :DWORD, :DWORD
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.DATA
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ProjectClass DB "Project$Class", 0
ProjectTitle DB "Project Title", 0
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.DATA?
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
g_hWindow DD ?
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.CODE
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Project:
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
push SW_SHOWNORMAL
call GetCommandLine
push EAX
push NULL
push NULL
call GetModuleHandle
push EAX
call WinMain
push EAX
call ExitProcess
ret
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WinMain PROC hInstance:DWORD, hPrevInstance:DWORD, lpszCmdLn:DWORD, dwShow:DWORD
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
LOCAL WndCls:WNDCLASSEX
LOCAL Message:MSG
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
mov WndCls.cbSize, SIZEOF WNDCLASSEX
mov WndCls.style, CS_HREDRAW + CS_VREDRAW
mov WndCls.lpfnWndProc, OFFSET WndProc
mov WndCls.cbClsExtra, NULL
mov WndCls.cbWndExtra, NULL
push hInstance
pop WndCls.hInstance
INVOKE LoadIcon, NULL, IDI_APPLICATION
mov WndCls.hIcon, EAX
mov WndCls.hIconSm, EAX
INVOKE LoadCursor, NULL, IDC_ARROW
mov WndCls.hCursor, EAX
mov WndCls.hbrBackground, COLOR_BTNFACE + 1
mov WndCls.lpszMenuName, NULL
mov WndCls.lpszClassName, OFFSET ProjectClass
INVOKE RegisterClassEx, ADDR WndCls
INVOKE CreateWindowEx, WS_EX_OVERLAPPEDWINDOW, ADDR ProjectClass, ADDR ProjectTitle, \
WS_OVERLAPPEDWINDOW + WS_VISIBLE, \
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\
NULL, NULL, hInstance, NULL
cmp EAX, 0
jne @$CWEX_SUCCESS
mov EAX, -1
ret
@$CWEX_SUCCESS:
mov g_hWindow, EAX
INVOKE ShowWindow, g_hWindow, dwShow
INVOKE UpdateWindow, g_hWindow
INVOKE GetMessage, ADDR Message, NULL, FALSE, FALSE
@$MessageLoop:
INVOKE TranslateMessage, ADDR Message
INVOKE DispatchMessage, ADDR Message
INVOKE GetMessage, ADDR Message, NULL, FALSE, FALSE
cmp EAX, 0
jne @$MessageLoop
mov EAX, Message.wParam
ret
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WinMain ENDP
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WndProc PROC hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
mov EAX, uMsg
cmp EAX, WM_DESTROY
jne @$DEFAULT
INVOKE PostQuitMessage, NULL
jmp @$EXIT
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@$DEFAULT:
INVOKE DefWindowProc, hWnd, uMsg, wParam, lParam
@$EXIT:
ret
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WndProc ENDP
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
END Project
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; :BuildProject
; %BinPath%\%AS% %ASFLAGS% /I%IncPath% "%Project%.bat"
; if exist "%Project%.obj" %BinPath%\%LD% %LDFLAGS% /LIBPATH:%LibPath% "%Project%.obj" %Libraries%
; if exist "%Project%.obj" del "%Project%.obj"
; dir /on /ta /q /a-d
; echo.
; pause
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::