RadASM环境,win32汇编入门教程之九

;运行效果

;RadASM环境,win32汇编入门教程之九
;在这一教程里,我们来学习一下如何在资源文件里创建对话框
;对话框也是资源的一种,也是一种预定义好的窗口,我们写软件一般用对话框,自已创建窗口代码又长,功能差不多,累人。
;RadASM里有一种文件叫资源文件,其扩展名是Rc。
;我们打开RadASM后,在右侧找到后缀是Rc的文件,双击打开它。
;然后把下面的句子复制进去
;#define WS_SYSMENU    524288 
;MyDialog DIALOG 10, 10, 110, 200 
;STYLE  WS_SYSMENU 
;CAPTION "我是对话框程序" 
;BEGIN 

;END 

;记得把前面的分号去除掉。

;然后,把下面的句子复制进Asm文件里面

.386 
.model flat,stdcall 
option casemap:none 

include    windows.inc 
include    user32.inc 
include    kernel32.inc
 
includelib user32.lib 
includelib kernel32.lib 

DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD   ;对话框窗口函数

.data 
DlgName    db "MyDialog",0

.data? 
hInstance HINSTANCE             ? 

.const 

.code 
start: 
         invoke GetModuleHandle, NULL 
         mov    hInstance,eax 
         invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL 
         invoke ExitProcess,eax 

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 

        
        .if     uMsg == WM_INITDIALOG 

        .elseif uMsg == WM_CLOSE 
                invoke EndDialog, hWnd,NULL 
        .else 
                mov eax,FALSE 
                ret 
        .endif 
                mov eax,TRUE 
        ret 
DlgProc endp 

end start 

;把这两个内容复制进了Rc文件和Asm文件后,尝试编译一下,看看能不能运行。如果不能编译,那就是有些句子多余的。可以看看RadASM最下面方框里的提示
;看看哪里出错了。再改正一下。

;我们来分析一下下面这段话的意思,学会创建对话框
;#define WS_SYSMENU    524288 
;MyDialog DIALOG 10, 10, 110, 200 
;STYLE  WS_SYSMENU 
;CAPTION "我是对话框程序" 
;BEGIN 
;END 

;#define WS_SYSMENU    524288  ,这句话的意思是定义一个值为524288,名为WS_SYSMENU的符号。后面要使用它。
;为什么是524288这个值,这个值是窗口风格之一。它带一个左上角的图标,中间的名称,和右上角一个关闭按钮。
;本来有一个预定义的头文件resource.h,如果有这个文件,再把它包含,即include进来,就不用这样定义了。
;resource文件里包含在大量的预定义值,基本常用的都在里面,直接引用就可以,就不用这样去找到它的值,再自已定义了。
;我们这里没有,只能用这种笨办法来定义。
;MyDialog DIALOG 10, 10, 110, 200 ,这句话你应该看的懂的,MyDialog是对话框的类名,也就是名字。
;DIALOG是关键字,就是说明定义的了一个对话框。
;后面的数字,是起始坐标,长度,宽度
;STYLE  WS_SYSMENU 这句的意思是,定义对话框的风格是WS_SYSMENU,就是前面的524288值,你把WS_SYSMENU换成524288,效果是一样的
;当然,要先使用DIALOG定义对话框,再定义它的风格,顺序要对
;CAPTION "我是对话框程序" 这句话的意思是,对话框的标题是"我是对话框程序"
;BEGIN和END是成对出现在,里面定义对话框内的控件用。这里还没有添加控件,所以里面没写什么。

;分析完了Rc文件,现在回过头来看看Asm文件
;看完一下,你会发现,它与原来创建的窗口文件的内容很像,但是少了很多内容。
;主要少的是创建窗口的过程,对话框也是窗口。这就是它的好处,已经经过预定义了。把这个具体创建对话框的过程封装了,我们直接使用就可以了。
;这里在程序开始的时候,使用函数DialogBoxParam,直接引用资源里面定义的对话框。
;DlgName就是资源文件里定义的名字,我们在Asm文件里也定义了一样的,就是前面的DlgName    db "MyDialog",0,两者都是MyDialog
;addr DlgProc指窗口函数名叫DlgProc,就是在后面的DlgProc,我们主要是研究在里面添加东西

