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++ Discussion :

Créer et envoyer évenement.


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Points : 22
    Points
    22
    Par défaut Créer et envoyer évenement.
    Bonjour,

    Je travaille actuellement sur une communication entre un serveur et une IHM.
    Quand mon serveur reçoit du client une lettre qui signifie une action bien précise. Par exemple, le serveur reçoit la lettre G, cela signifie que le client envoi la lettre G.

    Je voudrais donc recevoir sur mon ihm cet événement, quand l'ihm le reçoit, cela affiche un message box ou un popup. Pour le message box ou le popup, aucun soucis je sais faire, mais pour l’événement non hélas.

    Donc, comment faire pour envoyer l’événement et le recevoir sur l'ihm ?

    Voici la partie de mon code pour le serveur, qui reçoit la lettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    switch(signal)
    {
      case 'G':
      case 'I':
    	switch(signal)
    	{
    	   case 'G':
    	   cout << "Appel via le bouton." << endl;
               break;
    	   case 'I':
    	   cout << "3 essais infructueux." << endl;
    	   break;
    	}
    }
    Donc normalement, après le cout "appel via le bouton", je devrais envoyer l’événement.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Déjà, le fait d'effectuer une sortie standard sur une partie serveur, c'est plutot moyen-moyen...

    On peut comprendre que cela soit utilisé en période de développement vu que l'on va faire tourner le serveur en local pour l'essayer, mais il vaut vraiment mieux éviter de le faire une fois en production : on n'est jamais sur que la sortie console soit active sur le serveur (ni meme que qui que ce soit y sera attentif )

    Ceci dit, je présumes que tu as créé une hiérarchie d'événement, proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Event
    {
        public:
            Event(){}
            virtual ~Event() = 0;
    };
    class Event1 : public Event
    {
        /* ... */
    };
    class TreeUnsuccessAtempEvent : public Event
    {
        /* ...*/ 
    };
    et que le code se trouve dans une fonction proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Event * processSignal(Signal const & signal)
    {
    }
    Tu peux donc générer tes événements "à la volée, sous une forme proche de
    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
    Event * ProcessSignal(Signal const & signal)
    {
        char value = signal.value();
        Event * event = 0;
        switch(value)
        {
            case 'G':
              event = new Event1(/* paramètres éventuels */);
              break;
          case 'I':
              event = new TreeUnsuccessAtempEvent (/* paramètres éventuels */);
         /*...*/
        }
        return event;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Points : 22
    Points
    22
    Par défaut
    Pour l'envoi de l'évènement, j'utilise cette ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HANDLE hEvent_G = CreateEvent(NULL,TRUE,FALSE,L"EVENT_G");
    Ensuite, côté ihm, j'utilise ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HANDLE hEvent_G = OpenEvent(EVENT_ALL_ACCESS,FALSE,L"EVENT_G");
    	WaitForSingleObject(hEvent_G,0);
    	if(hEvent_G != NULL)
    	{
    		MessageBox("dsfdsf");
    	}

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Points : 22
    Points
    22
    Par défaut
    Côté serveur, j'ai mis ces lignes de codes, dans le case 'G':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {HANDLE hEvent_G = CreateEvent(NULL,TRUE,FALSE,L"EVENT_G");}
    {HANDLE hThread_Fin = CreateThread(0,0,FIN,&hThread_Fin,0,0);}
    {HANDLE hThread_G = CreateThread(0,0,G_MAIN,&hThread_Fin,0,0);}
    Ensuite, côté ihm, j'ai mis cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HANDLE hEvent_G=OpenEvent(EVENT_ALL_ACCESS,FALSE,"EVENT_G");
    	WaitForSingleObject(hEvent_G,0);
    	if(hEvent_G != NULL)
    	{
    		MessageBox("dsfdsf");
    	}

    Mais hélas ça ne marche pas, donc comment récupérer l’évènement crée côté serveur ?

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Si l'événement est lancé coté client, il faut essentiellement envoyer une communication vers le serveur qui lui signalera qu'un événtement est survenu, car le propre d'une séparation client / serveur est que les deux parties s'exécutent de manière séparée

    Tu peux, bien sur, utiliser le même système d'événement des deux cotés, mais, il faut faire en sorte que:
    le client envoye un "signal" (ce peut etre une chaine de caractère proche de "event : telEvent" au serveur qui, de son coté, récupérera ce signal et décidera de ce qu'il faut faire (éventuellement, recréer un nouvel évènement sur base des informations obtenues par le "signal", de manière à le gérer de la manière appropriée )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Créer et envoyer des emails en template
    Par mounitahard dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 04/06/2014, 15h00
  2. créer et envoyer un email OUTLOOK depuis Excel
    Par francky74 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/07/2011, 11h36
  3. Créer ses propres évenements
    Par Difré91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2010, 14h05
  4. créer un répertoire et envoye de fichier
    Par maminova77 dans le forum Langage
    Réponses: 1
    Dernier message: 09/03/2006, 22h18
  5. [FPDF] Créer un PDF et l'envoyer par email avec PHPMailer
    Par nico33307 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 12/12/2005, 22h49

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