资源,是指各种各样可供利用的财富,它们可能埋藏在地表下面,也可能就在你的后院中。就物理意义而言,从森林中的树木到地层中开采出来的煤炭,这一切都可以称为资源。虽然不能从Visual C++中获得物理意义上的贵重珍宝,但可以挖掘到建立程序时所需的资源。
和任何一种矿产资源一样,Visual C++中的资源提供了一种原材料,将其与程序元素结合起来就可以创建一个成品。在这里,资源与代码结合,创建应用程序的一部分,如菜单或工具条。事实上,在程序中看到的大多数元素也都来自某类资源。当然,Visual C++资源不仅仅是原材料,但原材料的作用是非常大的。我们在下面的章节中讨论资源的用途,牢记住这一点的话,就会得到很大的帮助。
那么,可以从Visual C++的资源矿产中挖掘到什么呢?这些资源的外形和大小各不相同,包括加速键、位图、光标、对话框、图标、菜单、串表、工具条和版本信息。随着课程的进展,我们最后将使用十种资源中的九种(将在第15章讨论HTML资源)。你会看到,某些资源存在子类,每种资源都有特定的用途。在某些情况下,用向导设计程序时,Visual C++自动创建资源,如About对话框。所创建的其它资源是设计另外一些程序的一部分,如字符串。最后,你会人工设计一些资源,如对话框。
注 Visual C++支持十种资源:加速键、位图、光标、对话框、HTML、图标、菜单、串表、工具条和版本信息。
注释 我们要在本章中使用第二章介绍过的Sng1_Doc示例。如果想把这两个练习分开,只需创建Sng1_Doc工程文件夹的一个拷贝。为了便于本章使用,请将所有的Sng1_Doc工程文件复制到Resource(资源)工程文件夹。
幸运的是,你可以随时创建任何所需要的资源。只需显示ResourceView(资源视图),右击Resources(资源)文件夹,从上下文菜单中选择Insert(插入)。你会看到一个Insert Resource(插入资源)对话框,如上图所示。请注意,它显示出我们已提到过的所有十种资源。还应该看到,有三种创建资源的方式,即使用对话框上的New(新建),Import(导入)或Custom(自定义)按钮。
可以在当前程序中使用来自其它工程的资源。例如,可能想在编写的每一个程序中都使用相同的公司徽标。只需右击Resources(资源)文件夹,从上下文菜单选择Import(导入)而不是Insert(插入)。你会看到Open-type(打开类型)对话框。选择包含了想要导入的资源的文件。正是由于这个原因,你会想到把你的大多数资源与程序分离。可惜的是,这种方法只对图标、光标、声波文件以及Visual Basic窗体文件有用。
技巧 有几种使用来自其它工程的其它类型资源的方式,如About(关于)对话框。只需简单地为想要共享的资源创建一个分离的RC文件就行了。这在遇到像About对话框这样的资源时很有用。你只要将RC文件添加到工程中,剩下的由Visual C++来处理。另一种共享资源的方法是,将其复制到剪贴板,再在创建了正确类型的空白资源后,将其粘贴到工程中。
自定义资源就是自己设计的资源。实际上,它并不适合Visual C++所提供的预定义类型。创建一个自定义资源项目很容易:只要单击Insert Resource(插入资源)对话框上的Custom(自定义)按钮。你会看到包含单个空白的New CustomResource(新建自定义资源)对话框。简单地输入自定义资源名。这时,Visual C++会产生一个新的文件夹,它含有你提供的自定义资源名和该文件夹内的一个新资源。还要提供实现这个资源所需的二进制数据。