网站首页 | 网页制作 | 网络编程 | 图形图象 | 冲浪宝典 | 操作系统 | 软件教学 | 网络安全 | 认证考试 | 下载中心 | 游戏下载
| 网络安全首页 | 安全在线 | 病毒防治 | 黑客攻防 | 漏洞研究 | 黑客编程 | 破解手记 |
您现在的位置: 超人气学院 >> 网络安全 >> 破解手记 >> 文章正文 用户登录 新用户注册
Win32ASM详解五学习更多关于“绘制”文本串的知识           
Win32ASM详解五学习更多关于“绘制”文本串的知识
作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:27:18



我们将做更多的实践去了解有关文本的诸多属性如字体和颜色等。
例子
理论:
Windows 的颜色系统是用RGB值来表示的,R 代表红色,G 代表绿色,B 代表兰色。如果您想指定一种颜色就必须给该颜色赋相关的 RGB 值,RGB 的取值范围都是从 0 到 255,譬如您想要得到纯红色,就必须对RGB赋值(255,0,0),纯白色是 (255,255,255)。从我们下面的例子中您可以看出来要想运用好这套基于数字的颜色系统并不容易,这要求您必须对混色和颜色匹配有良好的感觉。
您可以用函数 SetTextColor 和 SetBkColor 来“绘制”背景色和字符颜色,但是必须传递一个“设备环境”的句柄和 RGB 值作为参数。RGB 的结构体的定义如下:
RGB_value struct
unused db 0
blue db ?
green db ?
red db ?
RGB_value ends
其中第一字节为 0 而且始终为 0,其它三个字节分别表示兰色、绿色和红色,刚好和 RGB 的次序相反。这个结构体用起来挺别扭,所以我们重新定义一个宏用它来代替。该宏接收红绿蓝三个参数,并在 eax 寄存器中返回 32 位的 RGB 值,宏的定义如下:
RGB macro red,green,blue
xor eax,eax
mov ah,blue
shl eax,8
mov ah,green
mov al,red
endm
您可以把该宏放到头文件中以方便使用。
您可以调用 CreateFont 和 CreateFontIndirect 来创建自己的字体,这两个函数的差别是前者要求 您传递一系列的参数,而后着只要传递一个指向 LOGFONT 结构的指针。这样就使得后者使用起来更方便,尤其当您需要频繁创建字体时。在我们的例子中由于只要创建一种字体,故用 CreateFont 就足够了。在调用该函数后会返回所创建的字体的句柄,然后把该句柄选进“设备环境”使其成为当前字体,随后所有的“绘制”文本串的函数在被调用时都要把该句柄作为一个参数传递
例子:
.386
.model flat,stdcall
option casemap:none
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
RGB macro red,green,blue
        xor eax,eax
        mov ah,blue
        shl eax,8
        mov ah,green
        mov al,red
endm
.data
ClassName db "SimpleWinClass",0
AppName  db "Our First Window",0
TestString  db "Win32 assembly is great and easy!",0
FontName db "s cript",0
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.code
&nb

[1] [2] [3] [4] [5] 下一页

[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda    责任编辑:kinda 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
     Softice使用指南---配[2610]
     中文编辑排版专家—Dr[2442]
     一个破解注册码的例子[1436]
     C语言学习系统v3.0破解[1413]
     获得键盘扫描码[1242]
     破解ComposerforRingT[1082]
     自动脱壳之ProcDump应[990]
     流光4.5完全破解[978]
     VisualBasic程序之Sma[978]
     PE文件结构剖析[891]
    相 关 文 章
    WinImage密码的另一种破解
    极速登录3.6---用winHEX破
    桥牌软件DeepFinesse的注册
    MagicWin981.30f的注册机源
    破解adbin1.2
    winzip注册机源码
    WinZIP.Self.Extractor.v2
    用插件(plugin)的方式改变
    一个Winzip8.0的注册机供大
    菜鸟破解录(12)之AxMan3.1
    Winrar2.8到3.0升级手记
    windowsXP下的向量化异常处
    菜鸟破解录(10)之ADayinth
    win2000下手动破解Elib2.0
    WinKawaks1.45脱壳笔记
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)