begin process at 2012 05 28 10:26:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Multimédia

 > 

callback avec CALLBACK_WINDOW, waveOutOpen


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

callback avec CALLBACK_WINDOW, waveOutOpen

lundi 12 janvier 2009 à 12:31:04 | callback avec CALLBACK_WINDOW, waveOutOpen

csauvane

Bonjour,

Je suis en pleine réalisation d'un petit projet pour manipuler les fichiers wave. J'ai réussi à faire les fonctions nécessaires pour ouvrir le fichier et le lire avec les fonction waveOut... de l'API windows. J'ai maintenant un nouveau problème : j'ai mis en place une fonction de callback, mais elle ne s'exécute pas (le code me semble bon en comparant aux diverses sources que j'ai et la doc ne contredit pas ce code).

in the class (into .h file) :
Code :

public: // User declarations
        __fastcall TForm1(TComponent* Owner);
        BEGIN_MESSAGE_MAP
                MESSAGE_HANDLER(MM_WOM_DONE, TMessage, onWaveDone)
        END_MESSAGE_MAP(TForm)

in the .cpp file :
Code :

void TForm1::onWaveDone(TMessage& msg)  // as a waveClose() function
{
  // We only care about the WOM_DONE message.
  // When we get this message we know that the
  // sound has finished playing. We can then
  // unprepare the header and close the device.

  if (msg.Msg == WOM_DONE) {
    int Res = waveOutUnprepareHeader(projectWaveHandle, &projectWaveHeader, sizeof(WAVEHDR));
    Memo1->Lines->Add("Playback finished : header unprepared");
    CheckWaveError(Res);
    Res = waveOutClose(projectWaveHandle);
    Memo1->Lines->Add("Wave closed");
    CheckWaveError(Res);      
  }
}

Quand je lance waveOutOpen :
Code :

bool TForm1::openWave()
{

        // Query the device and see if it can play
        // this wave format. If so, open the device.
        int Res = waveOutOpen(&projectWaveHandle, WAVE_MAPPER, &projectFormat,  0, 0, WAVE_FORMAT_QUERY);      
        Memo1->Lines->Add("Device checked");            
        CheckWaveError(Res);
        
        // we have to use a callback function when we play, to detect the end
        // CALLBACK_WINDOW tells Windows that we want any wave-out messages sent to our form's window procedure
        // so the form will treat this callback with onWaveDone()
        
        if(waveOutOpen(&projectWaveHandle, WAVE_MAPPER, &projectFormat, 0, 0, CALLBACK_WINDOW)!= MMSYSERR_NOERROR)
        {
                                              return false;
        }
        return true;
}

enfin, la fonction waveOutWrite est exécutée juste après l'appel de la fonction openWave(). Je ne vois pas d'où ne viens pas l'exécution ??

Des idées ??

Merci
lundi 12 janvier 2009 à 16:21:20 | Re : callback avec CALLBACK_WINDOW, waveOutOpen

goodboy21

Réponse acceptée !
salut, vue ton code tu dois surement utiliser Cbuilder, a mon avis il fodrai que tu passes le Handle de ta fenêtre à la fonction pour recevoir ton callback
dc utilise ceci : waveOutOpen(&projectWaveHandle, WAVE_MAPPER, Handle, 0, 0, CALLBACK_WINDOW)
lundi 12 janvier 2009 à 16:30:26 | Re : callback avec CALLBACK_WINDOW, waveOutOpen

csauvane

Réponse acceptée !
Salut !

Oui ! la réponse est effectivement

waveOutOpen(&projectWaveHandle, WAVE_MAPPER, &projectFormat, MAKELONG(GetActiveWindow(), 0), 0, CALLBACK_WINDOW)

a la place de

waveOutOpen(&projectWaveHandle, WAVE_MAPPER, &projectFormat, 0, 0, CALLBACK_WINDOW)

donc, là ou tu met "Handle" : MAKELONG(GetActiveWindow(), 0)
        


Cette discussion est classée dans : we, window, callback, wave, res


Répondre à ce message

Sujets en rapport avec ce message

Problème de gestion hDC et hWnd. [ par vith17 ] Bonjour à tous,J'essaie de faire un écran de veille avec un cube qui tourne en utilisant OpenGL (je me sers des tutoriaux de Nehe et de Christian Code void Static Virtual CALLBACK ? [ par anarchysniper ] Je dois créer une classe Timer avec sorte de gestion évènementielle à la manière des "events" des classes .NET. Mais comme ces "events" doivent être m Faire une callback vers un exe dans un callback hook d'une dll [ par Suisse00 ] Salut :) J'ai créer un hook sur le clavier dans une DLL, dans le callback du hook j'aimerais faire un callback vers une fonctoin du fichier exe. J'ar Lire un wav en ressource [ par max33fr ] Bonjour, je souhaiterais lire un fichier wave grace à la fonction Playsound j'utilise PlaySound(TEXT("msg"), NULL, SND_RESOURCE | SND_ASYNC) dans mon Jouer un wave sous MFC [ par oulali ] Je voudrais jouer un simple fichier wave en C++. la fonction sndPlaySound n'étant pas compatible MFC.Merci d'avance. Probleme de décimales .. [ par nashoy ] Bonjour,Je commence en c++ et je commence à recontrer les premiers petits bloquages ; en effet, j'ai un petit problème avec les décimales :int b=3;int Fonctions callback [ par neodelphi ] Bonjour tout le monde ! J'aimerai savoir s'il est possible de passé en paramètre un pointeur de méthode en précisant une instance, je m'explique: so Passer un pointeur sur une instance à une fonction membre static ? [ par tintin72 ] Bonjour, j'ai un problème pour passer un pointeur sur une instance ou l'adresse de l'instance à une fonction callback Windows. Je m'explique J'ai créé tjr aide applications windows [ par chinois57 ] je suis desoler de denouveau vous enbeteer avec sa mais je ne comprend pas comment afficher un message dans une fenetre windows applicatios j'utilise Adresse d'une fonction CallBack dans une classe [ par Capa6T ] Bonjour, J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe. MaClasse.h : ------------ class MaClasse { protected


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales