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

相关文章:

win32汇编环境,对话框中使用菜单示例一

;运行效果 ;win32汇编环境,对话框中使用菜单示例一 ;最基本的应用,即添加菜单及点击后响应的操作方法 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>&g…...

AutoDock CrankPep or ADCP进行蛋白质多肽对接

需求描述 使用AutoDock CrankPep or ADCP进行蛋白质多肽对接 硬件及系统配置 自用电脑型号如下: 电脑:Precision Tower 7810 (Dell Inc.) CPU : Intel Xeon CPU E5-2686 v4 2.30GHz GPU: NVIDIA GeForce GTX 1070 Linux版本&a…...

高压直流熔断器研究

1.1 定义与作用 高压直流熔断器是一种用于直流电路的过电流保护装置,其主要作用是在电路中检测到过载电流或短路电流时,迅速切断电路,以防止电力设备受损或发生火灾等事故。根据 ISO-8820 和 QC/T420-2004 等标准的定义,熔断器是…...

微信小程序(uni)+蓝牙连接+Xprint打印机实现打印功能

1.蓝牙列表实现&#xff0c;蓝牙设备展示&#xff0c;蓝牙连接 <template><view class"container"><view class"container_top"><view class"l">设备名称</view><view class"r">{{state.phoneNam…...

使用 Docker 部署 Flask 应用

使用 Docker 部署 Flask 应用 一、引言 在现代软件开发中,应用的部署和环境管理是至关重要的环节。传统的部署方式常常会遇到 “在我机器上能运行,在你机器上不行” 的问题,而 Docker 的出现很好地解决了这个痛点。Docker 是一个用于开发、部署和运行应用程序的开放平台,…...

深入浅出GraphQL:现代API设计的未来

文章目录 一、引言二、什么是GraphQL&#xff1f;三、GraphQL的优势3.1 精确获取数据3.2 强类型系统3.3 单一端点3.4 实时数据 四、实际应用4.1 定义Schema4.2 实现解析器4.3 启动GraphQL服务器 五、结论 一、引言 在当今的 Web 开发中&#xff0c;API&#xff08;应用程序编程…...

深入理解Zookeeper:分布式系统的协调者

引言 在现代分布式系统中&#xff0c;协调和管理多个节点之间的状态和行为是一个复杂且关键的任务。Zookeeper作为一个分布式协调服务&#xff0c;为开发者提供了一种高效、可靠的方式来处理分布式系统中的一致性问题。本文将介绍Zookeeper的基本概念、使用场景以及如何通过示…...

python绘图之回归拟合图

回归拟合图在数据分析中具有重要作用&#xff0c;它不仅可以帮助我们理解变量之间的关系&#xff0c;还可以评估模型的拟合效果、进行预测和推断、发现异常值&#xff0c;以及用于模型比较和结果展示。 import pandas as pd import seaborn as sns import matplotlib.pyplot as…...

C语言学习笔记(第二部份)

说明&#xff1a;由于所有内容放在一个md文件中会非常卡顿&#xff0c;本文件将接续C.md文件的第二部分 结构体 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 结构体的成员可以是标量&#xff0c;数组&#xff0c;指针&#xff0c…...

jQuery UI CSS 框架 API

jQuery UI CSS 框架 API 概述 jQuery UI 是一个基于 jQuery 的用户界面和交互库,它提供了一套丰富的交互组件和视觉效果,旨在帮助开发者快速构建具有吸引力和互动性的网页应用。jQuery UI CSS 框架 API 是 jQuery UI 的一部分,它允许开发者通过简单的 CSS 类来控制 UI 组件…...

Redis7——基础篇(六)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…...

Windows网络安全基础

随着互联网的发展和普及&#xff0c;Windows网络安全问题愈发严重。在本文中&#xff0c;我们将会介绍Windows网络安全的基本概念&#xff0c;包括网络攻击类型、网络安全威胁、网络安全防御措施等等&#xff0c;帮助初学者更好地了解Windows网络安全。 一、网络攻击类型 网络…...

spring boot知识点4

1.如何监视所有spring boot微服务 安装actuator插件&#xff0c;然后通过接口查询 /actuator/health 2.spring boot项目性能如何优化 a.优化启动时间&#xff0c;去除重复的依赖 b.JVM优化&#xff08;java虚拟机优化&#xff09;&#xff0c;限制堆的最小最大值 c.数据库…...

【大模型系列篇】DeepSeek-R1如何通过强化学习有效提升大型语言模型的推理能力?

如何通过强化学习&#xff08;RL&#xff09;有效提升大型语言模型&#xff08;LLM&#xff09;的推理能力&#xff1f; 《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》由DeepSeek-AI团队撰写&#xff0c;主要介绍了他们开发的第一代…...

主表增一个子表批量新增

1、在新增接口里&#xff0c;先随机生成编码&#xff0c;生成RedisLock&#xff0c;逻辑校验&#xff0c;Dto转bean&#xff0c;新增主表&#xff0c;获取主表的ID&#xff0c;新增子表&#xff0c;最后释放锁 2、在修改接口里&#xff0c;获取主表ID&#xff0c;先修改主表&am…...

Llama 3.1 本地电脑部署 Linux系统 【轻松简易】

