|
В этой статье я нашёл очень много полезного и интересного!!! Надеюсь и остальным читателям она покажется не менее интересной! А теперь статья (всё, что ниже, написано автором):
Итак, код модуля для проигрывания звука: '------------------------------------------------------------ ' Работа со звуком '------------------------------------------------------------
Option Explicit
' Функции и константы для проигрывания звуков. Декларации. Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Declare Function sndStopSound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszNull As Long, ByVal uFlags As Long) As Long
' Звук воспроизводится синхронно, и функция не возвращает _ управления до окончания его проигрывания. Global Const SND_SYNC = &H0
' Звук воспроизводится асинхронно, функция возвращает управление _ сразу после начала воспроизведения. Global Const SND_ASYNC = &H1
' Для прекращения воспроизведения необходимо вызвать sndPlaySound() _ c NULL в качестве аргумента-имени файла
' Если указанный файл отсутствует, функция неделает ничего. Global Const SND_NODEFAULT = &H2
' Параметр SoundName указывает на звук, образ которого уже _ находится в оперативной памяти. Global Const SND_MEMORY = &H4
' Воспроизведение звука повторяется до тех пор, пока не будет _ вызвана функция sndPlaySound() c NULL в качестве Global Const SND_LOOP = &H8
' параметра IpszSoundName. Для работы этого флага необходимо _ установить также флаг SND_ASYNC.
' Если звук уже воспроизводится, функция не прерывает его _ воспроизведение, а немедленно возвращает FALSE. Global Const SND_NOSTOP = &H10
Function NoiseGet(ByVal FileName) As String '------------------------------------------------------------ ' Загрузка звука в строковую переменную. '------------------------------------------------------------ Dim buffer As String Dim f As Integer Dim SoundBuffer As String
On Error GoTo NoiseGet_Error
buffer = Space$(1024) SoundBuffer = "" f = FreeFile Open FileName For Binary As f Do While Not EOF(f) Get #f, , buffer ' Load in 1K chunks SoundBuffer = SoundBuffer & buffer Loop Close f NoiseGet = Trim$(SoundBuffer) Exit Function
NoiseGet_Error: SoundBuffer = "" Exit Function End Function
Sub NoisePlay(SoundBuffer As String, ByVal PlayMode As Integer) '------------------------------------------------------------ ' Проигрывание звука загруженного в память с помощью функции ' NoiseGet(). '------------------------------------------------------------ Dim retcode As Integer
If SoundBuffer = "" Then Exit Sub
' Stop any sound that may currently be playing. retcode = sndStopSound(0, SND_ASYNC) ' код для прекращения звука
' PlayMode should be SND_SYNC or SND_ASYNC ' проигрывание звука retcode = sndPlaySound(ByVal SoundBuffer, PlayMode Or SND_MEMORY) End Sub
'------------------------------------------------------------ ' Примеры применения '------------------------------------------------------------ ' ' Определение и загрузка звука ' wavFinal = NoiseGet(App.Path & "\" & "finalrealty.wav") ' ' код для прекращения звука (Мало ли, играл раньше) ' NoisePlay 0, SND_ASYNC ' Проигрывание звука ' NoisePlay wavFinal, SND_ASYNC
Хочу обратить ваше внимание на константы. Этот модуль я нашел в исходных текстах какой-то программы, взятой на одной из страничек в Интернете, немножко его подкорректировал и написал все комментарии.
Источник: |
Категория: VB6 | Добавил: Sumrak (14.11.2010)
| Автор: E W
|
Просмотров: 4487 | Комментарии: 0
| Теги:
| Рейтинг: 0.0/0 |
|
|
|