资源可以用VC之类的生成,然后拷贝出来。

例如:每一个MFC工程都有一个resource.h,没有做任何修改时,这个resource.h文件是原来自带的。当对资源进行过修改添加之类的时,新添加的资源的ID都会被加入的这个工程的resource.h中。在Win32汇编的RC文件中,开头包含的那个resource.h没有做过任何修改,所以要把新添加的资源的ID用#define宏添加进来。

#include <resource.h>

#define IDD_DLG 130
#define IDC_BTN_TEST 1001
#define IDI_ICO_HEHE 1002 IDI_ICO_HEHE ICON "hehe.ico" IDD_DLG DIALOGEX 0, 0, 316, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "尝试对话框"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "确定",IDOK,205,69,50,14
PUSHBUTTON "取消",IDCANCEL,259,69,50,14
PUSHBUTTON "测试",IDC_BTN_TEST,113,18,50,14
END

对于ASM文件,这个自然是要动动手写了。

对于DialogBoxParam的回调函数,一定要写好判断逻辑。这个不比VC里好调试。

另外应用程序实例用的是dd,不过还好写错了编译会有提示。

不要忘了定义一下在RC文件里的控件ID,不过还好没写编译时也会有提示。

.386
.model flat,stdcall
option casemap:none include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib IDD_DLG equ 130
IDC_BTN_TEST equ 1001
IDI_ICO_HEHE equ 1002 .data
gszCaption db 'Caption',0
gszText db 'Text',0
.data?
ghInstance dd ? .code
DlgFunc proc uses ebx edi esi hWnd,wMsg,wParam,lParam mov eax,wMsg
.if eax==WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax==WM_INITDIALOG
invoke LoadIcon,ghInstance,IDI_ICO_HEHE
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
.elseif eax==WM_COMMAND
mov eax,wParam
.if ax==IDOK
invoke EndDialog,hWnd,NULL
.elseif ax==IDC_BTN_TEST
invoke MessageBox,hWnd,addr gszText,addr gszCaption,MB_OK
.endif
.else
mov eax,FALSE
ret
.endif mov eax,TRUE
ret
DlgFunc endp start:
invoke GetModuleHandle,NULL
mov ghInstance,eax
invoke DialogBoxParam,ghInstance,IDD_DLG,NULL,addr DlgFunc,NULL
invoke ExitProcess,NULL
end start

读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框的更多相关文章

  1. 读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写

    在罗云彬的<Windows环境下32位汇编语言程序设计>中第321页 ... .const szAllowedChar db '0123456789ABCDEFabcdef',08h .. ...

  2. 读书笔记——Windows环境下32位汇编语言程序设计(2)配置环境

    一直想买本罗云彬的Win32汇编书,现在终于出典藏版了,就买了本,读一读,涨涨姿势. 我把笔记本光驱拆下来添加了个硬盘,现在想装回去发现坏了,所以守着CD盘,代码却用的是第三版的,这真是个悲剧啊. - ...

  3. 读书笔记——Windows环境下32位汇编语言程序设计(13)关于EXCEPTION_DEBUG_INFO结构体

    在动手自己尝试编写书上第13章的例子Patch3时,遇到了一个结构体EXCEPTION_DEBUG_INFO. 这个结构体在MASM的windows.inc中的定义和MSDN中的定义不一样. (我使用 ...

  4. 读书笔记——Windows环境下32位汇编语言程序设计(6)使用浮点指令进行64位除法

    罗云彬 典藏版Page192,mark下. 这段代码看不懂,手册上根本没有fdivr不带操作数的指令. .data dqTickCounter1 dq ? dqTickCounter2 dq ? dq ...

  5. 读书笔记——Windows环境下32位汇编语言程序设计(3)一些基础知识

    声明函数用proto 定义函数用proc 局部变量只能定义,不能赋初值,类型不能用缩写. 全局变量可以定义的时候赋初值,默认值为0. 在invoke中,参数可以使用addr取址. sizeof 字节长 ...

  6. 读书笔记——Windows环境下32位汇编语言程序设计(3)求复数模的子程序

    3.6.1.1中的例子 _Calc proc _dwX,_dwY local @dwResult finit fild _dwX fld st(0) fmul ;i*i fild _dwY fld s ...

  7. Windows环境下32位汇编语言程序设计(典藏版)

    Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...

  8. Windows环境下32位汇编语言程序设计(典藏版)

    <Windows环境下32位汇编语言程序设计(典藏版) > 基本信息 作者: 罗云彬 出版社:电子工业出版社 ISBN:9787121207594 上架时间:2013-7-8 出版日期:2 ...

  9. Windows环境下32位汇编语言程序设计笔记-基础篇

    内存模式 .386 .model flat,stdcall ;子程序调用模式,win32中只能用stdcall,因为win32api调用使用的这个 option casemap:none ;定义了程序 ...

随机推荐

  1. Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)

    我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: import xlsxwriter import datetime class write_excel(): def __i ...

  2. 浏览器对象模型(BOM,Browser Object Model)

    本文内容     1.概述     2.windows与document     3.对话框     4.定时调用     5.URL解析与访问历史     6.浏览器和屏幕信息 ★概述     &q ...

  3. Asp.net 字符(二)

    using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...

  4. html 隐藏滚动条

    1. html 标签加属性 <html lang="en" class="no-ie" style="overflow:hidden;" ...

  5. 基于 ANSIBLE 自动化运维实践

    摘要:运维这个话题很痛苦,你做任何的产品都离不开运维.不管你用什么语言.什么平台.什么技术,真正能够决定你产品成熟度的很有可能就是你运维的能力.取自 云巴 CEO 张虎在 ECUG 大会上的分享. 云 ...

  6. java LinkedBlockingQueue和ConcurrentLinkedQueue的区别

    实现上看,两者都继承于AbstractQueue,但是ConcurrentLinkedQueue实现了Queue,而LinkedBlockingQueue实现了BlockingQueue,Blocki ...

  7. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  8. ADO.NET 完整的修改和删除

    namespace 完整修改{ class Program { static void Main(string[] args) { bool has = false; Console.Write(&q ...

  9. art-template引擎模板

    art-template简介 artTemplate(后文简称aT)才是模板引擎,而TmodJS(后文简称TJ,曾用名atc)则是依赖于前者的一款模板预编译器.两者都是由腾讯开发.其实aT完全可以独立 ...

  10. Asp.net mvc项目架构分享系列之架构概览

    Asp.net mvc项目架构分享系列之架构概览 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构 ...