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

MFC Discussion :

PB de On_Message


Sujet :

MFC

  1. #1
    Membre r�gulier
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 8
    Par d�faut PB de On_Message
    Bonjour,

    Voila je vous explique mon probl�me.

    Je d�veloppe une application en MFC qui r�cup�re les donn�es d'un spectrom�tre. Ce spectrom�tre est fourni avec une librairie qui me renvoi un spectre dans un tableau de 2048 valeur par l'interm�diaire d'un Message pour me dire que les donn�es son pr�tes.

    Jusqu'� la pas de probl�me je r�cup�re bien mais donn�es dans ma fonction OnDataReady qui correspond bien prototype demand� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    LONG OnDataReady(UINT wParam,LONG lParam);
    Maintenant mon probl�me est de savoir comment faire pour que la fonction OnDataReady me pr�vienne que les donn�es sont stock�es et que je peux lancer le traitement.

    Voici mon code :

    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
    void CSpectre::Scan()
    {
     OnSingleScan(); //appelle la fonction qui lance l’acquisition du spectre
     
     //ici je voudrais avoir une solution qui me permette de rendre la main au
     //système et qui me prévienne que OnDataReady a reçu mais données a ce
     //moment la je reprendrai mon traitement. 
    ...
    ...
     
    }
     
    //fonction qui récupère le message et qui stocke le spectre dans ma classe
    LONG CSpectre::OnDataReady(UINT wParam,LONG lParam)
    {               
    	for (int i=0;i<=2047;i++)
    	{
    	m_arSpectre[wParam][i]=ooip.chdat[wParam][i];
    	}
    	OOI_BufferEmpty(hInstance,wParam);
    	return true;
    }
    Je vous remercie de bien vouloir m�aider car la je bloque je ne vois pas comment r�soudre ce probl�me.

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    tu pourrais envoyer un message priv� a ta classe fen�tre � partir du message
    OnDataReady (postmessage)
    voir faq:
    http://c.developpez.com/faq/vc/?page...PrivateMessage

  3. #3
    Membre r�gulier
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 8
    Par d�faut
    Salut,

    Je te remercie de ta r�ponse et je vais tester l'envoie d'un message priv�.
    Pour l'instant j'ai bricol� une fonction du style � DoEvents() en VB � avec un bool�en comme d�clencheur mais cette solution n�est pas a ma convenance.
    Peux-tu me dire ce que tu en pense ?


    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
    void CSpectre::Scan()
    {
    	m_bdataready=TRUE;
    	OnSingleScan();
    	while (m_bdataready==TRUE) //m_bdataready booléen mis à FALSE 
    		{                         //dans la function OndataReady
    		 DoEvents();
    		}
    }
     
    void CSpectre::DoEvents()
    {
    	MSG msg;
                 while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    	{
    	  TranslateMessage(&msg);
    	  DispatchMessage(&msg);
    	}
    }
    Pour ma part je vais voir laquelle des deux solutions a le temps d�ex�cution le plus correcte pour prendre une d�cision.
    Bonne journ�e et merci

Discussions similaires

  1. probl�me SendMessage en utilisant ON_MESSAGE
    Par mfcProgrammer dans le forum MFC
    R�ponses: 6
    Dernier message: 25/03/2010, 11h42
  2. R�ponses: 0
    Dernier message: 10/04/2008, 22h37
  3. R�ponses: 7
    Dernier message: 11/07/2006, 09h31
  4. [MFC] ON_MESSAGE envoyer des donnes.
    Par ousta dans le forum MFC
    R�ponses: 1
    Dernier message: 26/03/2006, 16h37

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