程式語言 - Wine - Assembly (ARM 32) - head.inc



.global WinMain

.extern CreateWindowExA
.extern MessageBoxA
.extern ExitProcess
.extern GetMessageA
.extern DispatchMessageA
.extern CallWindowProcA
.extern SetWindowLongA
.extern DefWindowProcA
.extern RegisterClassA
.extern SetWindowTextA
.extern SetScrollRange
.extern SetScrollPos

.equiv DT_VCENTER, 4
.equiv DT_CENTER, 1
.equiv DT_SINGLELINE, 0x20
.equiv TRANSPARENT, 1
.equiv FF_DONTCARE, 0
.equiv FW_BOLD, 700
.equiv OUT_OUTLINE_PRECIS, 8
.equiv CLIP_DEFAULT_PRECIS, 0
.equiv CLEARTYPE_QUALITY, 5
.equiv DEFAULT_PITCH, 0
.equiv PS_SOLID, 0
.equiv GWL_WNDPROC, -4
.equiv SB_LINEUP, 0
.equiv SB_LINELEFT, 0
.equiv SB_LINEDOWN, 1
.equiv SB_LINERIGHT, 1
.equiv SB_PAGEUP, 2
.equiv SB_PAGELEFT, 2
.equiv SB_PAGEDOWN, 3
.equiv SB_PAGERIGHT, 3
.equiv SB_VERT, 1
.equiv SW_SHOWNORMAL, 1
.equiv WC_DIALOG, 0x8002
.equiv WM_PAINT, 0x0f
.equiv WM_VSCROLL, 0x115
.equiv WM_TIMER, 0x113
.equiv WM_MOUSEMOVE, 0x200
.equiv WM_SYSKEYDOWN, 0x104
.equiv WM_KEYDOWN, 0x100
.equiv WM_DESTROY, 2
.equiv WM_CLOSE, 0x10
.equiv WS_VSCROLL, 0x200000
.equiv WS_OVERLAPPED, 0
.equiv WS_CAPTION, 0xc00000
.equiv WS_SYSMENU, 0x80000
.equiv WS_THICKFRAME, 0x40000
.equiv WS_MINIMIZEBOX, 0x20000
.equiv WS_MAXIMIZEBOX, 0x10000
.equiv WS_VISIBLE, 0x10000000
.equiv WS_EX_LEFT, 0x00000000
.equiv WS_OVERLAPPEDWINDOW, (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)

.equiv WNDCLASS.style, 0
.equiv WNDCLASS.lpfnWndProc, 4
.equiv WNDCLASS.cbClsExtra, 8
.equiv WNDCLASS.cbWndExtra, 12
.equiv WNDCLASS.hInstance, 16
.equiv WNDCLASS.hIcon, 20
.equiv WNDCLASS.hCursor, 24
.equiv WNDCLASS.hbrBackground, 28
.equiv WNDCLASS.lpszMenuName, 32
.equiv WNDCLASS.lpszClassName, 36

    .data
hWin: .skip 4
szMsg: .skip 28
szAppName: .asciz "main"
pDefWndProc: .skip 4
pBuf: .space 128
FMT_KBD: .asciz "Key: %d"
FMT_MOUSE: .asciz "%d-%d"
FMT_TIMER: .asciz "%d"
SLUP: .asciz "LINE++"
SLDN: .asciz "LINE--"
SPUP: .asciz "PAGE++"
SPDN: .asciz "PAGE--"
dwCnt: .space 4
wndClass:
    .space 4   @ style
    .space 4   @ lpfnWndProc
    .space 4   @ cbClsExtra
    .space 4   @ cbWndExtra
    .space 4   @ hInstance
    .space 4   @ hIcon
    .space 4   @ hCursor
    .space 4   @ hbrBackground
    .space 4   @ lpszMenuName
    .space 4   @ lpszClassName
wndClass_end:
WNDCLASS_SIZE: .word wndClass_end - wndClass