Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 14:25   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию PlaySound

Здравствуйте. Как известно, PlaySound загружает звуковой файл и проигрывает его.

Но что, если данные файла уже загружены, и хранятся в элементарном массиве типа char[] - в таком случае, как можно проиграть файл из массива?
Артэс вне форума Ответить с цитированием
Старый 20.05.2010, 19:18   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Было... я отвечал...

ЧИТАЙТЕ СПРАВКУ! SND_MEMORY решит вашу проблему
p51x вне форума Ответить с цитированием
Старый 20.05.2010, 21:59   #3
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

попробовал так:
PlaySound(snd, NULL, SND_MEMORY);
где snd это данные файла ввиде массива char

Однако приложение крашает
(файл считал нормально, проверял)
Артэс вне форума Ответить с цитированием
Старый 21.05.2010, 11:04   #4
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Код:
 FILE * f = fopen("C:\\beep.wav","rb");
 fseek(f,0L,SEEK_END);
 int size = ftell(f);
 fseek(f,0,0);
 char * buf = new char[size];
 fread((void*)buf,size,1,f);
 fclose(f);

 PlaySound(buf,0, SND_MEMORY | SND_ASYNC);
все работает
подпись
liljon вне форума Ответить с цитированием
Старый 21.05.2010, 14:23   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Спасибо, теперь действительно получилось. Просто до этого я считывал файл по-байтово через fgetc(); а содержимое массива проверял путем записи его в новый файл...
Артэс вне форума Ответить с цитированием
Старый 03.06.2014, 00:55   #6
fair7
 
Регистрация: 07.03.2011
Сообщений: 7
По умолчанию

не получилось
Код:
//#include "stdafx.h"// KOMnU7UTCR B Visual Studio
#include <conio.h>
#include <windows.h>// CHA4A7A DO7JEH 5bITb <windows.h>
// A nOTOM <mmsystem.h>
#include <mmsystem.h>//sndPlaySound

#pragma comment(lib, "winmm.lib")// 5E3 -)TOrO HE PA5OTAET
#include <stdio.h>
#include <stdlib.h>
#define MAX 260
int main()
{
    char WindowsDirectory[MAX],nO7HbIunyTb[MAX];
        GetWindowsDirectoryA(WindowsDirectory, MAX);
        GetWindowsDirectoryA(nO7HbIunyTb,MAX);
short LenWindosDirectory=strlen(WindowsDirectory);
        //printf(WindowsDirectory);
  char nyTb[]="/Media/chord.wav";
  for(int i=0;nO7HbIunyTb[i+LenWindosDirectory]=nyTb[i];++i);

	
//    PlaySound(nO7HbIunyTb, NULL, SND_FILENAME);    // эта нет
    _getch();
    //PlaySoundA(nO7HbIunyTb, NULL, SND_FILENAME); // эта строчка работает
    _getch();
FILE * f = fopen(nO7HbIunyTb,"rb");
 fseek(f,0L,SEEK_END);
 int size = ftell(f);
 printf("size ===%i\n",size);
 fseek(f,0,0);
 char * buf = new char[size];
 fread((void*)buf,size,1,f);
 fclose(f);
PlaySoundA((char *)buf, 0, SND_ASYNC+SND_LOOP+SND_MEMORY);
 //PlaySoundA(buf,0, SND_MEMORY | SND_ASYNC);
  printf(nO7HbIunyTb);

delete []buf;
    
    return 0;
}
fair7 вне форума Ответить с цитированием
Старый 03.06.2014, 00:59   #7
fair7
 
Регистрация: 07.03.2011
Сообщений: 7
По умолчанию

а этот работает
Код:
//#include "stdafx.h"// KOMnU7UTCR B Visual Studio
#include <conio.h>
#include <windows.h>// CHA4A7A DO7JEH 5bITb <windows.h>
// A nOTOM <mmsystem.h>
#include <mmsystem.h>//sndPlaySound

#pragma comment(lib, "winmm.lib")// 5E3 -)TOrO HE PA5OTAET

#define MAX 260
int main()
{
    char WindowsDirectory[MAX],nO7HbIunyTb[MAX];
    GetWindowsDirectoryA(WindowsDirectory, MAX);
    GetWindowsDirectoryA(nO7HbIunyTb,MAX);
    short LenWindosDirectory=strlen(WindowsDirectory);
    //printf(WindowsDirectory);
    char nyTb[]="/Media/chord.wav";
    for(int i=0;nO7HbIunyTb[i+LenWindosDirectory]=nyTb[i];++i);
    
    
    //    PlaySound(nO7HbIunyTb, NULL, SND_FILENAME);    
    _getch();
    PlaySoundA(nO7HbIunyTb, NULL, SND_FILENAME);
    _getch();
    
    
    return 0;
}
fair7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PlaySound() Артэс Общие вопросы C/C++ 7 19.09.2010 20:18
трабла с PlaySound C-мэн Win Api 2 16.11.2008 18:35
PlaySound для 2 файлов JoanM Мультимедиа в Delphi 12 25.09.2008 17:05
PlaySound Kalewa-Uliss Мультимедиа в Delphi 3 22.09.2008 18:20
PlaySound delphin100 Мультимедиа в Delphi 9 31.03.2008 08:40