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 :

Une message box ne bloquant pas le processus d'un programme : est-ce possible ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 103
    Par défaut Une message box ne bloquant pas le processus d'un programme : est-ce possible ?
    Bonjour,

    Je réalise un service Windows en C++ et mon problème peut être formulé avec le code suivant :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <Windows.h>
     
    void run()
    {
      Sleep(10000); // Attendre 10 secondes
      MessageBox(0, "Mon information", "Information", 0);
      Sleep(20000); // Attendre 20 secondes 
    }

    La MessageBox interrompt le processus dans le sens où le programme ne dure pas exactement 30 secondes ici ; il faut attendre que l'utilisateur ait cliqué sur "OK" pour enclencher la minuterie de 20 secondes. Comment contourner ce problème ? Connaissez-vous d'autres types de fenêtre d'information susceptibles de m'intéresser ? Ou faut-il lancer un thread dans lequel j'appellerais cette fenêtre ?

    Merci pour vos réponses !

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour.
    Je ne connais pas l'API, mais il y a peut-être une "non blocking message box". Sinon, un thread peut fonctionner, à condition de ne surtout pas en faire un join.

    Cela dit, pourquoi ces temps d'attentes autour d'une interaction utilisateur?

  3. #3
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 032
    Billets dans le blog
    12
    Par défaut
    En tout cas un service est normalement conçu pour ne pas avoir d'IHM, je suis très étonné qu'il t'affiche ta message box. Es-tu sûr de développer un service ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 449
    Par défaut
    dragonjoker59, je ne pense pas que Jimmy91 sache ce qu'est un "vrai" Service Windows.

    Jimmy91, MessageBox ne bloque pas le processus, c'est juste une boucle sur le traitement des messages de fenêtre.

    A part MessageBox ou ShowDialog, à peu près toutes les primitives d'affichage de fenêtre n'utilisent pas cette mécanique de boucle.

    Tu as donc plusieurs dizaines de manière de faire, t'as plus qu'à choisir.

  5. #5
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 103
    Par défaut
    Bonjour à tous et merci pour vos réponses.

    leternel : Sur votre conseil, j'ai recherché comment programmer un thread, et le tutoriel de Franck.h m'a beaucoup aidé. En fait, les temps d'attente utilisateur ne sont rien d'autre qu'un simple minuteur devant indiquer à l'utilisateur combien de temps il lui reste à des instants déterminés.

    dragonjoker59 et Bacelar : Je sais que mon "service" Windows n'en n'est pas vraiment un, mais c'est la seule méthode que je connaissais qui me permette de démarrer mon programme à l'ouverture de session, et de le faire fonctionner en tâche de fond tout en avertissant l'utilisateur de manière ponctuelle ! Par contre, je ne savais pas qu'un service ne pouvait pas afficher d'IHM. Pour l'instant je ne suis qu'à la phase de Debug, donc les messages d'avertissement s'affichent correctement. Je suppose donc que ces messages ne s'afficheront plus quand je mettrai le service en production, ce qui est gênant...

  6. #6
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 103
    Par défaut
    Je confirme : pas de message d'erreur lors de l'exécution du service, alors qu'ils apparaissent à partir du débogueur... Dommage. J'avais passé pas mal de temps à comprendre l'exécution d'un service...

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

Discussions similaires

  1. Personnaliser une message box
    Par nico_pouchet dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/06/2007, 19h43
  2. afficher une message box a parti d'une console
    Par lermit dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 14/05/2007, 15h18
  3. Formatage d'une message box
    Par Destiny dans le forum Access
    Réponses: 7
    Dernier message: 19/02/2007, 15h05
  4. [C/C++] afficher des doubles dans une message box
    Par lalaurie40 dans le forum MFC
    Réponses: 1
    Dernier message: 24/05/2005, 14h55
  5. afficher une "message box"
    Par requiemforadream dans le forum ASP
    Réponses: 2
    Dernier message: 19/04/2005, 16h11

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