以下代码曾被我运用于编写“魔方计时器”
一、编写资源文件:
1、在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”。或在工具栏里到一个像魔方的东西,点击打开,VB资源编辑器。可以写入位图、图标、光标、自定义文件。(具体操作可参考网络资源)。
注意:该资源文件会一起被编译进入程序中。
二、写出&删除资源文件
1、写出文件
Dim TempData() As Byte
DIM TempDataPath
TempDataPath = " **** " '引号里你可以自定义盘符和路径作为资源加载的临时存储地址
TempData = LoadResData(101, "CUSTOM") '101是那个文件编号,具体可以自己在整合资源的时候更
改,默认是101,"CUSTOM"是自定义文件,如果是位图应该是TempData = LoadRespicture(101, vbResBitmap),其他分别为图标(vbResIcon)、光标(vbResCursor)
Open TempDataPath For Binary Access Write As #1
Put #1, , TempData
Close #1
【以上代码可放于触发事件或子过程中调用】
2、删除文件
Private Sub Form_Unload(Cancel As Integer)
Kill " *** " '引号里是刚刚你自己定义的路径(必须相同,否则程序报错)
End Sub
【以上代码也可以在子过程中调用 Kill " *** " '引号里是刚刚你自己定义的路径(必须相同,否则程序报错)】
三、调用资源文件中的图片文件
Dim bArr() As Byte
bArr = LoadRespicture(101, vbResBitmap) ‘其他分别为图标(101,vbResIcon)、光标(101,vbResCursor)
'这里编写运用代码,比如image1.picture=bArr
'【以上代码可放于触发事件或子过程中调用】
四、调用资源文件中的自定义文件
自定义文件不同于图片文件,在程序中不能直接调用,必须写出到临时存储地址,然后再调用。写出代码见二。(当然,程序退出时它不会自动删除临时文件,需自行编写代码删除文件,删除文件见二)
五、以下为调用背景音乐实例
'1、打开资源编辑器,写入音乐文件(格式限制为.mp3 .wav .wma ),编号默认为101
'2、双击form窗口,在代码窗口写入以下代码
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByValuReturnLength As Long, ByVal hwndCallback As Long) As Long '调用播放音乐的话需要写入这段代码
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long '调用ShortPath子过程需要写入这段代码
Dim TempDataPath As String '定义全局变量
Private Sub Form_Load()
Dim TempData() As Byte
TempDataPath = App.Path + "背景音乐1.mp3" '若之前写入的文件是其他格式的,请更改为相应格式的文件扩
展名。
TempData = LoadResData(101, "CUSTOM")
Open TempDataPath For Binary Access Write As #1
Put #1, , TempData '写出文件
Close #1
If TempDataPath Like "* *" Then ShortPath (TempDataPath) '判断TempDataPath中是否带空格
mciSendString "play " & TempDataPath, vbNullString, 0, 0 '注意play后面有个空格,而且TempDataPath中不能带空格
End Sub
'使用该调用音乐代码可以在音乐还未停止前调用其他的音乐,且不会中断之前调用的音乐。
Sub ShortPath(pathname As String)
Dim s As String
s = String(LenB(pathname), Chr(0))
GetShortPathName pathname, s, Len(s)
TempDataPath = Left(s, InStr(s, Chr(0)) - 1)
End Sub
Private Sub Form_Unload(Cancel As Integer)
mciSendString "stop " & TempDataPath, vbNullString, 0, 0 '停止播放音乐,注意stop后面也有一个空格
Kill TempDataPath '当程序退出时,删除临时写出的文件
End Sub
'【以上经XP上VB6.0企业版调试成功】
=====================================================================================
其他播放背景音乐代码(未经调试):
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Const SND_SYNC = &H0
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_MEMORY = &H4
Private Const SND_LOOP = &H8
Private Const SND_NOSTOP = &H10
Private Sub Form_Load()
Dim arr() As Byte
arr = LoadResData(101, "CUSTOM")
sndPlaySoundFromMemory arr(0), SND_ASYNC Or SND_MEMORY
End Sub
'-------------------------------------------------------------------------------------------------------------------
vb所有代码
'播放标志以及含义:
'SND_APPLICATION ' 用应用程序指定的关联来播放声音。
'SND_ALIAS 'pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
'SND_ALIAS_ID 'pszSound参数指定了预定义的声音标识符。
'SND_ASYNC =&H1& '用异步方式播放声音,PlaySound函数在开始播放后立即返回。
'SND_FILENAME 'pszSound参数指定了WAVE文件名。
'SND_LOOP =&H8&' 重复播放声音,必须与SND_ASYNC标志一块使用。
'SND_MEMORY &H4& '播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
'SND_NODEFAULT =&H2& '不播放缺省声音,若无此标志,则PlaySound在没到声音时会播放缺省声音。
'SND_NOSTOP= &H10 'PlaySound不打断原来的声音播出并立即返回FALSE。
'SND_NOWAIT '如果驱动程序正忙则函数就不播放声音并立即返回。
'SND_PURGE '停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
'SND_RESOURCE ' pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
'S
ND_SYNC= &H0 ' 同步播放声音,在播放完后PlaySound函数才返回。
'【以上代码我也没试过,只是到相关资源,不知道能不能用,自己调试下吧。。。不能就用我上面的吧】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论