Четверг, 06.02.2025, 16:30

  Сайт проекта StreamLive 3.145.191.247

Вы вошли как Гость | Группа "Гости" | RSS

Меню

Категории
С# [55]
VB.net [0]
VB6 [1]

Реклама

Nothing

 
Главная » Статьи » Программирование » VB6 [ Добавить статью ]
Работа со звуком в VB
В этой статье я нашёл очень много полезного и интересного!!! Надеюсь и остальным читателям она покажется не менее интересной! А теперь статья (всё, что ниже, написано автором):

Итак, код модуля для проигрывания звука:
'------------------------------------------------------------
' Работа со звуком
'------------------------------------------------------------

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
Всего комментариев: 0

Log in

Block title

Copyright sumrak © 2025