mov wc.hIcon,eax
, B, A' Y( O( v4 W% H8 K U# r( r mov wc.hIconSm,eax2 Q: v' G# r$ H* U# \
invoke LoadCursor,NULL,IDC_ARROW# A z. z. c [ |
mov wc.hCursor,eax
/ Z8 b7 I5 [% F' t invoke RegisterClassEx, addr wc
9 [ U$ U- y' w2 `& j invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,CW_USEDEFAULT,\
. `; R# l/ \0 o) h5 a. y CW_USEDEFAULT,350,200,NULL,NULL,\
# \' o3 t: {, f5 D c hInst,NULL
& S# _ J. R6 Q4 c mov hwnd,eax
1 ~% J2 _% T! u- [ .while TRUE
- Q7 w. q5 @ k( a! b7 f8 q6 z" k invoke GetMessage, ADDR msg,NULL,0,0
/ |4 i, S, ~$ e R) e" A' w$ X .BREAK .IF (!eax)+ m! o$ |5 @1 p0 A+ h4 [: z
invoke TranslateMessage, ADDR msg8 W& v2 d; h9 k
invoke DispatchMessage, ADDR msg
/ O0 B. h! Y- u6 ^' l4 M .endw# m1 \) b. |8 K+ |
mov eax,msg.wParam j0 L: n! z) V, M: K8 o; _
ret) E4 `' W- [1 n
WinMain endp </p>
( e N6 c k+ S# f: R4 n! V WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
- I8 K" M L A& ^. s .if uMsg==WM_CREATE
9 L$ N# n l- A+ U+ b$ E invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClass,NULL,\) G8 X4 _# K, m5 F# t. i7 p, a" y+ T
WS_CHILD+WS_VISIBLE+WS_BORDER,20,\
; i$ a$ c8 H) _. X4 T 20,300,25,hWnd,NULL,\
$ `) o- Z8 S+ O hInstance,NULL/ F3 \- |1 d1 E7 d
mov hwndEdit,eax
0 Y' m; [9 I. J) A invoke SetFocus,eax
) [- z# T0 y' l& B' k6 T0 F( Z2 _ ;-----------------------------------------4 _& I" A9 N6 d6 B1 Z5 P: M
; Subclass it!
) X1 M4 e' W! _7 T; M0 m* a ;-----------------------------------------% T8 m R; O: u- r+ \' I7 k7 R8 u
invoke SetWindowLong,hwndEdit,GWL_WNDPROC,addr EditWndProc: C3 l# X( X$ x, c, Z
mov OldWndProc,eax) D9 [% l6 u( {- g/ R3 e3 Y
.elseif uMsg==WM_DESTROY& s, H2 ]* o) D8 X
invoke PostQuitMessage,NULL' _# Z4 Z9 t) ~% i0 O2 H, j
.else
2 j. e1 ~ l: u/ W' ?+ b; Y5 t invoke DefWindowProc,hWnd,uMsg,wParam,lParam
4 z6 M0 |8 r2 U8 a# u1 o5 D! n ret% I; L% M$ p% w0 n
.endif
$ j% c% V3 k0 M2 m8 a- ^ xor eax,eax7 x9 v0 l) l* h* H4 J
ret/ x J/ |* r: p8 N* {
WndProc endp
1 c/ D( d, q( x, _1 F/ E5 j EditWndProc PROC hEdit:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
0 Z# L. B# r2 ~( C .if uMsg==WM_CHAR4 Z$ m& X+ j3 s8 B1 F5 \' c
mov eax,wParam
! [$ F7 p8 m- }2 k/ { .if (al>="0" && al="A" && al="a" && al="a" && al="0" && al="A" && al="a" && al="a" && al |