我在一个程序中使用了一个图片框,该控件调节器用了一个GIF图片,可是打完包后,还需要使用该GIF图,如何把该图片包到程序(*.exe)中.

解决方案 »

  1.   


        在VB编程中有效地组织和利用资源 
     
    作者: 黄茂生  
    ---- 一. 资源在软件设计中的作用 ---- 在Windows中,一个资源代表一个Windows对象的数据块,每个可执行文件都包含一个资源表,其中列出了该文件中的资源。应用程序中使用的资源通常可分为两大类:二进制资源和字符串资源;字符串资源指在应用程序的用户界面中出现的所有文本,其中包括菜单、对话框以及提示、警告和错误提示信息;二进制资源包括:图标、位图、光标文件、声音、图象及视频等以二进制格式存放的资源。 ---- 应用程序中引入资源文件的最初动机是为使应用程序更容易国际化;把应用程序分成两个概念模块:代码模块和数据模块,如下所示: 数据模块+代码模块=产品
    用户接口部件+应用程序部件=本地化产品
    ---- 数据模块包含所有用户界面的字符串资源而不包含代码,相反,代码模块只包含可运行于所有区域的应用程序代码。因而在开发不同语言版本的应用程序时,本地化小组只须把精力花在资源文件上,这样做有以下优点: ---- 高效:由于代码是相同的,因而在开发新的国际化应用程序只须创建新的资源文件,这样可以顺利地开发不同语言版本的应用程序;安全:无论在内部或利用外部公司本地化程序,都可以不用修改代码,这样做可以减少化在国际版测试上的精力;更好的本地化:由于所有的字符串资源都在一个文件中,因此可以提高本地化工作的效率并防止遗漏。 ---- 要将应用程序使用的资源从应用程序中分离出来组成数据模块,可以用资源编译器将这些对象合并到一个资源文件里;利用资源文件组织资源,允许你很容易将大量的图形位图和图标文件直接包含在你的项目中,在对他们进行访问时单独加载,能改进加载时间,避免资源在调用窗口时全部加载而加快程序代码执行效率;除此外,还可以增加空间,这是因为字符串、位图、图标和数据可以不必在调用窗口或模块时就全部加载,而是按照需要从资源文件中加载。 ---- 二. 资源在资源定义文件的组织与定义 ---- 字符串资源和二进制资源的定义语法分别如下: ---- 1. 字符串资源 ---- 在资源定义文件里,字符串资源是包含在一个字符串表中的,定义语法格式: STRINGTABLE   [load_option] [mem_option]
    begin 
    String ID  string 
    .
    .
    .
    end
    ---- 参数说明 ---- -----load_option 指出资源被装栽的方式:preload(程序执行时立即装载);load on call(资源在被调用时装载,默认方式)。 ---- -----mem_option 指定资源被载入内存后是否可以移动和卸载。有三个参数可选:Fixed (指定资源存放在一个固定的内存区域中),Moveable(资源在系统有必要压缩内存时可以被移动),Discardable(资源在不再使用时被卸载); ---- -----StringID 指定一个整数作为识别资源的资源号; ---- -----String 字符串资源,它必须包含再两个双引号之内,而且长度不超过255个字节,一个字符串资源在资源定义文件里只能放在一行之中。 ---- 资源编译器编译资源时,是按标签号来分类的,每16个字符串为一段,标签号高12位相同的将被划分为同一段,在装载资源文件时是以段来栽入和卸载的。 ---- 资源定义例子: # define  IDS_HELLO         1
    #define   IDS_GOODBYE      2
    STRINGTABLE
    Begin 
    IDS_HELLO , “Hello”
    IDS_GOODBYE, “goodbye”
    End
    ---- 2.二进制资源 ---- 二进制资源是不包含在资源定义文件里的。资源定义文件只包含了一个指向包含该资源的文件的指针,这些指针在资源定义文件里被称为单行声明。 ---- 定义语法: nameID keyword [load_option] [mem_option] filename ---- 参数说明: ---- ------nameID 指定一个名字或整数来标识该资源。这个标识号在同类的资源里是唯一的,而在图标类资源中,标识号0是保留号,0号图标资源是应用程序图标。因而,图标类资源的标识号只能从1开始; ---- -----keyword 二进制资源的类别,可以设为以下参数之一:Bitmap (位图文件)、cursor(光标文件)、iocn(图标文件)、sound(声音文件)、video(视频文件); ---- -----load_option 该参数功能与字符串资源对应定义参数相同 ---- -----mem_option 该参数功能与字符串资源对应定义参数相同 ---- -----fileName 包含资源的文件名,文件名格式采用 MS-DOS的文件名格式,而且必须是全路径文件名,可以用双引号括起来也可以不括起来。 ---- 例: 12 Bitmap Picture “c:\disk.map” ---- 3. 资源文件的编译 ---- 用资源文件编译器把资源定义文件编译成标准的Windows资源文件后,该资源文件就可以加载到应用项目中被应用程序调用,编译后的文件是标准的资源文件,可由 Microsoft c++和其它大部分的Windows 开发工具使用。编译资源定义文件可以用资源编译器 RC.EXE。 ---- 格式:RC/R [option] definition_file source_file ---- ---/R 该参数指定资源文件仅被编译而不连接到可执行文件 ---- ---option 此参数为/?则列出资源编译器RC.EXE 的命令行参数;为/fo Name 则指定编译后扩展名为 .RES 的资源文件名; ---- ---definition file 指定被编译的资源定义文件 ---- 例: RC /R /fo test.res test.rc ---- 三. 资源在VB5下的调用 ---- 编译后的资源文件是标准的Windows 资源文件,可以为大多数的Windows 开发工具使用。在Visual Basic 5.0 下先向工程添加资源文件,然后用Loadresstring(),Loadrespicture(),Loadresdata()函数调用, 函数名 描述
    Loadrestring()
    从资源文件(.res)装载字符串并返回一个文本字符串;
    Loadrespicture()
    从资源文件(.res)装载并返回一个Picture 
    对象,例如图标、位图、或光标;
    Loadresdata() 
    从资源文件(.res)装载并返回一个Byte
    数组,用于象 .wav 之类的文件;
    ---- 调用语法: ---- Loadrestring(index),index是必须的一个参数,它用来指定资源文件中数据的标识号(ID),ID标识号为1的资源号保留给应用程序图标; ---- Loadrespicture(index,format),index含义与上同,Format是必须的一个数值常数,它用来指定返回数据的格式。其设置如下: 常数  设置 描述
    VbResBitmap 0 位图资源
    VbResIcon 1 图标资源
    VbResCursor 2 光标资源
    ---- Loadresdata(index,format),其参数index含义和Loadrespicture()相同,其中用于Format的设置有: 设置 描述 设置 描述
    1 光标资源 7 字体目录资源
    2 位图资源 8 字体资源
    3 图标资源 9 加速标资源
    4 菜单资源 10 用户定义资源
    5 对话框 12 群组光标
    6 字符串资源 14 群组图标
    ---- 例:调用前面已定义的字符串资源和位图资源,把按钮bottom1的caption属性设为“Hello”,Form1的Picture属性设为disk.bmp botton1.caption= Loadrestring(1)
    Form1.picture= Loadrespicture(12,0) 
     
       
     
      
     
      

  2.   

    1 打包时,在向导的“包含文件”一屏,将你的gif文件添加进来。这样可以随cab包发行。但它不是在.exe文件中,而是另一个文件。2 建议使用imagelist控件,可以加入多个图片。调用如下:
    set picture1.picture = imagelist1.listimage(3).picture
    此方法将图片以位图方式保存在程序.exe中。