;这里有一个WM_INITDIALOG,它是初始化对话框的消息。与以前教程学的窗口函数的消息WM_CREATE 功能一样,都是初始化,但是名称不同
;这样做的原因主要是为了区分开来。一种是窗口,一种是对话框。

;那么,在这儿,我们就学会了在资源文件里定义对话框,后面再慢慢的学一下,怎么在里面添加控件。

程序名称:RadASM 版 本:2.2.1.9 汉 化 人:cao_cong 联系方式:cao_cong_hx@yahoo.com.cn 使用说明: 此汉化增强版根据RadASM作者网站正式发布的 2.2.1.9 版汉化,可对中文完美支持,可编译DOS下的程序并可看到运行结果。这个版本增强了对 C 编译器的支持,增加了从已有具体的更新内容请大家参考安装目录下的 WhatsNew.txt。增强版中附带的 MASM32 更新为 10.0,我在其中放了开发驱动的相关文件,安装后即可使用,可以直接开发驱动程序。我还写了一篇《如何配置RasASM来支持你的编译器》的文章放在安装包中,希望能给大家在为 RadASM 配置新的编译器时提供一点参考。汉化增强版适合于未安装Masm32及Viusual C++的用户,添加了RadASM的帮助文件及Win32 Api等帮助文件。RadASM可通过添加ini文件来支持别的语言,可以自己配置ini文件来支持你所使用的编程语言。此汉化增强版根据网友aboil的建议,添加了我最新修正的 OllyDBG 汉化第二版,选择安装后路径会自动设置好,直接可在RadASM中调试你编译后的程序。 注意: 1、如果你曾安装了以前版本的RadASM汉化增强版,请不要卸载,只需覆盖安装即可。安装版本除了你选择了注册文件类型会在你的注册表中添加数据(可到ICON目录下查看具体添加内容,如果选择卸载同样会删除这些数据)外,不会产生别的垃圾文件,所以没必要卸载。因为卸载时可能把你安装后新建的一些工程一并删除,请谨慎使用卸载(默认在Masm和Cpp中新添加的工程不会被删除,但还是小心一点比较好)。若必须要卸载的话,请把你安装后新建的工程及配置文件备份到其它目录,再执行卸载! 2、这个版本我去掉了 TASM 5.0 的安装文件(主要为减小安装包体积),若要编译Tasm的程序的话请大家自己去下载TASM。 3、考虑到在有的未装VC的机器上测试时,编译时会提示找不到MSPDB60.DLL的错误,我在这个安装版本中复制了一个VC的MSPDB60.DLL到你的系统目录,因为有些程序可能会用到它,所以在卸载时未作处理。你要是不需要的话,可到你的系统目录手工删除(建议保留这个文件)。 4、如果你第一次编译 MASM 的 Dos App,可能会在构建的时候提示找不到 *.obj 文件,其实这时 *.obj 文件已经生成了。简单的方法就是重新启动一下 RadASM,再编译、构建时就正常了。 增强版主要更新: 1、包含了编译 Win32 Asm 、C++ 的必须文件及我汉化的 OllyDBG(安装时需选择OllyDBG、Masm32及VC6.0这几个组件)。 2、添加了用于RadASM关联汇编文件的图标(安装时需选择文件关联组件),安装后你可在安装目录下的Icon目录内使用你喜欢的图标来定制关联文件的显示图标(替换图标时请把你需要替换的图标更名为原目录下的对应图标名称)。 3、添加了由怜香整理的8086汇编教程、Venjiang整理的 Win32 汇编教程、陈国强整理的Win32 API参考(VB描述)、www.vcok.com整理的C语言教程及经典的 Windows 程序设计电子书。 4、添加了一个Cpp的对话框程序模板文件。 5、添加了一个Masm的注册机程序示例,位于Masm的工程目录下的ASMkeyg文件夹内,推荐大家看一下。 060621新增: 1、把RadASM作者另一个资源编辑工具ResEd的汉化版也打包放在安装目录下,虽然RadASM自带有可视化的资源编辑器,但这个ResEd工具有些时候还是很有用的,你可以可视化的编辑其他的资源脚本,很方便。这个工具我以RadASM网站上的最新版本为基础汉化的。 2、从WinASM中提取了两个模板(MDI和SDI模板),放了一个简单的注册机模板。 3、放了一个可以在对话框程序中添加调整对话框控件大小代码的插件 KSresizer,已汉化并配置好了。把作者提供的例子程序也放在了MASM的工程目录下,有兴趣的可以看看。 4、把帮助文件更新为 RadASM 官方主页上的最新版本。 061207新增: 1、添加由 drizz 写的两个库文件: (1)、Stdlib.lib:包含一些对文件、注册表、INI文件、字串等一些常用的操作函数,可以直接调用,以减少编程工作量。 (2)、cryptohash.lib:密码学算法库,包含大部分常用密码学算法。 这两个库我都在RadASM中添加了相应的API文件,方便写代码时自动列出函数。 081218: ResEd 更新为 2.2.0.0d 汉化版,支持把 .rc 文件中的对话框部分导出为 RadASM 的 dlg 格式文件及添加 XP 界面等。 Language目录下的RadCHS.lng和RadENG.lng分别是简体中文和英文语言文件,可在RadASM的选项->语言菜单中选择。RadLNG.exe是用来查看语言文件的工具。 091209: 1、主程序汉化版本更新为 2.2.1.8f,同时更新语言文件。 2、ResEd 汉化版本更新为 2.2.0.5b。 3、除汉化了更新的插件外,重新汉化了 AdvEdit.dll(高级编辑) 插件。 091228: 1、主程序汉化版本更新为 2.2.1.9。 2、RadASM.ini 中的 [Accept] 段下添加了 DontAsk=1,这样执行编译好的程序时不会再有提示(类似与 2.2.1.5 及以前版本)。如仍需要执行程序时提示的话,请把添加的 DontAsk=1 这一行删除。 一点建议: 1、建议把RadASM安装在根目录下,如 D:\RadASM。 2、如果在编译 Win32 Asm 程序时有问题,一个简单的方法就是把 RadASM 目录下的 Masm32 剪切到 RadASM 安装的根目录,如 D:\Masm32,再在 RadASM 中重新设置路径。 3、RadASM 中添加的插件 CodeTemplates.dll 是用于在编辑代码时输入定义好的代码模板的,默认调出方式是Ctrl+J,可根据Addins\Help目录下的帮助文件CodeTemplates.Txt(我已翻译过)来自己配置需要的模板。 4、格式化代码的插件(TabAddin.dll)我根据其帮助文档和自己的测试结果进行了汉化。本来想把这个插件的帮助文档一起汉化的,可实在没太多时间,只能让大家根据汉化插件的界面来对照英文的帮助文档来理解此插件的功能,造成不便的地方还望大家原谅!简单说一下此插件汉化后菜单上各个按钮的功能:“左移”:把选中的代码左移一个制表符;“右移”:选中代码右移一个制表符;“规范化”:把选中的排列不整齐的代码按照选项中的设置进行排列;“标准化”:把你选中的代码按选项中的设置进行整理,使代码具有更好的可读性;“显示选项”:显示设置选项。 声明: 1、此汉化软件是免费软件,请在转载时保留其内容的完整性! 2、此软件仅用于个人学习使用,禁止用于商业用途,否则后果自负! HA.RadASM.v2.2.1.9.cao_cong.exe 的 MD5 值: 7BE397D8B107D68286EA07964DEF8A61
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一品人家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值