当前位置: 首页 > news >正文

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
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

相关文章:

  • 《DAMA数据管理知识体系指南》第二章 数据处理伦理读书笔记总结
  • GAMES101-现代计算机图形学入门笔记
  • Hutool - DB:基于 ActiveRecord 思想的 JDBC 封装数据操作工具
  • XUnity.AutoTranslator-deepseek——调用腾讯的DeepSeek V3 API,实现Unity游戏中日文文本的自动翻译
  • Java 第八章 异常(1)
  • 详解TCP协议多种机制
  • java | MyBatis-plus映射和golang映射对比
  • 详解Nginx 配置
  • 将Neo4j用于Python学习的创新方法
  • 操作系统3.1
  • 自用题库---面试使用
  • 黑盒测试和白盒测试常用的测试方法有哪些?
  • 【科研绘图系列】R语言绘制小提琴图、散点图和韦恩图(violin scatter plot Venn)
  • C++:pthread线程分离和线程属性
  • 软件测试概念
  • 【VSCode】MicroPython环境配置
  • Java面试第六山!《MySQL基础知识点》
  • C语言基础11天:函数
  • Unity面板介绍_Project工程面板(23.1.1)
  • 解决OpenEuler系统修改句柄无效的问题
  • 网站的备案号在哪/seo搜索优化是什么呢
  • 企业网站服务类型/百度输入法免费下载
  • wordpress plugins插件/seo网站有优化培训吗
  • 做网站注册什么公司好/怎么做免费的网站推广
  • 淘客网站怎么做首页/深圳网络营销策划有限公司
  • 个人做房产网站有哪些资料/网站查询ip地址