63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270

DirectSound DirectX 8 for Visual Basic Type Library

18.08.2015, 14:12. Показов 6783. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Не для кого не секрет, что DirectSound – это инструмент, предназначенный для создания игр, воспроизведения звуковой информации, обработки звука. Насладиться возможностями интерфейса программирования, возможно, например, используя библиотеку DirectX 8 for Visual Basic Type Library. Данный компонент предоставляет VB-ориентированный механизм построения приложений, но не обновляется с выходом новой версии API, т.к. VB6 давно находится в глубоком тылу средств разработки приложений. Второй способ - использовать средство расширения языка – Declare statement, с помощью которого, можно импортировать функции библиотеки Dsound.dll, центральной из которых является метод DirectSoundCreate8(пример для восьмой версии API). Данная процедура, создает объект DirectSound, и возвращает указатель на интерфейс IDirectSound8. Далее, все методы вновь созданного объекта вызываются, как я понял, через этот указатель. Например, в документации для C++ можно встретить натацию типа: «IDirectSound8::SetCooperativeLevel». Где IDirectSound8 – ссылка на интерфейс, SetCooperativeLevel – метод объекта, на который ссылается интерфейс. Концептуально ситуация для VB не новая, но реализация весьма оригинальна. Возможно ли в VB напрямую взаимодействовать с функциями DirectX импортируя их? Как это сделать? Спасибо.

Вот небольшой пример текста, воспроизводящий различные звуковые файлы в формате .wav, создавая несколько вторичных буферов, написанный с подключением DirectX 8 for Visual Basic Type Library.
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Explicit
Private objDirectX As DxVBLibA.DirectX8, objDirectSound As DxVBLibA.DirectSound8, _
    objSoundBufferStart As DxVBLibA.DirectSoundSecondaryBuffer8, _
    objSoundBufferEnd As DxVBLibA.DirectSoundSecondaryBuffer8, objSoundBufferEntrance _
    As DxVBLibA.DirectSoundSecondaryBuffer8, objSoundBufferExit As DxVBLibA.DirectSoundSecondaryBuffer8, _
    objSoundBufferExclamation As DxVBLibA.DirectSoundSecondaryBuffer8, objSoundBufferFromResource As _
    DxVBLibA.DirectSoundSecondaryBuffer8, udtBufferFlags As DxVBLibA.DSBUFFERDESC
Private Sub cmdEnd_Click()
    Set objSoundBufferEnd = objDirectSound.CreateSoundBufferFromFile(App.Path & "\" & "Windows XP - завершение.wav", _
        udtBufferFlags)
    objSoundBufferEnd.Play CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT
End Sub
Private Sub cmdEntrance_Click()
    Set objSoundBufferEntrance = objDirectSound.CreateSoundBufferFromFile(App.Path & "\" & "Вход в Windows XP.wav", _
        udtBufferFlags)
    objSoundBufferEntrance.Play CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT
End Sub
Private Sub cmdExclamation_Click()
    Set objSoundBufferExclamation = objDirectSound.CreateSoundBufferFromFile(App.Path & "\" & "Windows XP - восклицание.wav", _
        udtBufferFlags)
    objSoundBufferExclamation.Play CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT
End Sub
Private Sub cmdExit_Click()
    Set objSoundBufferExit = objDirectSound.CreateSoundBufferFromFile(App.Path & "\" & "Выход из Windows XP.wav", _
        udtBufferFlags)
    objSoundBufferExit.Play CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT
End Sub
Private Sub cmdStartButton_Click()
    objSoundBufferStart.Play CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT
