Otwarzanie wybranej przez użytkownika muzyki w tle asynchronicznie w pętli.
Ostatnio zmodyfikowano 2022-05-25 20:49
Masterofironfist Temat założony przez niniejszego użytkownika |
Otwarzanie wybranej przez użytkownika muzyki w tle asynchronicznie w pętli. » 2022-05-25 18:49:57 LPCWSTR PlayBackground( GAME & G1 ) { wstring tmp = L"play \""; tmp += G1.arrayOfUserDefinedMusic[ G1.selectedMusicNumber ].wstring(); tmp += L"\" repeat"; LPCWSTR MusicPathToFile = tmp.c_str(); return MusicPathToFile; }
int main() { GAME & G1; std::cin >> G1.selectedMusicNumber; mciSendString( PlayBackground( G1 ), 0, NULL, 0 ); mciSendString( L"play \"Music/HeatHazeShadow.mp3\" repeat", 0, NULL, 0 ); }
Witam mam problem z odtwarzaniem wybranej muzyki w tle za pomocą mciSendString ponieważ muzyka się nie odtwarza (aplikacja działa ale w głośnikach jest cisza) przy powyższym wariancie mimo iż rozwiązanie z C-stringiem działą bez problemu. Niemniej chce uzyskać działające to rozwiązanie z wyborem muzyki bo taki był plan że użytkownik może wrzucić muzykę do lokalnego folderu Music wewnątrz folderu z projektem w formacie MP3 i później ją wybrać z listy. Jeśli ktoś ma pomysł jak zrobic to samo ale np za pomocą innej biblioteki, nie ma problemu jestem otwarty na propozycje, byle tylko ta biblioteka obsługiwała format MP3. Powyższy kod jest częścią prostej gry konsolowej. Z góry dziękuje za pomoc. |
|
DejaVu |
» 2022-05-25 18:53:02 |
|
Masterofironfist Temat założony przez niniejszego użytkownika |
» 2022-05-25 19:02:13 Czytałem właśnie ten konkretny artykuł tylko z niego nie wynika dlaczego to konkretne rozwiązanie co ja mam nie funkcjonuje. Bo przecież nawet pod tym moim widać rozwiązanie które działa tylko ze ja chce uzyskać działąjące konkretne rozwiązanie które skorzysta z tego wektora filesystem::path co mam i zacznie odtwarzac wwybraną muzykę.
|
|
pekfos |
» 2022-05-25 19:38:40 LPCWSTR PlayBackground( GAME & G1 ) { wstring tmp = L"play \""; tmp += G1.arrayOfUserDefinedMusic[ G1.selectedMusicNumber ].wstring(); tmp += L"\" repeat"; LPCWSTR MusicPathToFile = tmp.c_str(); return MusicPathToFile; } Powinieneś zwracać std::wstring, nie LPCWSTR. Wartość zwrócona z c_str() jest poprawna tylko gdy oryginalny string wciąż istnieje i nie był zbyt zmodyfikowany, a tu jest zniszczony wraz z wyjściem z funkcji. Wywołaj c_str() dopiero na zwróconej wartości. mciSendString( PlayBackground( G1 ).c_str(), 0, NULL, 0 );
|
|
Masterofironfist Temat założony przez niniejszego użytkownika |
» 2022-05-25 20:49:31 Dziękuję za pomoc, zapomniałem że funkcja składowa c_str() zwraca wskaźnik do miejsca gdzie string jest składowany,i że jak przecież jak wstring jest niszczony to przecież to jak zwracać adres nieistniejącego budynku już jakiegos dziękuję za pomoc. |
|
« 1 » |