Форум программистов, компьютерный форум CyberForum.ru

Воспроизведение нескольких звуков одновременно - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема с COM сервером из EXE http://www.cyberforum.ru/cpp-beginners/thread496784.html
У меня есть приложение OLE-сервера(exe) на базе MFC. MFC-класс COleServerItem поддерживает 3 интерфейса-IUnknown, IDataObject и ещё какой-то, не помню точно. Когда я определяю и добавляю свой интерфейс(скажем, ITest) серверу в класс COleServerItem, всё нормально компилируется и запускается, но при попытке получить из клиента указатель на ITest через IUnknown->QueryInterface() он всё время...
C++ Ошибка Unhandled Exception, Access Violation Странная проблема, на самом деле.. пишу следующее: #include <fstream.h> ... ofstream FileStream('data.txt');при выполнении пишет Unhandled Exception, Access Violation к чему бы это? подскажите, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread496779.html
нужен аналог unloadfile php - функции но на С++ C++
как с помощью среды IIS 5.x и VC 6.0 осуществить закачку на IIS сервер файла форма такого вида: <FORM ACTION='http://127.0.0.1/ftproot/res.exe' ENCTYPE='multipart/form-data' METHOD=POST> <INPUT TYPE=TEXT value='hello word' NAME=submitter> <INPUT TYPE=FILE value='G:
Как написать тестовую программу? C++
Как написать тестовую программу на языке Turbo Pascal или СИ++ ?
C++ Как вывести enter в Edit Control http://www.cyberforum.ru/cpp-beginners/thread496646.html
Как реализовать переход на новую строку в Edit Control в MFC? Делаю так: m_str='Привет Пока'. Выводит ANSI символ enter'а.
C++ Откликнитесь! Требуется программист С++ Лидирующей компании, работающей в области продажи широкого спектра программного обеспечения (авторизованный партнер Microsoft, Oracle, IBM, Borland, Novell) требуется программист. Основная обязанность: написание программ на С# и MS-SQL. 1. Написание компонент для ERP системы на С#. 2. Написание хранимых процедур на MS-SQL. Требования: 1. Опыт постановки задач, опыт работы в команде. 2.... подробнее

Показать сообщение отдельно
John Paramol
Сообщений: n/a
06.07.2011, 12:32     Воспроизведение нескольких звуков одновременно
Вам, скорее всего, подойдут следующие четыре функции, работающие со средой Media Control Interface (MCI)
(интерфейс управляющих сообщений)
C++
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
48
49
50
//-------------------------------------------------------------------
#include <windows.h>
#include <mmsystem.h>
//-------------------------------------------------------------------
UINT MCIOpen(LPSTR FileName)
{
   MCI_OPEN_PARMS mciOpen;
   memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
   mciOpen.lpstrDeviceType = (LPSTR)'waveaudio';
   mciOpen.lpstrElementName = (LPSTR)FileName;
   mciOpen.lpstrAlias = NULL;
   DWORD flags = MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT;
   DWORD rc = mciSendCommand(0, MCI_OPEN, flags, 
              (DWORD)(LPVOID)&mciOpen);
   if (rc)
   {
     Beep(1000,100);
     return 0;
   }
   return mciOpen.wDeviceID;
}
//-------------------------------------------------------------------
void MCIClose(UINT wDeviceID)
{
  MCI_GENERIC_PARMS mcigen;
  DWORD rc = mciSendCommand(wDeviceID, MCI_CLOSE, MCI_WAIT, 
             (DWORD)(LPMCI_GENERIC_PARMS)&mcigen);
  if (rc) Beep(1000,100);
}
//-------------------------------------------------------------------
DWORD MCIPlay(UINT wDeviceID)
{
  MCI_PLAY_PARMS mciPlayParms;
  DWORD rc;
  rc = mciSendCommand(wDeviceID, MCI_SEEK,
       MCI_WAIT|MCI_SEEK_TO_START, NULL);
  rc = mciSendCommand(wDeviceID, MCI_PLAY, 0, 
       (DWORD)(LPVOID)&mciPlayParms);
  return rc;
}
//-------------------------------------------------------------------
DWORD MCIStop(UINT wDeviceID)
{
  MCI_GENERIC_PARMS mcigen;
  DWORD rc = mciSendCommand(wDeviceID, MCI_STOP, MCI_WAIT,
            (DWORD)(LPMCI_GENERIC_PARMS)&mcigen);
  if (rc) Beep(1000,100);
  return rc;
}
//-------------------------------------------------------------------
использовать их можно к примеру так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
main()
{
  UINT ID1 = MCIOpen('1.wav');
  UINT ID2 = MCIOpen('2.wav');
  MCIPlay(ID1);
  MCIPlay(ID2);
  Sleep(5000);
  MCIStop(ID1);
  MCIStop(ID2);
  MCIClose(ID1);
  MCIClose(ID2);
  return 0;
}
но похоже, что залупление этот интерфейс не поддерживает,
а с интерфейсом управляющих строк я не работал (там оно поддерживается).
Так что Вы можете по-прежнему пользоваться PlaySound с залуплением, и в фоне использовать эти функции.
например:
C++
1
2
3
4
5
6
7
8
9
10
main()
{
  PlaySound('1.wav',NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
  UINT ID2 = MCIOpen('2.wav');
  MCIPlay(ID2);
  Sleep(5000);
  MCIStop(ID2);
  MCIClose(ID2);
  return 0;
}
А вообще в mmsystem.dll есть много интересных функций высокого и низкого уровней.
Надо будет - кину примеры.
Удачи
 
Текущее время: 01:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru