Question

Je veux jouer son pendant que le programme en cours d'exécution en C ++. Je suis en utilisant le code suivant:

 void fighterplanesound() 
{PlaySound(TEXT("bombdrop.wav"), NULL, SND_FILENAME|SND_ASYNC);}

Je pensais que le drapeau SND_ASYNC devrait corriger ce problème, mais il n'a pas fait. Ce qui se passe est le programme se met en pause ou le contrôle ne se déplace pas jusqu'à ce que le son est fini de jouer. Comment puis-je jouer le son tandis que le programme continue de fonctionner. Pour clarifier, le programme est un programme de console Windows qui fonctionne dans une fenêtre MS-DOS.

Était-ce utile?

La solution 2

Ok. Ce que j'ai compris était que vous ne pouvez pas inclure la méthode PlaySound dans la fonction parce que même si le drapeau ASYNC était là, le contrôle devait exécuter pleinement la méthode PlaySound avant de revenir, alors ne le mettez pas dans la fonction moins qu'il n'y ait plus code dans la fonction (dans ce cas, le son est émis alors que le code est en cours d'exécution) ou en d'autres termes, le contrôle ne reviendra pas de la fonction jusqu'à ce que PlaySound terminé l'exécution et parce qu'il n'y a pas d'autre code dans la fonction d'exécution, contrôle attend jusqu'à ce procédé PlaySound est fini et passe ensuite.

Autres conseils

Que diriez-vous de jouer le son dans un autre thread?

En fait, j'ai eu le même problème sur mon application iOS. Vous savez le temps combien de temps faut-il pour lire votre fichier .wav. Vous pouvez créer une minuterie qui appelle votre méthode fighterplanesound () chaque période de l'heure de fin de votre fichier. Pas la meilleure solution, mais cela fonctionne pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top