汇编语言如何编写图形化的Windows应用程序
下表列出了编写该程序时需要的各种链接库和头文件。
文件名 | 说明 |
---|---|
WinApp.asm | 程序源代码 |
GraphWin.asm | 头文件,包含程序要使用的结构、常量和函数原型 |
kernel32.lib | 本章前面使用的 MS-Windows API 链接库 |
user32.lib | 其他 MS-Windows API 函数 |
/SUBSYSTEM:WINDOWS 代替了之前章节中使用的 /SUBSYSTEM:CONSOLE。程序从 kernel32.lib 和 user32.lib 这两个标准 MS-Windows 链接库中调用函数。
主窗口
本程序显示一个全屏主窗口。为了让窗口适合本书页面,这里缩小了它的尺寸必要的结构
结构 POINT 以像素为单位,定义屏幕上一个点的 X 坐标和 Y 坐标。它可以用于定位图形对象、窗口和鼠标点击:
POINT STRUCT
ptX DWORD ?
ptY DWORD ?
POINT ENDS
RECT STRUCT
left DWORD ?
top DWORD ?
right DWORD ?
bottom DWORD ?
RECT ENDS
MSGStruct STRUCT
msgWnd DWORD ?
msgMessage DWORD ?
msgWparam DWORD ?
msgLparam DWORD ?
msgTime DWORD ?
msgPt POINT <>
MSGStruct ENDS
WNDCLASS STRUC
style DWORD ? ;窗口样式选项
lpfnWndProc DWORD ? ; winProc 函数指针
cbClsExtra DWORD ? ;共享内存
cbWndExtra DWORD ? ;附加字节数
hlnstance DWORD ? ;当前程序句柄
hlcon DWORD ? ;图标句柄
hCursor DWORD ? ;光标句柄
hbrBackground DWORD ? ;背景刷句柄
IpszMenuName DWORD ? ;菜单名指针
IpszClassName DWORD ? ; WinCZLass 名指针
WNDCLASS ENDS
- style 是不同样式选项的集合,比如 WS_CAPTION 和 WS_BORDER,用于控制窗口外观和行为。
- lpfnWndProc 是指向函数的指针,该函数接收并处理由用户触发的事件消息。
- cbClsExtra 指向一个类中所有窗口使用的共享内存。可以为空。
- cbWndExtra 指定分配给后面窗口实例的附加字节数。
- hInstance 为当前程序实例的句柄。
- hIcon 和 hCursor 分别为当前程序中图标资源和光标资源的句柄。
- hbrBackground 为背景(颜色)刷的句柄。
- lpszMenuName 指向一个菜单名。
- lpszClassName 指向一个空字节结束的字符串,该字符串中包含了窗口的类名称。