End Sub
Private Sub Form_Load()
    Set objDirectX = New DxVBLibA.DirectX8
    Set objDirectSound = objDirectX.DirectSoundCreate("")
    objDirectSound.SetCooperativeLevel Me.hWnd, CONST_DSSCLFLAGS.DSSCL_NORMAL
    udtBufferFlags.lFlags = CONST_DSBCAPSFLAGS.DSBCAPS_CTRLPAN Or CONST_DSBCAPSFLAGS.DSBCAPS_CTRLFREQUENCY _
        Or CONST_DSBCAPSFLAGS.DSBCAPS_CTRLVOLUME
    Set objSoundBufferStart = objDirectSound.CreateSoundBufferFromFile(App.Path & "\" & "Windows XP - запуск.wav", _
        udtBufferFlags)
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set objSoundBufferStart = Nothing
    Set objSoundBufferEnd = Nothing
    Set objSoundBufferExit = Nothing
    Set objSoundBufferEntrance = Nothing
    Set objDirectSound = Nothing
    Set objDirectX = Nothing
End Sub
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2015, 14:12
Ответы с готовыми решениями:

Работа с DirectX: Output Type of Class Library
Доброго времени суток. Я новичок в DirectX и C#. Скачал SharpDX с примерами. Эти примеры не запускаются. Выдаёт следующее сообщение: A...

Visual Basic & DirectX
Добрый день. Подскажите пожалуйста, где можно найти литературу насчет создания игр в визуал бейсик с использованием ДиректХ. Желательно, на...

Ошибка 'Run-time error 458. Variable uses an Automation type not supported in Visual Basic'.
Сделал из проекта файл .exe используя 'Compile into Native code'. На компьютерах, где есть VB все работает как надо. Где его нет требует...

5
Модератор
10028 / 3875 / 882
Регистрация: 22.02.2013
Сообщений: 5,819
Записей в блоге: 78
18.08.2015, 15:49
Можно.
0
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
18.08.2015, 17:25  [ТС]
Т.е необходимо создавать/подключать библиотеку типов с описанием com интерфейсов, и без неё никак?
0
Модератор
10028 / 3875 / 882
Регистрация: 22.02.2013
Сообщений: 5,819
Записей в блоге: 78
18.08.2015, 21:02
Лучший ответ Сообщение было отмечено IDK как решение

Решение

А что тебя смущает? После компиляции она не нужна и не требуется ещё наличие на целевой машине. Это просто описание интерфейсов и функций.
1
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
19.08.2015, 08:01  [ТС]
А, ну тогда другое дело. Не очень нравится, когда необходимо всё своё таскать с собой. Хотя вопрос решаемый на разных уровнях и сугубо технический.

Не по теме:

Где-то читал, что вы подключали DX11 к VB6. Как успехи? Из чистого любопытства.

0
Модератор
10028 / 3875 / 882
Регистрация: 22.02.2013
Сообщений: 5,819
Записей в блоге: 78
19.08.2015, 11:50
Цитата Сообщение от IDK Посмотреть сообщение
Где-то читал, что вы подключали DX11 к VB6. Как успехи? Из чистого любопытства.
Я собирался делать библиотеку Direct3D10 и 11, пока у меня стоит XP поэтому нет возможности это делать. Пока готово только D3D9 с многими вспомогательными функциями-аналогами из D3DX, написанными на VB6. Проблем с подключением не будет, можно в VB6 использовать хоть D3D12. DirectSound8 - это последняя версия.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2015, 11:50
Помогаю со студенческими работами здесь

Как правильно подключить Microsoft.DirectX.DirectSound
Пишу что то на подобие голосового чата, пытаюсь захватить звук с микрофона. Нашел в интернете пример работы со звуком с помощью using...

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия это лишь его улучшение. Я так понимаю что...

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Создаем Telegram бот на TypeScript с grammY
run.dev 05.04.2025
Одна из его самых сильных сторон Telegram — это интеграция ботов прямо в экосистему приложения. В отличие от многих других платформ, он предоставляет разработчикам мощный API, позволяющий создавать. . .
Паттерны распределённых транзакций в Event-Driven микросервисах
ArchitectMsa 05.04.2025
Современные программные системы всё чаще проектируются как совокупность взаимодействующих микросервисов. И хотя такой подход даёт множество преимуществ — масштабируемость, гибкость, устойчивость к. . .
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер