在VB项目中使用资源文件

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
    很多 VB项目使用的数据存储在扩展文件中,包括bmp图片,icons图标,指针和wav文件。在你的安装中这些元素作为分开的单独文件有两个缺点。

首先,它可能在大量的文件中混乱安装;但是,如果一个用户删除或者不经意的移动文件中的任何内容,程序就不会正常运行。第二,文件中的材料对于用户来说使用是非常自由的,有可能用户所使用的方法是你不希望的。

   你可以使用资源文件来避免上面的这些问题。使用资源文件的另外一个好处就是你可以创造特别版本的资源文件包括在不同的地方安装。

   一个VB项目仅仅只有一个和它相关的资源文件。这个文件包含了二进位和串元素。文件中的每个元素有一个标识符,当项目需要它的时候,你可以使用这个标识符来检索一个特别的资源。

   为了创建或者修改一个项目的资源文件,在VB IDE中使用Tools | Resource Editor命令,然后使用资源编辑器命令添加bit和其他项目到文件中。每个资源在这个时候被分配了一个标识符。你同样可以使用Project | Add New Resource File添加一个存在的资源文件到项目中。

   在你的项目中,你使用三个函数来从资源文件中装入数据:LoadResPicture (for bitmap 图像), LoadResString (字符串), and LoadResData (多种数据)

  现在我们来看看一些例子。下面的代码装如了一个icon资源并使用101代码,分配Form1 给icon:

  Form1.Icon = LoadResPicture(101, VBResIcon)

同样地,这个代码装入一个bmp图片并在一个图片控制器中显示它:

Picture1.Picture = LoadResPicture(102, VBResBitmap)

下面的代码从资源文件中装入一个字符串并在标签控制器中显示:

Label1.Caption = LoadResString(103)

LoadResData函数使用在任意二进制数据,比如WAV和AVI中,你的程序必须包含代码来完成适当的数据。LoadResData函数的用法不在我们今天讨论的范围之内,但是你可以从VB文档中找到更多信息。

 资源函数是一个非常有用的工具,但是很少的程序员在了解它。我希望这篇简短的文章会在技术上给大家一些启示。

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
'这是从源文件里调用msvbvm60.dll 注册的代码 '本代码是放在模块 Moudule1.bas 里面,不是放在Form1里面的. '要注册.dll .ocx最好是放在.bas里面,并把启动项设为Sub Main '否则有可能在还没进入窗体执行注册的动作前,就产生错误而断了 '尤其是98系统之下的msvbvm60.dll '先建立一个源文件, 在 Custom 101 装载 msvbvm60.dll Global winsys$, appdisk$, aa$ Sub Main() On Error Resume Next If App.PrevInstance Then MsgBox "本系统已运行, 不得重复加载!!", vbOKOnly, "菜鸟多媒体桌面工具": End appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\") winsys = GetSyspath Call regdllocx Form1.Show End Sub Private Sub regdllocx() On Error Resume Next Dim byt() As Byte aa = winsys & "msvbvm60.dll" If Dir(aa) = "" Then byt = LoadResData(101, "CUSTOM") Open aa For Binary As #1 Put #1, 1, byt() Close #1 End If If Dir(aa) <> "" Then aa = "Regsvr32 /s " & aa Call Shell(aa, vbHide) End If End Sub Public Function GetSyspath() As String '获取system32路径 aa = Trim(Environ("ComSpec")) GetSyspath = Mid(aa, 1, InStrRev(aa, "\")) End Function '直接从源文件调用 .bmp图片(只允许.bmp),不必释放到硬盘 'Me.Icon = LoadResPicture(101, vbResIcon) '注释:加载图标 'Picture1.Picture = LoadResPicture(101, vbResBitmap) '注释:加载位图 'Command1.MouseIcon = LoadResPicture(101, vbResCursor) '注释:加载光标' '播放 WAVE 声音(只允许.wav) Option Explicit Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long Const SND_ASYNC = &H1 Const SND_MEMORY = &H4 Private Sub Command1_Click() Dim bArr() As Byte bArr = LoadResData(101, "CUSTOM") DoEvents sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY End Sub 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cbm666/archive/2008/03/08/2158287.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值