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 :

MFC appel fonctions


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut MFC appel fonctions
    Voila, j'ai un probleme a l'appel d'une fonction.

    J'ai créer un bouton START qui appelle une fonction.
    Pour arretter cette fonction, qui tourner initialement en mode console, je devais faire Ctr+C.

    Ici j'ai créer un autre bouton STOP. Une fois ke je clique dessus, il met un entier int capt_stop à la valeur=1.

    J'ai fais ds ma fonction un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    do
    {
    .......
    }
    while(capt_stop!=1)
    Je pensai que cela permettrai d'arretter la fonction.

    Ce qui se passe, c'est qu'une fois que j'appui sur START, ma fonction est appellée, fonctionne bien mais ne s'arrette plus et je n'ai plus la main sur mes controles.

    Je suis donc obliger de faire Ctr-Alt-Supr ce qui n'est pas top!!

    Si vs avez des idées. Peut être que c'est un probleme connu ds l'appel de fonctions.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    *Dans l'appli sous DOS placer un GetMessage qui va capter un message personnalise avec WM_USER

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #define WM_MON_MSG WM_USER+100
    MSG msg;
    do 
    { 
    GetMessage(&msg,NULL,0,0);
    if(msg->message==WM_MON_MSG)break;
    ....... 
    } 
    while(capt_stop!=1)

    *dans l'appli graphique avec bouton, lorsqu'on clic sur le bouton , obtenir le handle HWND de l'appel DOS et avec SendMessage ou PostMessage envoyer un message perso.

    Sinon il ya plus sophistique avec des EVENT , semaphore threads et compagnie...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    je n'ai pas vraiment compris ceci

    *dans l'appli graphique avec bouton, lorsqu'on clic sur le bouton , obtenir le handle HWND de l'appel DOS et avec SendMessage ou PostMessage envoyer un message perso.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    J'ai trouvé ca dans l'aide MSDN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    BOOL bRet;
     
    while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
    { 
        if (bRet == -1)
        {
            // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }
    }
    Il faut donc que j'essai d'inclure ca dans ma fonction appellé?

    int capt()
    {

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    do
    {
    /* Retrieve the packets */
    while((res = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0)  
     
    {	
    if(res == 0)
    continue;			
     
    }
    while (capt_stop!=1);
    pcap_close(adhandle);    
    return 0;
    }
    Pour la gestion de ma boite de dialogue j'ai ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void CDlgCapture::OnOK() 
    {
    capt();
    CDialog::OnOK();
    UpdateData(TRUE);
     
    }
     
    void CDlgCapture::OnSTOP() 
    {	
    capt_stop=1;	
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Que doit on mettre comme paramettre dans FindWindow?

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,
    je reprends .
    que fait cette fonction ?
    un traitement ?
    si c'est le cas un thread peut etre approprié voir faq:
    http://c.developpez.com/faq/vc/?page...keWorkerThread

    sinon une boucle qui tourne dans une interface , géle l'interface puique les messages windows ne sont plus traités .
    solution possible mettre une pompe a message dans la boucle:
    http://c.developpez.com/faq/vc/?page...rk#PumpMessage

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Ca à l'air de marcher avec une pompe a message mais je ne comprends pas vraiment comment ca marche

    Je comprends pas comment je peux faire communiquer ma fonction avec mon IHM.

    Ma fonction m'affichait des résultats en mode console avec printf(....)

    La j'ai une IHM avec un Splitter, j'arrive a ecrire du texte statique avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDC->TextOut(200,10,"VISUALISATION DES TRAMES CAPTUREES");
    dans OnDraw;

    mais j'aimerai bien afficher des résultats que me fournit ma fonction appellé!

    Je vais chercher un peu plus

    Merci

  8. #8
    mat.M
    Invité(e)
    Par défaut Re: MFC appel fonctions
    Citation Envoyé par beb30
    Voila, j'ai un probleme a l'appel d'une fonction.

    J'ai créer un bouton START qui appelle une fonction.
    Pour arretter cette fonction, qui tourner initialement en mode console, je devais faire Ctr+C.
    ESt-ce que c'est possible d'être précis parce qu'on se mélange les pinceaux : cette fonction elle fait partie d'un programme console à part entière ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MFC - Appel de fonction en mode Unicode ?
    Par Erakis dans le forum MFC
    Réponses: 8
    Dernier message: 14/11/2007, 13h07
  2. [MFC] Appel Fonction OnEraseBkgnd
    Par bletz dans le forum MFC
    Réponses: 4
    Dernier message: 13/10/2005, 14h03
  3. Réponses: 7
    Dernier message: 10/10/2005, 14h31
  4. [MFC] Appel d'une dialog
    Par mac07 dans le forum MFC
    Réponses: 6
    Dernier message: 23/12/2003, 17h52
  5. Appel fonction assembleur en C
    Par grandjouff dans le forum C
    Réponses: 6
    Dernier message: 07/12/2003, 20h43

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