WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  Visual Basic
  Internet Explorer from VB

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Internet Explorer from VB
pvcic опубликован 31-12-2001 00:52 MSK   Click Here to See the Profile for pvcic   Click Here to Email pvcic  
Hello. How to open Internet Explorer with my URL, like "www.sources.ru", from VB6.0 in new window. Thanx!
pvcic опубликован 31-12-2001 12:56 MSK     Click Here to See the Profile for pvcic  Click Here to Email pvcic     
And another question:
how to play .WAV file more than one time (in VB 6.0 of course!), like repeat. Thanx!
Vasya2000 опубликован 31-12-2001 08:47 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
DirectX7: Введение в DirectSound

Ну зачем тебе сдался этот DirectSound? У тебя же есть Windows API-функции и MCI32.OCX. Ааа! 3D-сурроунда захотелось или несколько звуков одновременно воспроизводить? Ну тогда ладно - слушай дальше. Для начала нам нужны библиотеки DirectX версии 7(не SDK) или выше. Взять можно с сайта Microsoft. Ну что? Достал DirectX? Настроение хорошее? Ну тогда вперед, как говорится: "За работу, начальник!".
Создадим новый проект (Standard EXE). Подключим DirectX к проекту: "Project - References - DirectX 7 for Visual Basic Type library". Полный путь на всякий случай: "C:\WINDOWS\SYSTEM\dx7vb.dll".

Вот мы и сделали первый шаг. Теперь объявим в General Declarations формы:

Dim dx as New DirectX7 'объявляем об использовании DirectX7
Dim ds As DirectSound 'объект DirectSound

Теперь мы создадим несколько звуковых буферов: для того чтобы воспроизвести одновременно три звука нам надо создать три буфера и т.д. Мы объявим два:

Dim dsbuffer1 As DirectSoundBuffer
Dim dsbuffer2 As DirectSoundBuffer

Будем инициализировать? Я не слышу! Громче! Совсем другое дело :) Для инициализации создадим небольшой Sub InitSound:

Sub InitSound()
On Local Error Resume Next 'чтобы не вылетал

Set ds = dx.DirectSoundCreate("") 'включаем DirectSound

If Err.Number <> 0 Then
Здеся ставим код, который должен выполняться, если у человека DirectX-а нету или он старый.
End If

ds.SetCooperativeLevel Form1.hWnd, DSSCL_NORMAL 'устанавливаем режим работы, проигрываем на Form1 и с NORMAL priority.

!! В большинстве случаев можно обойтись DSSCL_NORMAL. Другие понадобятся только для супер сложных задач. В частности, DSSCL_WRITEPRIMARY будет не лишним при одновременной записи и воспроизведении. А то будет заикаться!!

Dim bufferDesc As DSBUFFERDESC 'необходимые переменные для
Dim waveFormat As WAVEFORMATEX 'организации простого wave-буфера

bufferDesc.lFlags = DSBCAPS_CTRLPAN 'ставим флажок буферу, что будем баловаться с PAN-звуком, т.е. с плавным звуком.

Стоит замолвить словечко и о других членах DSBCAPS. Попробуйте поставить вместо CTRLPAN CTRL3D. Однако такие навороты будут излишними, т.к. обычно у пользователей две колонки. А иногда одна... наушники... вообще звука нет. Так что, как говорил Козьма Прутков: "Нельзя объять необъятное.", да я и не буду рассказывать про все и посоветую вам самим сходить в "Object Browser" и поискать в DxVBLib "DSBCAPS". Тут дело опыта.

Загрузим-ка в буферы данные:

Set dsbuffer1 = ds.CreateSoundBufferFromFile("Shoot.wav", bufferDesc, waveFormat)
If Err.Number <> 0 Then
Что делать, если файл не существует или повреждён.
End If

Set dsbuffer2 = ds.CreateSoundBufferFromFile("Hit.wav", bufferDesc, waveFormat)
If Err.Number <> 0 Then
Аналогичный код обработчика ошибок.
End If
End Sub
Ну вот - мы готовы к пробному воспроизведению звука через DirectSound. Вы не устали? Сходите на кухню - покушайте супчик... Приятного аппетита! Ну а с другой частью аудитории мы пойдём дальше. А дальше мы создадим небольшой Sub:

Sub PlayPanned(Buffer As DirectSoundBuffer, Position As Integer) 'Buffer - заданные выше файлы для воспроизведения, Position - позиция в колонках. Благодаря смене этого параметра можно сделать эффект звука из одной колонки в другую.
Buffer.SetPan Position

!! Position может быть и с "-" и с "+", зависит это от позиции в колонках. Т.е. идеальным балансом будет 0 !!

Buffer.Play 0 'Воспроизводим звук. Параметр 0 говорит о том, что звук будет воспроизводиться один раз. Если поставить параметр 1, то звук будет постоянно повторяться.
End Sub

Ну вот вроде бы и всё. Ааа! Использование? Очень просто: PlayPanned dsbuffer1, 0. Надеюсь, что не утомил вас и научил чему-то полезному.

AlexR опубликован 31-12-2001 13:54 MSK     Click Here to See the Profile for AlexR  Click Here to Email AlexR     
Про проигрывание звука писал уже. В теме про midi-файлы посмотри.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.