Win32 ASM 简单对话框编程Demo
一. ASM基本对话框
asm文件;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; by bobo
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.386.model flat, stdcalloption casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ 1000h ;图标
DLG_MAIN equ 1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.data?
hInstance dd ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParammov eax,wMsg.if eax == WM_CLOSEinvoke EndDialog,hWnd,NULL.elseif eax == WM_INITDIALOGinvoke LoadIcon,hInstance,ICO_MAINinvoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax.elseif eax == WM_COMMANDmov eax,wParam.if ax == IDOKinvoke EndDialog,hWnd,NULL.endif.elsemov eax,FALSEret.endifmov eax,TRUEret_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:invoke GetModuleHandle,NULLmov hInstance,eaxinvoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULLinvoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end start
资源文件;
#include <resource.h>#define ICO_MAIN 0x1000 //图标
#define DLG_MAIN 1ICO_MAIN ICON "Main.ico"DLG_MAIN DIALOG 350, 250, 120, 64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框demo模板"
FONT 9, "宋体"
{ICON ICO_MAIN, -1, 10, 11, 18, 21CTEXT "简单的对话框例子\n by bobo", -1, 36, 14, 70, 19DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1
}
资源文件里,
#include <resource.h>
一句,不能删除;否则将出现RC2014错误;
此处resource.h是Masm32的系统文件;位于:
控制台构建的文本如下;
Microsoft Windows [版本 10.0.17763.557]
(c) 2018 Microsoft Corporation。保留所有权利。
G:\win32ASM\小例子\Dialog1>set include=g:\masm32\include
G:\win32ASM\小例子\Dialog1>set lib=g:\masm32\lib
G:\win32ASM\小例子\Dialog1>set path=g:\masm32\bin;%path%
G:\win32ASM\小例子\Dialog1>ml /c /coff Dialog.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
Assembling: Dialog.asm
***********
ASCII build
***********
G:\win32ASM\小例子\Dialog1>rc Dialog.rc
Dialog.rc (7): error RC2104 : undefined keyword or key name: DS_MODALFRAME
G:\win32ASM\小例子\Dialog1>rc Dialog.rc
G:\win32ASM\小例子\Dialog1>Link /subsystem:windows Dialog.obj Dialog.RES
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
G:\win32ASM\小例子\Dialog1>
先调用Windows API的GetModuleHandle获取程序实例句柄;调用结果在eax;然后mov到hInstance里面;
调用DialogBoxParam创建对话框;
在对话框窗口过程处理三个消息;WM_CLOSE,WM_INITDIALOG,WM_COMMAND;
在WM_INITDIALOG消息设置图标;
点击对话框关闭按钮或者IDOK按钮,调用EndDialog关闭对话框;
二. 增加效果
下面来增加效果;载入一小排精英士兵图标;构建之前文件如下;
此操作不须改动asm文件;改变rc文件,重新执行rc,重新链接,即可;如果obj已删除,则要重新ml;
如果rc出现下图错误;
使用IconWorkshop打开图标;一个图标ico文件是可以包含多种格式的;删除所有格式,只留下32*32-RGB/A即可;
资源文件如下;
#include <resource.h>#define ICO_MAIN 0x1000 //图标
#define ICO_shibing1 0x8001
#define ICO_shibing2 0x8002
#define ICO_shibing3 0x8003
#define ICO_shibing4 0x8004
#define DLG_MAIN 1ICO_MAIN ICON "Main.ico"
ICO_shibing1 ICON "shibing1.ico"
ICO_shibing2 ICON "shibing2.ico"
ICO_shibing3 ICON "shibing3.ico"
ICO_shibing4 ICON "shibing4.ico"DLG_MAIN DIALOG 350, 250, 250, 64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框demo模板"
FONT 9, "宋体"
{ICON ICO_MAIN, -1, 10, 11, 20, 21ICON ICO_shibing1, -1,32, 11, 20, 21ICON ICO_shibing2, -1,54, 11, 20, 21ICON ICO_shibing3, -1,76, 11, 20, 21ICON ICO_shibing4, -1,98, 11, 20, 21DEFPUSHBUTTON "退出", IDOK, 58, 46, 50, 14CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1
}
如果资源文件有写错;例如 ,
ICON ICO_shibing1, -1,32, 11, 20, 21
一句;前面少写ICON,RC会报错 invalid control type;
构建完成文件如下;运行效果如下;
Win32 ASM 简单对话框编程Demo相关推荐
- Win32 ASM 菜单编程Demo以及Win32 ASM 为什么需要等值定义
使用Win32 ASM制作一个窗口菜单: 资源文件: #define ICO_MAIN 0x1000 //图标 #define IDM_MAIN 0x2000 //菜单#define IDM_HELP ...
- c c 语言编程项目实例,实例分享cmake编译一个简单c++项目(demo)
实例分享cmake编译一个简单c++项目(demo) 发布时间:2020-09-19 21:08:04 来源:脚本之家 阅读:63 作者:mdxy-dxy 下面通过一个小例子来说明cmake编译一个c ...
- js初步简单的编程代码
简单图片切换编码demo图片地址自行替换 简单图片切换编码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- Win32 OpenGL 编程(1)Win32下的OpenGL编程必须步骤
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Win3 ...
- ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称以及入参和出参结果并记录方法耗时
作者:小傅哥 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了多少代码 ...
- ASM字节码编程 | 用字节码增强技术给所有方法加上TryCatch捕获异常并输出
作者:小傅哥 博客:https://bugstack.cn Wiki:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有所收 ...
- 海龟编辑器怎么运行html,使用海龟编辑器编写一个GUI简单对话框
海龟编辑器是一款专为青少年提供的编程学习软件,海龟编辑器可以帮助青少年快速的理解和记忆PAthon这门语言,了解GUI的世界,该软件集合了多项库功能,第一类,识别功能,该功能可以识别图像.人脸.声音等 ...
- vue配置文件读取_Vue+Spring Boot简单用户登录Demo实现
❝ 「如果觉得文章好看,欢迎点赞.」「同时欢迎关注微信公众号:氷泠之路.」 ❞ 这是一个前后端分离的简单用户登录Demo. 技术栈 Vue BootstrapVue Kotlin Spring Boo ...
- flask简单的登录demo
flask框架(二):简单的登录demo 一:main.py # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/3 22: ...
最新文章
- pip安装拓展包--网络超时/Read timed out问题
- react native 常用学习或查资料网址
- linux进程及作业管理实验,Linux 进程及作业管理(示例代码)
- ICCV 2017 《Illuminating Pedestriant via Simultaneous Detection Segmentation》论文笔记
- 模板:多项式乘法(FFTNTT)
- Sharepoint2007个人网站不能同步域信息的处理方法
- jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)
- (转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?
- Java 数组的拷贝(复制一个相同数组)
- 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
- 程序员最想要十八般武艺俱全的“保姆型”项目经理!
- .NET 6 Preview 5
- 批处理获取网卡名称(附修改IP、网关、DNS脚本)
- FME 应用cad处理
- 米家的扫地机器人是灰色_重新定义扫地机器人概念——米家扫地机器人 - IT168试客...
- php用do while实现斐波那契数列,php实现斐波那契数列
- xpath prase string
- 基于词表和N-gram算法的新词识别实验
- 组织项目管理(PMP知识整理)
- js 判断变量是否为空
热门文章
- 存储过程和函数——概述||创建存储过程||调用存储过程||查看存储过程||删除存储过程
- 关于HTML下overflow-y:auto无效、清除HTML默认边距、解决去除手机访问网页时的左右多余空白的三个方法汇总
- javascript 鼠标事件总结
- C#-通过OpcUA监控设备
- Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程
- 实战篇 | 基于freeRTOS的多任务事件传输demo(附代码)
- [YTU]_2441( C++习题 复数类--重载运算符2+)
- Java URL处理
- 二叉树的递归和非递归遍历
- 字典占内存大吗_微博热搜稳占第一!「美团大数据杀熟」是真的吗?