Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Visual C++] sndPlaySound - ścieżka do pliku

Ostatnio zmodyfikowano 2010-09-04 12:04
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[Visual C++] sndPlaySound - ścieżka do pliku
» 2010-09-03 21:46:11
Witam,
Otóż piszę w Visual C++ i w mmsystem (windows.h) jest taka funkcja do odtwarzania plików .wav. Ta funkcja wygląda tak:

C/C++
sndPlaySound( L"bam.wav", SND_ASYNC );

Czyli przed ścieżką do pliku muszę dodać 'L' :)
Problem pojawia się wtedy gdy chce jako sciezke podać np tekst z textbox'a. Kombinowałem na różne sposoby:

C/C++
sndPlaySound( Pole->Text, SND_ASYNC );
sndPlaySound( L( Pole->Text ), SND_ASYNC );
sndPlaySound( LPole->Text, SND_ASYNC );
sndPlaySound( L Pole->Text, SND_ASYNC );
//i kilka jeszcze z Convert::ToString :)
Wie ktoś może jak to można wykombinować? :D
P-21685
malan
» 2010-09-03 22:00:06
Musisz znaleźć sposób żeby String^ (Pole->Text) stało się LPCTSTR. Jak? W Twoim temacie odnoście zapisu/odczytu danych z pliku (z użyciem Windows Forms) bawiłem się w te konwersje.  Sprawdź to może.
P-21686
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-09-04 10:58:07
Dobra, doszedłem do takiego czegoś:

C/C++
#include <windows.h>
#include <mmsystem.h>
#pragma comment( lib, "winmm.lib" )
//....
String ^ sciezka = Pole->Text;
char textt[ 100 ];
strcpy( textt, sciezka.c_str() );
sndPlaySoundA( textt, SND_ASYNC );

Teraz przy sndPlaySound() nie ma żadnego problemu lecz jest przy .c_str()...
Error:
1>error C2228: left of '.c_str' must have class/struct/union

O co chodzi tym razem? Z błędu wynika że c_str musi mieć klase strukture i unie(?), a więc może nie dodałem jakiejś biblioteki przez include?
P-21703
malan
» 2010-09-04 11:26:09
Wiesz, że std::string i String^ to różne typy? c_str() należy do klasy std::string, a nie String^.
P-21706
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-09-04 11:36:56
Teraz już wiem.....
To jak to inaczej zrobić? Bo w Twoim kodzie (@malana) to sie gubię, najlepiej jakby ktoś dał gotowy kod ( wiem że to prawie nie możliwe ale może ktoś sie skusi :) ), Byłbym wdzięczny :D
P-21708
malan
» 2010-09-04 11:49:42
C/C++
String ^ foo = "";
TCHAR tcharFileName[ 256 ] = { '\0' };
//...
foo = Pole->Text;
//...  
for( int i = 0; i < foo->Length; i++ )
     tcharFileName[ i ] = Convert::ToChar( foo[ i ] );
//...
sndPlaySound( tcharFileName, SND_ASYNC );
?
P-21709
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-09-04 12:04:35
@malan - You are great! Dzięki wielkie, działa!! :)
P-21712
« 1 »
  Strona 1 z 1