本文分享在自己的本地电脑部署 llama3.1&#xff0c;而且轻松简易&#xff0c;快速上手。 这里借助Ollama工具&#xff0c;在Linux系统中进行大模型部署~ Llama3.1&#xff0c;有三个版本&#xff1a;8B、70B、405B Llama 3.1 405B 是第一个公开可用的模型&#xff0c;在常识…...

langchain系列 - FewShotPromptTemplate 少量示例

导读 环境&#xff1a;OpenEuler、Windows 11、WSL 2、Python 3.12.3 langchain 0.3 背景&#xff1a;前期忙碌的开发阶段结束&#xff0c;需要沉淀自己的应用知识&#xff0c;过一遍LangChain 时间&#xff1a;20250220 说明&#xff1a;技术梳理&#xff0c;针对FewShotP…...

详细介绍下软件生命周期的各个阶段以及常见的软件生命周期模型

软件生命周期&#xff08;Software Life Cycle&#xff09;是指软件从需求分析到最终退役的整个过程。通常&#xff0c;软件生命周期可以划分为以下几个主要阶段&#xff1a; 一、软件生命周期的主要阶段 需求分析&#xff08;Requirements Analysis&#xff09; 与客户沟通&am…...

重构谷粒商城07:Git一小时快速起飞指南

重构谷粒商城07&#xff1a;Git一小时快速起飞指南 前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff…...

设计模式教程:命令模式(Command Pattern)

1. 什么是命令模式&#xff1f; 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式。它将请求封装成一个对象&#xff0c;从而使你能够用不同的请求、队列和日志请求以及支持可撤销操作。 简单来说&#xff0c;命令模式通过把请求封装成对象的方式解耦了…...

数论:从提高组到提高组

这&#xff0c;是一个采用C精灵库编写的程序&#xff0c;它画了一幅漂亮的图形&#xff1a; 复制代码 #include "sprites.h" //包含C精灵库 Sprite turtle; //建立角色叫turtle void draw(int d){for(int i0;i<5;i)turtle.fd(d).left(72); } int main(){ …...

PyAEDT终极指南:如何用Python自动化你的Ansys电磁仿真工作流?

PyAEDT终极指南&#xff1a;如何用Python自动化你的Ansys电磁仿真工作流&#xff1f; 【免费下载链接】pyaedt AEDT Python Client Package 项目地址: https://gitcode.com/gh_mirrors/py/pyaedt 你是否厌倦了在Ansys Electronics Desktop中重复点击鼠标、手动设置参数、…...

为什么你的MCP 2026边缘服务始终达不到SLA 99.99%?——基于17个真实客户集群的优化归因分析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026边缘服务SLA达标性诊断框架 MCP 2026边缘服务SLA达标性诊断框架是一套面向低时延、高可用边缘计算场景的轻量化可观测性验证体系&#xff0c;聚焦于响应延迟、服务连续性与资源隔离三类核心SLA…...

如何高效使用LibreCAD:专业开源2D CAD软件的完整实践指南

如何高效使用LibreCAD&#xff1a;专业开源2D CAD软件的完整实践指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/parabola/…...

别再为CORDIC Translate的输入范围头疼了!手把手教你搞定FPGA复数转极坐标的归一化(附Xilinx IP核配置)

突破CORDIC Translate输入限制&#xff1a;FPGA复数转极坐标的归一化实战指南 在FPGA信号处理系统中&#xff0c;复数转极坐标运算是雷达、通信和图像处理等领域的核心操作。Xilinx提供的CORDIC Translate IP核虽然高效&#xff0c;但其严格的输入范围限制&#xff08;[-1,1]&a…...

机器学习入门:无需编程也能掌握的实战技巧

1. 机器学习入门&#xff1a;编程能力不是门槛很多人误以为机器学习必须从精通编程开始&#xff0c;这其实是个巨大的认知误区。我见过太多优秀的机器学习从业者&#xff0c;他们最初连for循环都写不利索&#xff0c;但这并不妨碍他们构建出精准的预测模型。机器学习本质上是一…...

AI智能体DeepResearchAgent:自动化深度研究助手部署与实战指南

1. 项目概述&#xff1a;一个能帮你“深度思考”的AI研究助手最近在折腾AI应用落地的朋友&#xff0c;估计都听过一个词叫“智能体”&#xff08;Agent&#xff09;。这玩意儿说白了&#xff0c;就是让AI不仅能回答问题&#xff0c;还能像人一样&#xff0c;为了完成一个复杂目…...

Transformers.js:在浏览器中运行200+AI模型的革命性突破

Transformers.js&#xff1a;在浏览器中运行200AI模型的革命性突破 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: https://gitcode.co…...

Unity导航系统进阶:用OffMeshLink组件实现AI跳崖、钻洞与传送门(2019.4.10f1实测)

Unity导航系统高阶技巧&#xff1a;OffMeshLink实现AI非标准路径设计实战 在《塞尔达传说&#xff1a;旷野之息》中&#xff0c;玩家经常能看到敌人从悬崖跃下追击林克&#xff0c;或是通过矮洞穿梭于不同区域。这种非标准路径移动不仅提升了游戏的真实感&#xff0c;更丰富了关…...

【独家首发】MCP 2026适配倒计时:仅剩117天!金融/制药/材料三大头部客户紧急切换实录

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026量子计算适配全景图 MCP 2026&#xff08;Multi-Controller Protocol 2026&#xff09;是新一代面向容错量子计算系统的控制协议标准&#xff0c;专为超导量子处理器与光子量子芯片的混合异构架…...