;---------------------- ;非模式对话框程序 ;---------------------- .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