На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Internet Explorer from VB
    Hello. How to open Internet Explorer with my URL, like "www.sources.ru", from VB6.0 in new window. Thanx!
      And another question:
      how to play .WAV file more than one time (in VB 6.0 of course!), like repeat. Thanx!
        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. Надеюсь, что не утомил вас и научил чему-то полезному.
          Про проигрывание звука писал уже. В теме про midi-файлы посмотри.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0294 ]   [ 16 queries used ]   [ Generated: 2.05.24, 02:38 GMT ]