|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 18.01.2006, 18:11 Titel: Frage zu ExitThread |
|
|
Hey,
ich bin dabei mir einen kleinen Mp3-Player zu bauen,
der bei Computerspielen im Hintergrund laufen soll.
Verwiklichen tue ich das mit mci.
Hier der wichtigste Code:
CPP: | bool CDirectAudio::MP3Playing(void)
{
return m_mp3Playing;
}
DWORD WINAPI CDirectAudio::PlayMp3( LPVOID lpParam )
{
mciSendString("open file.mp3 alias fileid", NULL, 8, NULL);
mciSendString("play file.mp3 wait", NULL, 0, NULL);
mciSendString("close file.mp3", NULL, 0, NULL);
return 0;
}
void CDirectAudio::StartMP3Player(void)
{
GetExitCodeThread(
CreateThread(
NULL,
0,
PlayMp3,
0,
0,
0),
&m_mp3dwThreadExitCode);
m_mp3Playing = true;
}
void CDirectAudio::StoppMP3Player(void)
{
if(m_mp3dwThreadExitCode) ExitThread(m_mp3dwThreadExitCode);
m_mp3Playing = false;
} |
Was dabei nicht funktioniert ist ExitThread, womit ich den Player beenden will.
Wenn die Funktion aufgerufen wird bricht das Programm (fast) komplett ab ...
Muss man bei ExitThread zusätzlich noch etwas beachten !? _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 18.01.2006, 18:24 Titel: |
|
|
In der MSDN gibt es mehr als 5 Samples nur über Threads Schnupper da doch mal rein oder wenn Du den Petzold hast (sollte man haben ) steht auch über ein ganzes Kapitel drin.
Eine Frage habe ich jedoch: Wozu setzt Du einen Alias wenn Du diesen sowieso nicht benutzt? und ich sehe keinen MCI-Command String für das Beenden des Abspielens. Du kannst kein MCI einfach so "vernichten". Du musst das wenn schon Ordnungsgemäß deaktivieren. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 18.01.2006, 21:27 Titel: |
|
|
Danke Danke
Du hast mich auf den richtigen Lösungsansatz gebracht -
Und Msdn ist mir heute von einer neuen Seite erschienen
Ich habe das Problem jetzt komplett ohne Threads umgesetzt und läuft ganzgut
Eins stimmt aber noch nicht (hat aber nichts mit mci zu tun)
CPP: | void CDirectAudio::StartMP3Player(void)
{
if(m_mp3PlayListOpen && m_vMP3Files.size()>0)
{
FilePath__MCI = m_vMP3Files[ (rand()%m_vMP3Files.size())];
FilePath__MCI = "open \""+FilePath__MCI+"\" alias fileid";
mciSendString(FilePath__MCI.c_str(), NULL, 8, NULL);
mciSendString("play fileid from 0", NULL, 0, NULL);
m_mp3Playing = true;
}
} |
Hier bringt rand() zwar beim ersten aufruf eine zufällige Zahl, anschließend aber immer die selbe ...
Obwohl ich zu begin
srand(timeGetTime());
verwendet habe ... normal sind die Zahlen auch immer zuifällig -- gibt's dafür einen bestimmten Grund ? _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 19.01.2006, 07:06 Titel: |
|
|
Hi,
dieses Beispiel stammt aus der MSDN. Es ist so abgeändert das es Zahlen zwischen 0-9 einschließlich ausgibt.
CPP: | /* RAND.C: This program seeds the random-number generator
* with the time, then displays 10 random integers.
*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main( void )
{
int i;
/* Seed the random-number generator with current time so that
* the numbers will be different every time we run.
*/
srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand()%10 );
}
|
Wenn du anstelle von %10 dein %m_vMP3Files.size() einfügst bekommst du deine Zufallszahlen.
MFG Chriss |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 04.02.2006, 18:12 Titel: |
|
|
Aber genau so hatte ich das ja auch gemacht .. wie der Quellcode in meiner letzten Post zeigt.
Ich weiß auch nicht woran das liegen soll ... _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
proggaholic Junior JLI'ler
Alter: 36 Anmeldedatum: 07.05.2005 Beiträge: 85 Wohnort: Heap Medaillen: Keine
|
Verfasst am: 03.05.2006, 16:51 Titel: |
|
|
Bei uns im Geschäft hatte ein Projektteam ein ähnliches Problem, die waren auf die ersten Zufallszahlen angewiesen. Der Kollege, der das Problem zu beheben versuchte, hat eine Schleife eingerichtet, die in etwa so aussah:
CPP: | srand(time(NULL));
for (unsigned int i = 0; i < 10; i++)
{
// Hier wird die Zufallszahl ueberhaupt nicht verwendet
rand();
}
// Erst nach dem 11. "rand()"-Aufruf wird die Zufallszahl verwendet
int meineZufallszahl = rand();
|
Damit hat er die ersten 10 Zufallszahlen praktisch ignoriert und erst die 11. wirklich genutzt, die dann meines Wissens nach komplett zufällig war. Ob das die beste Möglichkeit ist, weiss ich nicht, aber vielleicht hilft es dir ja fürs erste.
mfg
proggaholic |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 04.05.2006, 22:34 Titel: Hey |
|
|
Danke für deine Antwort
Lag aber nicht an dem rand() bei mir wie ich festgestellt habe.
Ist etwas her, desswegen erinnere ich mich nicht zu 100%, hatte aber was damit zu tuen, das elemente aus einer Liste nicht vorhanden waren -> Eine komplett andere Fehlerquelle.
PS: Dein Lösungsansatz wirkt sehr bizarre auf mich ^^ - ich bin mir sicher das man auch eine weniger gefriemelte Lösung findet _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|