Win32汇编学习(11):对话框(2)】的更多相关文章

我们将进一步学习对话框,探讨如何把对话框当成输入设备.如果您看了前一篇文章,那就会发现这次的例子只有少量的改动,就是把我们的对话框窗口附属到主窗口上.另外,我们还要学习通用对话框的用法. 理论: 把对话框当成一个输入设备来用确实是非常地简单,创建完主窗口后,您只要调用函数 DialogBoxParam或 CreateDialogParam 就可以了,前一个函数只要在对话框的过程处理函数中处理相关的消息就可以,而后者你必须在消息循环段中插入函数 IsDialogMessage 的调用让它来处理键盘…
这次,我们将学习如何在窗口的客户区"绘制"字符串.我们还将学习关于"设备环境"的概念. 理论: "绘制"字符串 Windows 中的文本是一个GUI(图形用户界面)对象.每一个字符实际上是由许多的像素点组成,这些点在有笔画的地方显示出来,这样就会出现字符.这也是为什么我说"绘制"字符,而不是写字符.通常您都是在您应用程序的客户区"绘制"字符串(尽管您也可以在客户区外"绘制").Windo…
这次我们将学习有关文本的诸多属性如字体和颜色等. 理论: Windows 的颜色系统是用RGB值来表示的,R 代表红色,G 代表绿色,B 代表蓝色.如果您想指定一种颜色就必须给该颜色赋相关的 RGB 值,RGB 的取值范围都是从 0 到 255,譬如您想要得到纯红色,就必须对RGB赋值(255,0,0),纯白色是 (255,255,255). 您可以用函数 SetTextColor 和 SetBkColor 来"绘制"字符颜色和背景色,但是必须传递一个"设备环境"的…
背景知识 Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而只是说能够在 4GB 的范围内寻址.操作系统将会在应用程序运行时完成 4GB 的虚拟地址和物理内存地址间的转换.这就要求编写应用程序时必须格守 Windows 的规范,否则极易引起内存的保护模式错误.而过去的 Win16 内存模式下,所有的应用程序都运行于同一个 4GB 地址空间,它们可以彼此"看&…
现在我们开始学习一些有关GUI编程的有趣的部分:以对话框为主要界面的应用程序. 理论: 如果您仔细关注过前一个程序就会发现:您无法按TAB键从一个子窗口控件跳到另一个子窗口控件,要想转移的话只有 用鼠标一下一下地去点击.对用户来说这是不友好的.另一件事是如果您象前一课中那样把主窗口的背景色从白色改成 灰色,为了子窗口控件无缝地作相应地改变,您必须仔细分类所有子窗口. 造成上述诸多不便的原因是子窗口控件本来是为对话框而设计的,像子窗口控件的背景色是灰色的,而对话框的背景色也是 灰色的,这样它们本来…
这次我们将写一个 Windows 程序,它会在桌面显示一个标准的窗口,以此根据代码来学习如何创建一个简单的窗口. 理论: Windows 程序中,在写图形用户界面时需要调用大量的标准 Windows Gui 函数.其实这对用户和程序员来说都有好处,对于用户,面对的是同一套标准的窗口,对这些窗口的操作都是一样的,所以使用不同的应用程序时无须重新学习操作.对程序员来说,这些 Gui 源代码都是经过了微软的严格测试,随时拿来就可以用的.当然至于具体地写程序对于程序员来说还是有难度的.为了创建基于窗口的…
这一次,我们将用汇编语言写一个 Windows 程序,程序运行时将弹出一个消息框并显示"你好,我的第一个Win32汇编程序". 理论知识 Windows 为编写应用程序提供了大量的资源.其中最重要的是Windows API (Application Programming Interface). Windows API是一大组功能强大的函数,它们本身驻扎在 Windows 中供人们随时调用.这些函数的大部分被包含在几个动态链接库(DLL)中,譬如:kernel32.dll. user3…
这次我们将探讨控件,这些控件是我们程序主要的输入输出设备. 理论: WINDOWS 提供了几个预定义的窗口类以方便我们的使用.大多数时间内,我们把它们用在对话框中,所以我们一般就它们叫做子窗口控件.子窗口控件会自己处理消息,并在自己状态发生改变时通知父窗口.这样就大大地减轻了我们的编程工作,所以我们应尽可能地利用它们.本课中我们把这些控件放在窗口中以简化程序,但是大多数时间内子窗口控件都是放在对话框中的.我们示例中演示的子窗口控件包括:按钮.下拉菜单.检查框.单选按钮.编辑框等.使用子窗口控件时…
这次我们将在我们的应用程序中加入一个菜单. 理论: 菜单可以说是WINDOWS最重要的元素之一.有了它,用户可以方便地选择操作命令.用户只要细读一下所有的菜单项就可以明了应用程序所提供的大概功能,而且可以立即操作,无须去阅读手册了.正因为菜单给了用户一种方便的方式,所以您在应用程序中加入菜单时就要遵守一般的标准.譬如:一般头两个菜单项是"File"和"Edit",最后是"Help",您可以在这中间插入您要定义的菜单项.如果所运行的菜单命令会弹出一…
这次我们将学习如何在我们的窗口过程函数中处理鼠标按键消息.例子演示了如何等待鼠标左键按下消息,我们将在按下的位置显示一个字符串. 理论: 和处理键盘输入一样,WINDOWS将捕捉鼠标动作并把它们发送到相关窗口.这些活动包括左.右键按下.移动.双击.滚轮消息WM_WHEEL等.WINDOWS并不像处理键盘输入那样把所有的鼠标消息都导向有输入焦点的窗口,任何鼠标经过的窗口都将接收到鼠标消息,无论有否输入焦点.另外,窗口还会接收到鼠标在非客户区移动的消息(WM_NCMOVE),但大多数的情况下我们都会…
这次,我们将要学习WINDOWS程序是如何处理键盘消息的. 理论: 因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它.WINDOWS 将负责把击键消息送到具有输入焦点的那个应用程序中去.尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点.有输入焦点的那个应用程序的标题条总是高亮度显示的. 实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WINDOWS就会发送一个 WM_KEYDOWN 给…
格式 int指令也是一种内中断指令,int指令的格式为int n,n是中断类型码.也就是说,使用int指令可以调用任意的中断例程,例如我们可以显示的调用0号中断例程,还记得在汇编学习笔记(10)中我们自己定义了除法溢出的例程么,我们在这里直接调用看看 assume cs:codesg codesg segment start: mov ax,0b800h mov es,ax *+*],'h' codesg ends end start 成了,perfect! 既然可以随时随地的调用中断例程,那么…
今天开始学习Win32汇编 因为自己很多都是Windows方面 所以 接触一下Win32汇编 . ;.386指令集 .model flat,stdcall ;工作模式 option casemap:none ;关键字大小写不敏感 include Windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib .data MessageBoxText db Messa…
开始学习[Win32汇编],编译过程较为繁琐,做个记录. 使用 MASM32 提供的 ml.exe 和 link.exe,以及 VS2013 中的 nmake.exe 和资源编辑器. ml.exe: ml  [选项]  文件列表  [/link] link.exe: link  [选项]  文件列表 nmake.exe: nmake  [选项]  [描述文件名]  [宏定义]  [目标文件] /f 描述文件名:指定其他的描述文件名,而不是默认的 makefile 宏定义:指定新的定义,覆盖描述文…
MIPS汇编学习 mips汇编不同于x86汇编,属于精简指令集,常见于路由器等一些嵌入式设备中. mips汇编没有对堆栈的直接操作,也就是没有push和pop指令,mips汇编中保留了32个通用寄存器,但是不同于x86汇编,mips汇编中没有ebp/rbp寄存器. mips每条指令都用固定的长度,每条指令都是四个字节,所以内存数据的访问必须以32位严格对齐,这一点也不同于x86汇编. 通过一个demo,用mips-linux-gnu-gcc编译,通过IDA远程调试,来理解mips汇编中的一些概念…
JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: var array = new Array(); array.push(1); array.push(2); array.push(3); alert(array.length) 数组声明的第二种方式,并排序: var array = [1, 3, 25]; array.sort(); //对数组排序,…
放假了,发现自己知识面窄,趁有时间就打算折腾下Win32汇编.其实在学校也上过汇编课,是基于dos的.那时老师不务正业,老跟我们讲政治经济文化,唯独不怎么讲课;再加上自己的问题,导致了dos汇编学得好烂(几乎没学),但发现dos汇编比较少用,所以直接学Win32汇编了,基础知识薄弱遇到再补上去.我只是多了解其他知识,不求精通.如果要学好还是应该先写好dos汇编的. 介绍 Win32可执行环境的开发过程如下图 常用的编译器有Microsoft的MASM系列和Borland的TASM系列.但都存在一…
原文:ThinkPhp学习11 一.模板的使用        (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) 更换模板文件的后缀名(修改配置文件)   'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀名 b.修改模板文件目录层次   'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次 c.模板主题   'DEFAULT…
  如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)1.首先要下载我提供的软件包(里面已经包含所有所需软件); 2.把它解压到D盘根目录下(如果需要安装在其它的地方,请注意设好路径); 3.解压后,里面有:idesetup.exe ,MASMv8.exe ,NMAKE.EXE,Var.txt和资源编辑器,Makefile.txt,Readme.txt,总共7个文件.步骤: 1.首先,双击MASMv8.exe,安装MASM32.注意,就直接安装在D盘根目录下; 2.把Var.txt…
