...
To se napisz. Polecam BASS.
VS2012 wywala errory przy korzystaniu z biblioteki Bass
Jakie błędy?
funckja PlaySound nie obsługuje typu *char
Przyjmuje LPCTSTR
, czyli w dzisiejszych czasach z włączoną obsługą unicode będzie to const wchar_t*
. Jeżeli chcesz podać ścieżkę jako literał to wystarczy napisać L"../plik.mp3"
. Jeżeli koniecznie masz ten char*
to zamienić go możesz za pomocą mbstowcs_s
.
#define UNICODE
#define _UNICODE
#include <WinSDKVer.h>
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#include <SDKDDKVer.h>
#include <Windows.h>
#include <Dshow.h>
#include <comip.h>
#include <comdef.h>
#pragma comment(lib,"strmiids.lib")
#ifdef NDEBUG
# pragma comment(lib,"comsuppw.lib")
#else
# pragma comment(lib,"comsuppwd.lib")
#endif
_COM_SMARTPTR_TYPEDEF(IGraphBuilder, IID_IGraphBuilder);
_COM_SMARTPTR_TYPEDEF(IMediaControl, IID_IMediaControl);
_COM_SMARTPTR_TYPEDEF(IMediaEvent, IID_IMediaEvent);
#define HR(co) { hr = co; if (FAILED(hr)) _com_raise_error(hr); }
void PlayMusic(const wchar_t *fileName)
{
HRESULT hr;
IGraphBuilderPtr filterGraph;
HR(filterGraph.CreateInstance(CLSID_FilterGraph));
IMediaControlPtr mediaControl;
HR(filterGraph.QueryInterface(IID_IMediaControl, &mediaControl));
IMediaEventPtr mediaEvent;
HR(filterGraph.QueryInterface(IID_IMediaEvent, &mediaEvent));
HR(filterGraph->RenderFile(fileName, NULL));
HR(mediaControl->Run());
LONG dummy;
HR(mediaEvent->WaitForCompletion(INFINITE, &dummy));
}
struct CCoInitialize
{
HRESULT hr;
CCoInitialize() { hr = CoInitialize(NULL); }
~CCoInitialize() { if (SUCCEEDED(hr)) CoUninitialize(); }
};
int main()
{
CCoInitialize coinit;
PlayMusic(L"c:\\Muzyka\\Anime mp3\\GITS\\GITS TV\\OST1\\09 - Lithium Flower.mp3");
}
Kwestię konwersji nazwy pliku z char*
do wchar_t*
pozostawiamy czytelnikowi.
Co do biblioteki BASS, to mam taki problem:
Błąd 1 error C2065: "hwnd" : niezadeklarowany identyfikator c:\users\użytkownik\documents\visual studio 2012\projects\clight\clight\main.cpp 4 1 cLight
Błąd 2 error C2065: "Stream" : niezadeklarowany identyfikator c:\users\użytkownik\documents\visual studio 2012\projects\clight\clight\main.cpp 5 1 cLight
Błąd 3 error C2065: "Stream" : niezadeklarowany identyfikator c:\users\użytkownik\documents\visual studio 2012\projects\clight\clight\main.cpp 6 1 cLight
Kod:
#include "bass.h"
int main(){
BASS_Init(-1, 44100, 0, hwnd, 0); // initialize default output device
Stream = BASS_StreamCreateFile(FALSE, "electric_angel.mp3", 0, 0, 0); // create a stream for the MP3 file
BASS_ChannelPlay(Stream, FALSE); // start playing it
return 0;
}
@Szczepancio zanim zaczniesz pisać odtwarzacz muzyki, grę i system operacyjny to proponuje poświęcić 3 dni na dowolny kurs programowania...
Już po 3 minutach wiedziałbyś że nie możesz używać zmiennych których nie zadeklarowałeś, vide to twoje hwnd...
Dobra, szczerze to już wiem jakie błędy popełniłem, i czuję się jak debil z tego powodu. Dla tych co nie wiedzą jak korzystać, choć jest to banalnie proste, wklejam kod:
//Inicjacja.
HSTREAM StreamHandle;
BASS_Init(-1, 44100, 0, 0, NULL);
//Funkcja:
void PlayMusic(char *FileName){
StreamHandle = BASS_StreamCreateFile(FALSE, FileName, 0, 0, 0);
BASS_ChannelPlay(StreamHandle, FALSE);
}
Akurat hwnd nie jest mi potrzebne, gdyż korzystam z konsoli :)