• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [C++ BASS]Odtwarzacz

VPS Starter Arubacloud
0 głosów
610 wizyt
pytanie zadane 18 marca 2017 w C i C++ przez robertwe Gaduła (4,620 p.)
zamknięte 21 marca 2017 przez robertwe

Piszę sobie odtwarzacz muzyczny ale mam problem jak z OpenFileDialog przekazać FileName do

BASS_StreamCreateFile(false, tu trzeba przekazać tyle że przyjmuje tylko const void *file lub const wchar *file, 0, 0, BASS_MP3_SETPOS);

tyle że niewiem jak to zrobić proszę o pomoc...

Kod:

openFileDialog1->ShowDialog();
hMP3 = BASS_StreamCreateFile(false, /////Tu muszę przekazać"plik.mp3", 0, 0, BASS_MP3_SETPOS);
dwStreamLen = BASS_ChannelGetLength(hMP3, BASS_POS_BYTE);
fSecondsTotal = BASS_ChannelBytes2Seconds(hMP3, dwStreamLen);
BASS_ChannelPlay(hMP3, false);

 

komentarz zamknięcia: Znalazłem odpowiedź na moje pytanie tutaj: https://support.microsoft.com/pl-pl/help/311259/how-to-convert-from-system-string-to-char-in-visual-c
komentarz 18 marca 2017 przez robertwe Gaduła (4,620 p.)
dodam że wzoruję się na dokumentacji z tego linku http://www.un4seen.com/doc/#bass/BASS_StreamCreateFile.html

1 odpowiedź

+1 głos
odpowiedź 18 marca 2017 przez adrian17 Ekspert (348,220 p.)
wybrane 21 marca 2017 przez robertwe
 
Najlepsza
To jest C++/CLI? Jak tak to pewnie prościej będzie jak skorzystasz z wrappera .NETowego (i normalniejszego języka, jakim jest C#):

https://github.com/ManagedBass/Home/blob/master/docs/Getting%20Started/HelloBASS.md
1
komentarz 19 marca 2017 przez adrian17 Ekspert (348,220 p.)

Z przykładem tego co chcesz zrobić:

            var stream = Bass.CreateStream("FILE.mp3");
            long bytes = Bass.ChannelGetLength(stream);
            double seconds = Bass.ChannelBytes2Seconds(stream, bytes);
            Bass.ChannelPlay(stream);

 

komentarz 19 marca 2017 przez robertwe Gaduła (4,620 p.)
tyle że FILE.MP3 nie jest na stałe zdefioniowane potrzebuję aby użytkownik wybrał w dialogu otwierania pliku konkretny plik
1
komentarz 19 marca 2017 przez adrian17 Ekspert (348,220 p.)
            var dialog = new OpenFileDialog();
            if (dialog.ShowDialog() != DialogResult.OK)
                return;

            var stream = Bass.CreateStream(dialog.FileName);

 

komentarz 21 marca 2017 przez robertwe Gaduła (4,620 p.)

Udało mi się uzyskać to co próbuję w C++ ale dziękuje za propozycje w C#

Użyłem:

using namespace System::Runtime::InteropServices;

openFileDialog1->ShowDialog();
char* Str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(openFileDialog1->FileName);
hMP3 = BASS_StreamCreateFile(false, Str2, 0, 0, BASS_MP3_SETPOS);
dwStreamLen = BASS_ChannelGetLength(hMP3, BASS_POS_BYTE);
fSecondsTotal = BASS_ChannelBytes2Seconds(hMP3, dwStreamLen);
BASS_ChannelPlay(hMP3, false);

 

Podobne pytania

0 głosów
0 odpowiedzi 108 wizyt
pytanie zadane 11 grudnia 2019 w C# przez Scorpion_1982 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 1 maja 2016 w HTML i CSS przez BlvckFox Gaduła (4,240 p.)
0 głosów
1 odpowiedź 845 wizyt

92,832 zapytań

141,776 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...