资源可以用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. 通过刷bios的方式在win8.1平板上启动windows phone模拟器

    最近买了个Windows8.1平板电脑,不是Surface Pro,太贵,而是国产的乐凡F2(64G.4G内存),CPU是赛扬U1037.最开始安装Visual Studio2013以及其他开发工具都 ...

  2. mysql主从复制replication的一些相关命令

    主服务器上的相关命令:show master status; mysql> show master status\G . row *************************** Posi ...

  3. springMVC注解@initbinder日期类型的属性自动转换

    在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 一 ...

  4. JS 生成26个大小写字母

    主要用到 str.charCodeAt()和 String.fromCharCode()方法 -->使用 charCodeAt() 来获得字符串中某个具体字符的 Unicode 编码. --&g ...

  5. C#函数、参数数组(例子)★

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. fibonacci高精度加法

    A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first t ...

  7. Laravel Predis Error while reading line from the server.

    问题 Laravel说明文档中的 Redis 发布与订阅案例,命令行运行php artisan redis:subscribe 到60s自动断开并报错 [Predis\Connection\Conne ...

  8. 面向企业客户的制造业CRM系统的不成熟思考

    CRM就是客户关系管理(Customer Relationship Management),一直一知半解,最近有涉及这方面的需求,所以稍作研究,并思考一些相关问题. CRM是什么? CRM具体如何定义 ...

  9. rabbitmq+ keepalived+haproxy高可用集群详细命令

    公司要用rabbitmq研究了两周,特把 rabbitmq 高可用的研究成果备下 后续会更新封装的类库 安装erlang wget http://www.gelou.me/yum/erlang-18. ...

  10. SharePoint 2013 Workflow 分布式配置问题记录

    SharePoint 2013 发布已经有一段时间,前段事件主要是做财务项目,用到Oracle和HFM,由于从来没了解过这两个软件,把大部分时间用在了学习Oracle和HFM的API,目前对HFM的A ...