一.  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相关推荐

  1. Win32 ASM 菜单编程Demo以及Win32 ASM 为什么需要等值定义

    使用Win32 ASM制作一个窗口菜单: 资源文件: #define ICO_MAIN 0x1000 //图标 #define IDM_MAIN 0x2000 //菜单#define IDM_HELP ...

  2. c c 语言编程项目实例,实例分享cmake编译一个简单c++项目(demo)

    实例分享cmake编译一个简单c++项目(demo) 发布时间:2020-09-19 21:08:04 来源:脚本之家 阅读:63 作者:mdxy-dxy 下面通过一个小例子来说明cmake编译一个c ...

  3. js初步简单的编程代码

    简单图片切换编码demo图片地址自行替换 简单图片切换编码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  4. Win32 OpenGL 编程(1)Win32下的OpenGL编程必须步骤

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Win3 ...

  5. ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称以及入参和出参结果并记录方法耗时

    作者:小傅哥 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了多少代码 ...

  6. ASM字节码编程 | 用字节码增强技术给所有方法加上TryCatch捕获异常并输出

    作者:小傅哥 博客:https://bugstack.cn Wiki:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有所收 ...

  7. 海龟编辑器怎么运行html,使用海龟编辑器编写一个GUI简单对话框

    海龟编辑器是一款专为青少年提供的编程学习软件,海龟编辑器可以帮助青少年快速的理解和记忆PAthon这门语言,了解GUI的世界,该软件集合了多项库功能,第一类,识别功能,该功能可以识别图像.人脸.声音等 ...

  8. vue配置文件读取_Vue+Spring Boot简单用户登录Demo实现

    ❝ 「如果觉得文章好看,欢迎点赞.」「同时欢迎关注微信公众号:氷泠之路.」 ❞ 这是一个前后端分离的简单用户登录Demo. 技术栈 Vue BootstrapVue Kotlin Spring Boo ...

  9. flask简单的登录demo

    flask框架(二):简单的登录demo 一:main.py # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/3 22: ...

最新文章

  1. pip安装拓展包--网络超时/Read timed out问题
  2. react native 常用学习或查资料网址
  3. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)
  4. ICCV 2017 《Illuminating Pedestriant via Simultaneous Detection Segmentation》论文笔记
  5. 模板:多项式乘法(FFTNTT)
  6. Sharepoint2007个人网站不能同步域信息的处理方法
  7. jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)
  8. (转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?
  9. Java 数组的拷贝(复制一个相同数组)
  10. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
  11. 程序员最想要十八般武艺俱全的“保姆型”项目经理!
  12. .NET 6 Preview 5
  13. 批处理获取网卡名称(附修改IP、网关、DNS脚本)
  14. FME 应用cad处理
  15. 米家的扫地机器人是灰色_重新定义扫地机器人概念——米家扫地机器人 - IT168试客...
  16. php用do while实现斐波那契数列,php实现斐波那契数列
  17. xpath prase string
  18. 基于词表和N-gram算法的新词识别实验
  19. 组织项目管理(PMP知识整理)
  20. js 判断变量是否为空

热门文章

  1. 存储过程和函数——概述||创建存储过程||调用存储过程||查看存储过程||删除存储过程
  2. 关于HTML下overflow-y:auto无效、清除HTML默认边距、解决去除手机访问网页时的左右多余空白的三个方法汇总
  3. javascript 鼠标事件总结
  4. C#-通过OpcUA监控设备
  5. Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程
  6. 实战篇 | 基于freeRTOS的多任务事件传输demo(附代码)
  7. [YTU]_2441( C++习题 复数类--重载运算符2+)
  8. Java URL处理
  9. 二叉树的递归和非递归遍历
  10. 字典占内存大吗_微博热搜稳占第一!「美团大数据杀熟」是真的吗?