首页 > 学院 > 基础常识 > 正文

win32汇编之窗口程序

2020-04-27 19:02:01
字体:
来源:转载
供稿:网友

窗口的创建过程:

1)。使用GetModulHandle获取窗口句柄

GetModuleHandle,lpModuleName

获取一个应用程序或动态链接库的模块句柄

lpModuleName参数是一个指向含有模块名字字符串的指针

如果返回成功,则返回模块句柄,存放在eax中。如果lpModuleName为NULL,则返回调用者本模块的句柄

2)。注册窗口类

定义一个WNDCLAS***结构类型的变量,对其进行赋值,在调用RegisterClas***函数在系统中注册。

WNDCLAS***的结构定义如下:

WNDCLAS*** STRUCT

cbSize DWORD ? ;结构体的字节数我们可以用sizeof(WNDCLAS***)来获得准确的值

style DWORD ? ;窗口风格

lpfnWndProc DWORD ? ;窗口过程的地址

cbCl***tra DWORD ? ;紧跟在窗口类结构后边的字节数

cbWndExtra DWORD ? ;紧跟在窗口事例后的附加字节数

hInstance DWORD ? ;本模块的事例句柄

hIcon DWORD ? ;图标的句柄

hCursor DWORD ? ;光标的句柄

hbrBackground DWORD ? ;背景色

lpszMenuName DWORD ? ;指向类名称的指针

hIconSm DWORD ? ;小图标

WNDCLAS*** ENDS

RegisterClas*** lpClassName

lpClassName参数是窗口类的地址

3)。建立窗口

CreateWindowEx, dwExstyle, lpClassName, lpWindowName, dwStyle,/

x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam

dwExstyle和dwStyle决定了窗口的外形和行为,dwStyle是win16开始就有点的属性,dwExstyle是win32中扩展的。

lpClassName:建立窗口使用的类名字符串指针。

lpWindowName:指向窗口名称的字符串。会显示在标题栏中。

x,y:指向窗口左上角位置,单位是像素

nWidth, nHeight:窗口的宽度和高度,单位是像素。

hWndParent:父窗口的句柄,若无父窗口,则为NULL

hMenu:窗口上要出现菜单的句柄。

hInstance:模块句柄,指定了窗口所属的程序模块。

lpParam:指针,指向一个欲传给窗口的参数

4)。消息循环

;>>>>>>>>>消息循环

.while TRUE

invoke GetMessage, addr @stMsg,NULL, 0, 0

.break .if eax == 0

invoke TranslateMessage, addr @stMsg

invoke DispatchMessage, addr @stMsg

.endw

GetMessage:从消息队列中取出一条消息,准备处理

TranslateMessage:遇到键盘消息则将扫描码转换成ASCII码,否则不处理

DispatchMessage:将消息发送到窗口对应的窗口过程去处理。

窗口过程

WindowProc proc uses ebx edi esi, hWnd, uMsg, wParam, lParam

mov eax, uMsg

.if eax == WM_XXX

<处理WM_XXX消息>

.elseif eax == WM_YYY
(责任编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表