1、第23章 Visual Basic 6.0的动态链接库和资源文件,在程序员编写应用程序时,除了要考虑程序的结构,还要同时考虑应用程序使用时的系统平台的差异、考虑应用程序的本地化、考虑程序代码执行的有效率、内存的开销等因素。动态链接库DLL(Dynamic-Link Library,简称DLL)能够动态的装入进程的地址空间,因此应用程序能够在运行时确定需要执行什么操作,然后装入相应的代码,以便根据需要执行这些操作。而且DLL有助于资源的共享,可以包括对话框模板、字符串、图标和位图等资源,多个应用程序能够使用DLL来共享这些资源。,23.1 Visual Basic 6.0的动态链接库,Windo
2、ws动态链接库是包含数据和函数的模块,可以被其他可执行文件(EXE、DLL、OCX等)调用。动态链接库包含两种函数:输出(eXPorted)函数和内部(internal)函数。输出函数可以被其他模块调用,而内部函数则只能在动态链接库内部使用。尽管动态链接库也能输出数据,但实际上动态链接库的数据通常只能在内部使用的。,23.1.1 动态链接库的优点,动态链接库(DLL)作为Windows操作系统的基础,与静态库相比较,具有以下几个方面的优点:DLL扩展了应用程序的特性。DLL可以用多种语言进行编写。DLL可以简化软件项目的管理。DLL可以节省内存。DLL有助于资源的共享。DLL可以实现应用程序的
3、本地化。DLL可以解决系统平台的差异。,23.1.2 创建新的ActiveX DLL工程,Visual Basic 6.0采用ActiveX DLL来实现编制DLL的任务,这种方式建立的DLL是真正的DLL,完成时具有扩展名DLL,与以前的Windows DLL不同,是在Visual Basic中建立一个在DLL中定义的对象来访问,用该对象的属性、方法工作,而不是用Declare语句声明的DLL内定义的函数。,23.1.2 创建新的ActiveX DLL工程,23.1.3 在工程中调用动态链接库,要在工程中调用动态链接库,只需要在标准工程中选择“工程”|“引用”命令,在弹出的“引用”对话框中单
4、击“浏览”按钮,在弹出的“添加引用”对话框中选择DLL文件所在的路径和文件名,单击“确定”按钮则在“引用对话框”会出现添加的DLL文件。单击“确定”按钮后就可以直接使用该DLL的属性和方法了。,23.2 Visual Basic 6.0的资源文件,资源文件(Resource Files)对于Visual Basic应用程序是非常有用。举个简单例子,如果程序想实现多语言功能,可以利用资源文件,通过读取不同的资源来达到目的,这样就可以避免为每一种语言重新编译应用程序。,23.2.1 了解资源文件,Visual Basic资源文件(.res)可以包含五种不同类型的资源:字符串表资源、游标资源、图标资
5、源、位图资源和自定义资源,每一种资源由一个唯一的索引或资源ID标识。Visual Basic所支持的资源文件必须以.res为扩展名,否则Visual Basic将无法正确识别。只要在Visual Basic程序中加入.res的资源文件,就可以使用.res资源文件中的各种资源了。在工程编译生成的EXE文件中,也会自动包含.res资源文件中的所有资源。要制作.res资源文件,可通过以下两种方法:使用Visual C+、Delphi等软件的资源编辑工具直接编辑.res文件。先建立一个.rc的脚本文件,然后使用rc.exe将脚本文件编译成资源文件.res。,23.2.2 建立新的资源文件,要建立一个.
6、res的资源文件,除了使用其他的资源编辑工具外,最常用的是先建立一个.rc文件,然后通过rc.exe编译成.res资源文件。建立.rc文件,可以通过任何一个文本编辑器(如Windows的记事本)建立,输入文本后将文件保存为.rc后缀名即可。如下面为一个.rc文件的代码。/图标资源2 Icon C:myicon001.ico3 Icon C:myicon002.ico4 Icon C:myicon003.ico5 Icon C:myicon004.ico,23.2.3 在程序中使用资源文件,要在程序中使用已经编译好的.res资源文件,只要在创建的工程中将.res资源文件添加到工程中就可以使用资源文件中的资源了。如将上面的资源文件编译成MyRes.res文件,则将该文件添加到新创建的工程中之后可以通过以下的代码来调用MyRes.res资源文件中的资源。程序中有一个Combo控件来选择资源ID,一个Picture控件来装载ICON图标,一个标签控件来显示字符串资源。,23.3 小结,动态链接库和资源文件不仅扩展了应用程序的特性、优化了内存配置、加快了程序的执行速度,而且简化了编程。本章主要介绍了动态链接库的含义和优点,以及如何创建和调用动态链接库,最后详细解了如何通过资源文件在应用程序中调用资源。,