Windows函数呼叫
HELLOWIN至少呼叫了18个Windows函数。下面以它们在HELLOWIN中出现的次序列出这些函数以及各自的简明描述:
- LoadIcon 加载图标供程序使用。
- LoadCursor 加载鼠标光标供程序使用。
- GetStockObject 取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象)。
- RegisterClass 为程序窗口注册窗口类别。
- MessageBox 显示消息框。
- CreateWindow 根据窗口类别建立一个窗口。
- ShowWindow 在屏幕上显示窗口。
- UpdateWindow 指示窗口自我更新。
- GetMessage 从消息队列中取得消息。
- TranslateMessage 转译某些键盘消息。
- DispatchMessage 将消息发送给窗口消息处理程序。
- PlaySound 播放一个声音文件。
- BeginPaint 开始绘制窗口。
- GetClientRect 取得窗口显示区域的大小。
- DrawText 显示字符串。
- EndPaint 结束绘制窗口。
- PostQuitMessage 在消息队列中插入一个「退出程序」消息。
- DefWindowProc 执行内定的消息处理。
这些函数均在Platform SDK文件中说明,并在不同的表头文件中声明,其中绝大多数声明在WINUSER.H中。
大写字母标识符
读者可能注意到,HELLOWIN.C中有几个大写的标识符,这些标识符是在Windows表头文件中定义的。有些标识符含有两个字母或者三个字母的前缀,这些前缀后头接着一个底线:
这些是简单的数值常数。前缀指示该常数所属的类别,如表3-1所示。
表3-1 |
前缀 | 类别 |
CS | 窗口类别样式 |
CW | 建立窗口 |
DT | 绘制文字 |
IDI | 图示ID |
IDC | 游标ID |
MB | 消息框 |
SND | 声音 |
WM | 窗口消息 |
WS | 窗口样式 |
奉劝程序写作者不要费力气去记忆Windows程序设计中的数值常数。实际上,Windows中使用的每个数值常数在表头文件中均有相应的标识符定义。
HELLOWIN还使用了Windows表头文件中定义的四种数据结构(我们将在本章稍后加以讨论)。这些数据结构如表3-2所示。
表3-2 |
结构 | 含义 |
MSG | 消息结构 |
WNDCLASS | 窗口类别结构 |
PAINTSTRUCT | 绘图结构 |
RECT | 矩形结构 |
前面两个数据结构在WinMain中使用,分别定义了两个名为msg和wndclass的结构,后面两个数据结构在WndProc中使用,分别定义了ps和rect结构。
句柄简介
最后,还有三个大写标识符(见表3-3),用于不同型态的「句柄」:
表3-3 |
标识符 | 含义 |
HINSTANCE | 执行实体(程序自身)句柄 |
HWND | 窗口句柄 |
HDC | 设备内容句柄 |
句柄在Windows中使用非常频繁。在本章结束之前,我们将遇到HICON(图标句柄)、HCURSOR(鼠标光标句柄)和HBRUSH(画刷句柄)。
句柄是一个(通常为32位的)整数,它代表一个对象。Windows中的句柄类似传统C或者MS-DOS程序设计中使用的文件句柄。程序几乎总是通过呼叫Windows函数取得句柄。程序在其它Windows函数中使用这个句柄,以使用它代表的对象。代号的实际值对程序来说是无关紧要的。但是,向您的程序提供代号的Windows模块知道如何利用它来使用相对应的对象。