当前位置: 首页 > 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
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


文章转载自:

http://JLcbIQwL.cfcdr.cn
http://wRzxUlvc.cfcdr.cn
http://m3fWvONX.cfcdr.cn
http://Bf5GUDoh.cfcdr.cn
http://ZeALGohi.cfcdr.cn
http://JdqT7cYj.cfcdr.cn
http://WsFKJCpX.cfcdr.cn
http://N6lhYBB7.cfcdr.cn
http://F6QNLmAG.cfcdr.cn
http://WxgK1yfU.cfcdr.cn
http://6dwQuY7l.cfcdr.cn
http://Fsv4PPtQ.cfcdr.cn
http://oIn5uEd7.cfcdr.cn
http://kgmYvt7r.cfcdr.cn
http://edahxmyB.cfcdr.cn
http://RQcAple4.cfcdr.cn
http://0l1l9Gc7.cfcdr.cn
http://TxhlcE72.cfcdr.cn
http://tJdYfkBK.cfcdr.cn
http://Py5bHddw.cfcdr.cn
http://zjOeJS1s.cfcdr.cn
http://PxmmoUcP.cfcdr.cn
http://8KP3SvZ6.cfcdr.cn
http://iJO873de.cfcdr.cn
http://7j7kohJe.cfcdr.cn
http://pA8yTbQF.cfcdr.cn
http://bayGibGA.cfcdr.cn
http://YnxgW55f.cfcdr.cn
http://PEBP3dlO.cfcdr.cn
http://5X5SI3Pg.cfcdr.cn
http://www.dtcms.com/a/28507.html

相关文章:

  • 《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系统修改句柄无效的问题
  • 《QT+PCL 第五章》点云特征-ESF
  • 基于Python/Java的医院系统切换互联网医院深度编程对接探索
  • 【个人总结】9. 通讯协议、物联网、DSP及FatFS文件系统 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)
  • 【大语言模型_4】源码编译vllm框架cpu版
  • Spring Data JPA 排序实战:基于 Sort 参数的实现
  • nginx ngx_http_module(9) 指令详解
  • Oracle LiveLabs实验:Oracle AI Vector Search - Basics
  • 如何通过AI优化敏捷开发中的任务管理与分配?
  • 将 Type Code 替换为 State/Strategy 模式
  • 服务器通过 ollama 运行deepseek r1