IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

fichier WAV, deja terminé?


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut fichier WAV, deja terminé?
    Bonjour,

    J'ai une question:

    Quand je joue un fichier WAV, qui est situé dans un fichier resource, en utilisant PlaySound(), comment est ce je peux savoir si le fichier WAV a deja terminé ?


    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <vcl\mmsystem.hpp>
     
    PlaySound(“ID_WAVE”, HInstance, SND_ASYNC | SND_RESOURCE);

    Merci,
    Freek.

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Qu'entend tu par deja terminé ?

  3. #3
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 137
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Kolukumbo
    Bonjour,

    J'ai une question:

    Quand je joue un fichier WAV, qui est situé dans un fichier resource, en utilisant PlaySound(), comment est ce je peux savoir si le fichier WAV a deja terminé ?


    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <vcl\mmsystem.hpp>
     
    PlaySound(“ID_WAVE”, HInstance, SND_ASYNC | SND_RESOURCE);

    Merci,
    Freek.
    Je suppose que tu veux executer une action une fois que le son a fini de jouer.

    Une solution consiste à remplacer SND_ASYNC par SND_SYNC.

    Ce qui fait que la fonction PlaySound ne rend la main qu'une fois le son joué entièrement.

    Une autre solution consiste à gérer le message MM_WOM_CLOSE qui est envoyé lorsqu'un wave a fini d'être joué

    Rémi

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    sinon, avec l'objet "MediaPlayer" tu as une methode "onNotify"
    qui te permet de faire des actions lors que ton fichier est fini

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Merci pour votre reponses. Excusez mois, mon francais n'est pas tres bien.

    Dans mon application il y a beaucoup de sons. Mais quand un nouveau son commence, je veux etre sur qu' il y a pas un autre son qui est encore en train de jouer. Alors avant de jouer un son je veux faire un 'check'.

    Le suggestion de utiliser MM_WOM_CLOSE me semble OK. Mais je ne sais pas beaucoup sur les messages Windows. Comment est ce que je pourrais faire cela?

    Merci,

    Freek

  6. #6
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 137
    Billets dans le blog
    5
    Par défaut
    Vu ce que tu dis je pense que la solution la plus simple est de remplacer SND_ASYNC par SND_SYNC. dans ta fonction PlaySound. Comme ça dès que le fichier a fini d'être joué PlaySound rend la main.

    En ce qui concerne les message je te conseille d'allez voir dans les FAQ et les tutoriel de Win32. C'est là que tu trouveras le plus d'info.

    A+

    Rémi

  7. #7
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    OK, mais je ne veux pas utiliser SND_SYNC parceque le programme doit continuer pendant le son. J'ai trouvé quelquepart comment il faut capturer les messages MM_WOM_CLOSE, MM_WOM_DONE et MM_WOM_OPEN.


    Malheureusement Ça marche pas!!


    C'est bizar: quand je remplace MM_WOM_DONE par WM_MOVE dans le code desous, le MessageBeep sonne quand la fenetre et deplacé. Mais avec MM_WOM_DONE et MM_WOM_CLOSE, rien du tout se passe après le WAV a fini de sonner.

    Est ce que quelq'un a une idee ?? J'ai l'air d'etre pret de la solution.

    Voila mon code complèt:

    Unit1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    #ifndef Unit1H
    #define Unit1H
    //----------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //----------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
     
    private:
      void OnWaveDone(TMessage& msg);                             //  <<<
     
    public:                  
      __fastcall TForm1(TComponent* Owner);
      BEGIN_MESSAGE_MAP                                           //  <<<
        MESSAGE_HANDLER(                                          //  <<<
          MM_WOM_DONE, TMessage, OnWaveDone)                      //  <<<
      END_MESSAGE_MAP(TForm)                                      //  <<<
    };
     
    //-----------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //-----------------------------------------------------
    #endif

    Unit1.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    #include <vcl.h>
    #pragma hdrstop
    #include <vcl\mmsystem.hpp>                     // Pour PlaySound()
    #include "Unit1.h"
    //------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //-----------------------------------------------------
     
    void TForm1::OnWaveDone(TMessage& msg)                       //  <<<
    {
      MessageBeep(0);
    }
    //----------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      PlaySound("Sound1", HInstance, SND_ASYNC | SND_RESOURCE);
    }
    //---------------------------------------------------
    Et bien sur j'ai ajouté un fichier .RC avec un WAV:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sound1 WAVE "noise1.wav"


    J'ai trouvé cette example ici:
    http://www.bcbjournal.org/articles/v...fb9e4e5c53228e

    [/url]

Discussions similaires

  1. [Audio]Java et fichiers Wav
    Par danael dans le forum Multimédia
    Réponses: 3
    Dernier message: 10/10/2005, 20h09
  2. Detecter si un Fichier est deja ouvert
    Par Didier Derain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/02/2005, 19h27
  3. Création d'un fichier .wav
    Par eag35 dans le forum MFC
    Réponses: 5
    Dernier message: 09/02/2005, 15h13
  4. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43
  5. [Kylix] jouer un fichier wav avec kilyx
    Par JlouisI dans le forum EDI
    Réponses: 1
    Dernier message: 14/06/2002, 02h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo