Windows 编程/资源脚本
Windows 平台 SDK 包含一个名为 rc.exe 的特殊实用程序,即 资源脚本编译器。资源脚本是 Windows 编程中一个强大的部分,任何优秀的程序员都应该知道如何有效地利用它。
有关特定资源的更多信息,请参阅 资源脚本参考。
资源编译器编译一种称为 资源脚本 的特殊类型的文件。资源脚本包含 GUI 数据,并且在编译后,可以链接到程序中。然后程序可以访问资源脚本中包含的数据。需要注意的是,Windows 操作系统会出于各种目的访问程序的资源。例如,右键单击程序,然后单击“属性”。如果有,请单击“版本”选项卡。此选项卡将包含一些描述程序的不同文本字符串。这些文本字符串都来自资源脚本。
此外,每个人都熟悉通常每个程序都有一个独特的图标的事实。如果你希望你的程序可执行文件使用一个特殊的图标,你必须将其包含在一个资源脚本中。
通过资源脚本,可以在程序中存储许多不同类型的资源。资源脚本不是在程序中存储此信息的唯一方法,但它们比编写硬 C 或 VB 代码来存储和访问它们要容易得多。
以下是常见资源的列表:
- 下拉菜单
- 弹出菜单
- 文本字符串
- 键盘加速键(按键组合,例如 [Ctrl]+[C] 用于复制文本)
- 图标
- 位图图像
- 对话框
- 版本信息
- 鼠标光标
编写资源脚本的语法类似于 C。例如,资源脚本编译器使用标准 C 预处理器。这很重要,因为你必须包含头文件 <afxres.h> 来制作资源脚本。此外,大多数资源脚本都包含宏值,因此程序员经常将相关的宏定义存储在头文件“resource.h”中。这样,相同的宏就可以包含在主程序文件中并使用。
我们将在后面的章节中详细讨论资源;还有一个附录列出了所有常见的资源类型,包括有关如何使用它们的说明。这个附录位于 Windows 编程/资源脚本参考。
一旦资源存储在你的可执行文件中,就有各种方法可以访问它。这些方法根据你试图访问的资源类型而有所不同。例如,如果你想访问一个字符串资源,你需要使用 LoadString 函数;相应地,需要 LoadIcon 函数来访问图标。
要访问资源,你必须拥有包含该资源的可执行文件的实例句柄。这意味着,如果你获得另一个可执行文件(或 DLL)文件的实例句柄,就可以远程访问资源!有时,程序员会创建仅包含资源的 DLL 文件,供其他程序使用。
MAKEINTRESOURCE 关键字,我们有时会在处理资源时看到,是一个重要的关键字,如果使用不正确,程序会崩溃(甚至无法编译),所以花点时间理解它非常值得。
所有资源都存储在一个名称中,该名称可以是字符串或数字标识符。如果是数字,则该数字必须不大于无符号 16 位整数(65535,最大)。所有资源都按名称调用,即系统期望一个包含资源名称的 Unicode 字符串。但是,如果我们使用数字标识符,我们需要通知系统我们这样做,这样它就不会混淆并尝试将你的整数视为字符串。为此,我们将 MAKEINTRESOURCE 宏传递给 make。宏接受一个参数 - 数字标识符 - 它返回一个适合在系统中使用的字符串指针。我们将在后面演示这一点。