在主程序中用call指令来调用子程序. Win32汇编中的子程序也采用堆栈来传递参数,这样就可以用invoke伪指令来进行调用和语法检查工作. 一. 子程序的定义 子程序的定义方式如下所示. 子程序名  proc [距离][语言类型][可视区域][USES 寄存器列表][,参数:类型]...[VARARG]          local 局部变量列表          指令 子程序名  endp proc和endp伪指令定义了子程序开始和结束的位置, proc后面跟的参数是子程序的属性和输入参数…
android ARM 汇编学习—— 在 android 设备上编译c/cpp代码并用objdump/readelf等工具分析 adb putty 连上手机,用busybox vi 写一个 helloworld c root@HM2014813:/data/local/tmp # busybox vi hello.c #include <stdio.h> int main(int argc, char* argv[]){ printf("Hello ARM World\n"…
8086汇编是指在某环境下汇编编译产生的程序,用机器去执行每条指令的长度为16位(可小于16),如DOS操作系统:WIN32汇编是32位环境下的汇编,如Windows(Windows也有64位的,XP和VISTA都有相应的版本).大体是差不多,当然,各自也有些细微的差别,WIN32下多了一些寄存器的操作,简化了一些运算,还有就是Windows把一些关键的东东都封装起来了,所以在Windows下WIN32汇编的程序员一般都感到不能像在DOS下那样欢快的游弋了,因为WIN32汇编用户不可能像在以前对…
win32汇编基础知识 Debug 版本|Release 版本 Debug 是"调试"的意思,Debug 版本就是为调试而生的,编译器在生成 Debug 版本的程序时会加入调试辅助信息,并且很少会进行优化,程序还是"原汁原味"的. 你没听错,不是任何一个程序都可以调试的,程序中必须包含额外的辅助信息才能调试,否则调试器也无从下手. Release 是"发行"的意思,Release 版本就是最终交给用户的程序,编译器会使尽浑身解数对它进行优化,以提…
网站 AoGo汇编小站(MASMPlus作者) Win32Asm教程在线版 Win32Asm教程博客园文件备份版 Masm32补充教程系列 Win32 ASM Tutorial Resource Kit:dREAMtHEATER收集的WIN32ASM教程,内容很全,包括32位汇编的基础知识,Iczelion的经典教程中英文版,罗云彬的32位汇编教程,还有PE格式和VxD的一些内容. IDE MASMPlus Visual MASM RadASM2_fork(推荐) RadAsm 3.x支持中文注…
一.说明 常用的32位汇编编译器有微软的MASM.Borland的TASM和NASM. 编译器 开发者 优点 缺点 MASM 微软 微软自家软件和系统兼容性好:支持invoke/.if等伪指令将汇编变得和C++差不多 就一个编译器,没有资源编译器和链接器,也没有头文件 TASM Borland 支持伪指令,有资源编译器和链接器 没有Windows数据结构和预定义的头文件,现在官方似乎不维护了 NASM 开源 同时支持Windows和Linux 不支持伪指令,没有Windows数据结构和预定义的头…
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,普遍地说,特定的汇编语言和特定的机器语言指令集是相互对应的,不同平台之间不可直接移植. 熟练掌握Win32 API函数的参数传递,是软件逆向的基础,本章节…
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,普遍地说,特定的汇编语言和特定的机器语言指令集是相互对应的,不同平台之间不可直接移植. 字串操作指令 移动串指令: MOVSB.MOVSW.MOVSD ;…
从.NET平台调用Win32 API Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制Windows的接口. 一.    基础知识 Win32 API是C语言(注意,不是C++语言,尽管C语言是C++语言的子集)函数集. 1. Win32 API函数放在哪里? Win32 API函数是Windows的核心,比如我们看到的窗体.按钮.对话框什么的,都是依靠Win32函…
本文是<汇编语言>一书的学习笔记,对应书中的4-6章. 汇编程序的执行 要想将源代码变为可执行的程序需经过编译.连接两个步骤,WIN7操作系统下需要MASM程序来进行编译连接工作.将MASM和Debug安装在E:\Software\assembly目录下并新建code文件夹,创建汇编源程序1.asm,使用masm命令编译,link命令连接. ;演示的小程序 assume cs:code code segment add ax,bx mov ax,4c00h int 21h code ends…
我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式汇编,利用嵌入汇编我们可以得到高效的程序代码,完成一些Delphi没有提供的底层功能.借贵报一方宝地与大家分享我的“研究”. 1.Delphi的位操作   每个学习C的朋友都会被告之C是“中级语言”,其位操作非常方便,而Pascal之流只适用于教学.但是Delphi中提供了一组位操作,可别以过去对P…