;----------------------
;非模式对话框程序
;----------------------
.386
.model flat,stdcall
option casemap:none
WinMain proto:DWORD,:DWORD,:DWORD,:DWORD
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
IDD_DIALOG_MML equ 101
IDC_BUTTON_ADD equ 1001
IDC_BUTTON_DEC equ 1002
IDM_EXIT equ 40001
IDC_EDIT equ 1000
.data
ClassName db "DLGCLASS",0
DlgName db "ModelessDialog",0
szShowInf db "该消息框在处理WM_DESTROY消息时产生",0
szMsgCap db "对话框退出",0
szMsgCre db "对话框产生",0
szShowCre db "该消息再处理WM_CREAT消息时产生",0
.data?
dwVal dd ?
hInstance HINSTANCE ?
hDlg dd ?
.code
;---------主程序段----------
start:
invoke GetModuleHandle,NULL ;创建窗口第一步:得到应用程序的句柄
mov hInstance ,eax
invoke WinMain,hInstance,NULL,NULL,SW_SHOWDEFAULT
invoke ExitProcess,NULL
WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
.if uMsg==WM_DESTROY
invoke MessageBox,NULL,addr szShowInf,addr szMsgCap,MB_OK
invoke PostQuitMessage,NULL
.elseif uMsg==WM_CREATE
invoke MessageBox,NULL,addr szShowInf,addr szMsgCap,MB_OK
.elseif uMsg==WM_INITDIALOG
mov dwVal,11
invoke SetDlgItemInt,hWnd,IDC_EDIT,dwVal,FALSE
.elseif uMsg==WM_COMMAND
mov eax,wParam
.if ax==IDC_BUTTON_ADD
inc dwVal
invoke SetDlgItemInt,hWnd,IDC_EDIT,dwVal,FALSE
.elseif ax==IDC_BUTTON_DEC
dec dwVal
invoke SetDlgItemInt,hWnd,IDC_EDIT,dwVal,FALSE
.elseif ax==IDM_EXIT
invoke DestroyWindow,hWnd
.endif
.elseif uMsg==WM_CLOSE
invoke DestroyWindow,hWnd ;模式对话框中使用EndDialog
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
WndProc endp
;-非模式对话框--消息循环由用户建立
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL msg:MSG
invoke CreateDialogParam,hInst,IDD_DIALOG_MML,NULL,WndProc,NULL
mov hDlg,eax
invoke ShowWindow,hDlg,SW_SHOWNORMAL
invoke UpdateWindow,hDlg
;------设置输入焦点
invoke GetDlgItem,hDlg,IDC_BUTTON_ADD
invoke SetFocus,eax
;------非模式对话框的消息循环
.WHILE TRUE
invoke GetMessage,ADDR msg,NULL,0,0
.BREAK .IF(!eax)
invoke IsDialogMessage,hDlg,ADDR msg
.IF eax==FALSE
invoke TranslateMessage,ADDR msg
invoke DispatchMessage,ADDR msg
.endif
.endw
mov eax,msg.wParam
ret
WinMain endp
end start
#include<resource.h>
#define IDD_DIALOG_MML 101
#define IDR_MENU_DLG 102
#define IDC_EDIT 1000
#define IDC_BUTTON_ADD 1001
#define IDC_BUTTON_DEC 1002
#define IDM_EXIT 40001
#define IDC_STATIC -1
//Dialog----在对话框中添加菜单
//非模式对话框在资源文件中和模式对话框无区别
IDD_DIALOG_MML DIALOG DISCARDABLE 0,0,170,60
STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU
CAPTION "Modeless Dialog"
MENU IDR_MENU_DLG
FONT 10,"System"
BEGIN
PUSHBUTTON "增 加(&c)",IDC_BUTTON_ADD,21,37,50,11
EDITTEXT IDC_EDIT,7,7,156,15,ES_AUTOHSCROLL
GROUPBOX "操作",IDC_STATIC,7,26,156,27
PUSHBUTTON "减 少(&c)",IDC_BUTTON_DEC,95,37,50,11
END
IDR_MENU_DLG MENU DISCARDABLE
BEGIN
POPUP "File"
BEGIN
MENUITEM "E&xit",IDM_EXIT
END
END
Win32汇编--非模式对话框实例
最新推荐文章于 2021-08-11 19:24:43 发布