c语言写图形化程序,汇编语言如何编写图形化的Windows应用程序

本节将展示如何为 32 位 Microsoft Windows 编写简单的图形化应用程序。该程序创建并显示一个主窗口,显示消息框,并响应鼠标事件。本节内容为简介性质,如果希望了解更多信息,请参阅 Platform SDK 文档

下表列出了编写该程序时需要的各种链接库和头文件。

文件名

说明

WinApp.asm

程序源代码

GraphWin.asm

头文件,包含程序要使用的结构、常量和函数原型

kernel32.lib

本章前面使用的 MS-Windows API 链接库

user32.lib

其他 MS-Windows API 函数

/SUBSYSTEM:WINDOWS 代替了之前章节中使用的 /SUBSYSTEM:CONSOLE。程序从 kernel32.lib 和 user32.lib 这两个标准 MS-Windows 链接库中调用函数。

主窗口

本程序显示一个全屏主窗口。为了让窗口适合本书页面,这里缩小了它的尺寸

178df150a67c72a345f0d54db8ee1ffe.gif

必要的结构

结构 POINT 以像素为单位,定义屏幕上一个点的 X 坐标和 Y 坐标。它可以用于定位图形对象、窗口和鼠标点击:

POINT STRUCT

ptX DWORD ?

ptY DWORD ?

POINT ENDS

结构 RECT 定义矩形边界。成员 left 为矩形左边的 X 坐标,成员 top为矩形上边的 Y 坐标。成员 right 和 bottom 保存矩形类似的值:

RECT STRUCT

left DWORD ?

top DWORD ?

right DWORD ?

bottom DWORD ?

RECT ENDS

结构 MSGStruct 定义 MS-Windows 需要的数据:

MSGStruct STRUCT

msgWnd DWORD ?

msgMessage DWORD ?

msgWparam DWORD ?

msgLparam DWORD ?

msgTime    DWORD ?

msgPt POINT <>

MSGStruct ENDS

结构 WNDCLASS 定义窗口类。程序中的每个窗口都必须属于一个类,并且每个程序都必须为其主窗口定义一个窗口类。在主窗口可以显示之前,这个类必须要注册到操作系统:

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 指向一个空字节结束的字符串,该字符串中包含了窗口的类名称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值