读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框
资源可以用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)模态对话框的更多相关文章
- 读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写
在罗云彬的<Windows环境下32位汇编语言程序设计>中第321页 ... .const szAllowedChar db '0123456789ABCDEFabcdef',08h .. ...
- 读书笔记——Windows环境下32位汇编语言程序设计(2)配置环境
一直想买本罗云彬的Win32汇编书,现在终于出典藏版了,就买了本,读一读,涨涨姿势. 我把笔记本光驱拆下来添加了个硬盘,现在想装回去发现坏了,所以守着CD盘,代码却用的是第三版的,这真是个悲剧啊. - ...
- 读书笔记——Windows环境下32位汇编语言程序设计(13)关于EXCEPTION_DEBUG_INFO结构体
在动手自己尝试编写书上第13章的例子Patch3时,遇到了一个结构体EXCEPTION_DEBUG_INFO. 这个结构体在MASM的windows.inc中的定义和MSDN中的定义不一样. (我使用 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(6)使用浮点指令进行64位除法
罗云彬 典藏版Page192,mark下. 这段代码看不懂,手册上根本没有fdivr不带操作数的指令. .data dqTickCounter1 dq ? dqTickCounter2 dq ? dq ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)一些基础知识
声明函数用proto 定义函数用proc 局部变量只能定义,不能赋初值,类型不能用缩写. 全局变量可以定义的时候赋初值,默认值为0. 在invoke中,参数可以使用addr取址. sizeof 字节长 ...
- 读书笔记——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 ...
- Windows环境下32位汇编语言程序设计(典藏版)
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...
- Windows环境下32位汇编语言程序设计(典藏版)
<Windows环境下32位汇编语言程序设计(典藏版) > 基本信息 作者: 罗云彬 出版社:电子工业出版社 ISBN:9787121207594 上架时间:2013-7-8 出版日期:2 ...
- Windows环境下32位汇编语言程序设计笔记-基础篇
内存模式 .386 .model flat,stdcall ;子程序调用模式,win32中只能用stdcall,因为win32api调用使用的这个 option casemap:none ;定义了程序 ...
随机推荐
- 点餐APP 冲刺三总结
一转眼所有的冲刺都完成了,而今次的冲刺主要是完善数据库,而我们 也成功地实现了,虽然过程很艰辛,但是我们每一个人都学习到了很多新 知识,这是最好的收获.因为今学期没有软件工程的课程,所以大家都是 利用 ...
- LNK1179 无效或损坏的文件: 重复的 COMDAT“_IID_IDispatchEx”
fatal error LNK1179: invalid or corrupt file: duplicate comdat "XXX" LNK1179 无效或损坏的文件: 重复 ...
- linq之let子句
在Linq查询中Let子句可以创建一个新的范围变量,并使用该变量保存表达式的结果. 看下面的例子: private void LetQuery() { List<UserBaseInfo> ...
- Linq专题之匿名对象
匿名对象是c#3.0的一个新的机制,使用new关键字和一个对象的初始化器,就能创建一个匿名对象.顾名思义,创建的时候这个对象是一个匿名类型的对象,没有具体的类型.说到匿名对象,那么我们前面讲过的var ...
- Azure开发者任务之七:在Azure托管服务中托管WCF服务角色
在一个托管服务中托管一个WCF服务角色和托管一个ASP.Net Web Role基本类似. 在上一篇文章中,我们学习了如何使用WCF Service Web Role. 在本文中,我会对上一篇文章进行 ...
- 与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令
[源码下载] 与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令 作者:webabcd 介绍与众不同 windows phone 8.0 之 语音 TT ...
- sql 两列相加存到另一列
假设表table1有a.b两个列,想生成另一个列为a列值+b列值计算列添加语句如下ALTER TABLE table1ADD c AS a+b
- javascript url几种编码方式
1.escape() 不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值.比如“春节”的返回结果是%u6625%u8282,escape()不对"+"编码主要 ...
- Spring核心概念之AOP
一.AOP 的概念 AOP(Aspect Oriented Programming)的缩写,面向切面编程,主要作用就是对代码进行增强处理. 理解面向切面编程的含义:就是在不改变原有程序的基础上为代码增 ...
- Servlet3.0 Test
1. Servlet3.0 Test and Annotation used 你可以从tomcat7中lib文件夹中找到servlet-api.jar package com.goodfan.serv ...