📄 resdlg2.asm
字号:
; #########################################################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\masm32.lib
; #########################################################################
;=============
; Local macros
;=============
szText MACRO Name, Text:VARARG
LOCAL lbl
jmp lbl
Name db Text,0
lbl:
ENDM
;=================
; Local prototypes
;=================
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
hEdit1 dd 0
hEdit2 dd 0
hEdit3 dd 0
hEdit4 dd 0
hButn1 dd 0
hButn2 dd 0
hInstance dd 0
hIconImage dd 0
hIcon dd 0
dlgname db "TESTWIN",0
; #########################################################################
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
; -------------------------------------------
; Call the dialog box stored in resource file
; -------------------------------------------
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
invoke ExitProcess,eax
; #########################################################################
WndProc proc hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
LOCAL Ps :PAINTSTRUCT
.if uMsg == WM_INITDIALOG
szText dlgTitle," Demo dialog box"
invoke SendMessage,hWin,WM_SETTEXT,0,ADDR dlgTitle
invoke LoadIcon,hInstance,200
mov hIcon, eax
invoke SendMessage,hWin,WM_SETICON,1,hIcon
invoke GetDlgItem,hWin,100
mov hEdit1, eax
invoke GetDlgItem,hWin,101
mov hEdit2, eax
invoke GetDlgItem,hWin,102
mov hEdit3, eax
invoke GetDlgItem,hWin,103
mov hEdit4, eax
invoke GetDlgItem,hWin,1000
mov hButn1, eax
invoke GetDlgItem,hWin,1001
mov hButn2, eax
xor eax, eax
ret
.elseif uMsg == WM_COMMAND
.if wParam == 1000
szText calcMsg,"Calculate Button"
invoke MessageBox,hWin,ADDR calcMsg,
ADDR dlgTitle,MB_OK
.elseif wParam == 1001
szText clearMsg,"Clear Button"
invoke MessageBox,hWin,ADDR clearMsg,
ADDR dlgTitle,MB_OK
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWin,0
.elseif uMsg == WM_PAINT
invoke BeginPaint,hWin,ADDR Ps
; ----------------------------------------
; The following function are in MASM32.LIB
; ----------------------------------------
invoke FrameGrp,hButn1,hButn2,6,1,0
invoke FrameGrp,hEdit1,hEdit3,4,1,0
invoke FrameCtrl,hEdit4,4,1,0
invoke FrameWindow,hWin,0,1,1
invoke FrameWindow,hWin,1,1,0
invoke EndPaint,hWin,ADDR Ps
xor eax, eax
ret
.endif
xor eax, eax ; this must be here in NT4
ret
WndProc endp
; ########################################################################
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -