win32汇编环境,对话框中使用菜单示例一
;运行效果
;win32汇编环境,对话框中使用菜单示例一
;最基本的应用,即添加菜单及点击后响应的操作方法
;直接抄进RadAsm可编译运行。重要部分加备注。
;下面为asm文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 自定义函数声明
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
.data
DlgName db "MyDialog",0
szMsg db "提示",0
szMen11 db "点击了菜单:开始",0
szMen21 db "点击了菜单: 功能01",0
.data?
hInstance HINSTANCE ?
.const
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Equ 等值定义
ICO_MAIN equ 1000 ;图标
IDM_MAIN equ 1001
IDM_011 equ 11
IDM_012 equ 12
IDM_021 equ 21
IDM_022 equ 22
IDM_023 equ 23
IDM_031 equ 31
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
invoke ExitProcess,eax
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG
invoke LoadIcon,hInstance,ICO_MAIN
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.elseif uMsg == WM_COMMAND
mov eax,wParam ;wParam的底位字节是标识符
.if ax == IDM_011
invoke MessageBox,NULL,addr szMen11,addr szMsg,MB_OK
.elseif ax == IDM_021
invoke MessageBox,NULL,addr szMen21,addr szMsg,MB_OK
.elseif ax == IDM_012
invoke EndDialog, hWnd,NULL
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog, hWnd,NULL
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
end start
;下面为rc文件内容
#include "resource.h" //提示缺少该文件,可以在资源里下载
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define ICO_MAIN 1000 //图标
#define IDM_MAIN 1001
#define IDM_011 11
#define IDM_012 12
#define IDM_021 21
#define IDM_022 22
#define IDM_023 23
#define IDM_031 31
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN ICON "Main.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//定义对话框
MyDialog DIALOG 10, 10, 205, 100
STYLE DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK
CAPTION "对话框程序模版"
FONT 12, "方正姚体"
MENU IDM_MAIN //将菜单条加入对话框
BEGIN
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IDM_MAIN menu
BEGIN
popup "文件(&F)"
BEGIN
menuitem "开始", IDM_011
menuitem separator //沉底分隔条
menuitem "退出", IDM_012
END
popup "命令(&C)"
BEGIN
menuitem "功能01", IDM_021
menuitem "功能02", IDM_022
menuitem "功能03", IDM_023
END
popup "帮助(&H)"
BEGIN
menuitem "帮助", IDM_031
END
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>