主题:[讨论]请教高手 资源文件的问题
xyouzhou
[专家分:0] 发布于 2009-03-28 21:11:00
我编的一个小软件里有两个声音和一幅图片,
PlaySound App.Path & "\click.WAV", 0, SND_FILENAME Or SND_ASYNC
mmc.mmOpen App.Path & "\flourish1.mid"
mmc.mmPlay App.Path & "\flourish1.mid"
Image1.Picture = LoadPicture(App.Path &"tips.gif")
怎样才能把它们做成 资源文件,以便编译EXE后可以拿到别人的电脑上运行.不再需要这些 mid 和WAV.
最后更新于:2009-03-28 21:12:00
回复列表 (共2个回复)
沙发
一江秋水 [专家分:9680] 发布于 2009-03-29 17:28:00
VB资源文件可以直接使用的图形类型是位图、图标、光标。
GIF和JPG以及声音文件都不能直接使用。在添加资源时,要把它们作为“自定义资源”加载到资源编辑器,保存后,在代码中要使用字节型数组读出资源,再作相应处理。例如,你将一个WAV文件保存到资源编辑器中后,窗体中的代码如下:
Option Explicit
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1&
Private Const SND_MEMORY = &H4&
Private Sub Command1_Click() '播放 WAV 文件
Dim bArr() As Byte
bArr = LoadResData(101, "WAVE")
sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY
End Sub
而对于其它类型的声音文件,你要先将这个数组以二进制的方式存盘为相应的声音文件(最好保存到系统的临时文件夹),再调用API函数来播放这个文件。退出程序时最好删除这个文件。
对于GIF、JPG图片,也按类似于上述的办法处理。
板凳
孙瑞 [专家分:590] 发布于 2011-05-07 13:09:00
[quote]VB资源文件可以直接使用的图形类型是位图、图标、光标。
GIF和JPG以及声音文件都不能直接使用。在添加资源时,要把它们作为“自定义资源”加载到资源编辑器,保存后,在代码中要使用字节型数组读出资源,再作相应处理。例如,你将一个WAV文件保存到资源编辑器中后,窗体中的代码如下:
Option Explicit
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1&
Private Const SND_MEMORY = &H4&
Private Sub Command1_Click() '播放 WAV 文件
Dim bArr() As Byte
bArr = LoadResData(101, "WAVE")
sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY
End Sub
而对于其它类型的声音文件,你要先将这个数组以二进制的方式存盘为相应的声音文件(最好保存到系统的临时文件夹),再调用API函数来播放这个文件。退出程序时最好删除这个文件。
对于GIF、JPG图片,也按类似于上述的办法处理。
[/quote]
VB对单个资源文件有64k的限制,怎样解决这个问题?比如我要添加的音乐有5M,怎么加到资源文件中?
我来回复