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 :

AfxMessageBox d'un thread : bloquer bouton fenetre principale


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 36
    Points
    36
    Par défaut AfxMessageBox d'un thread : bloquer bouton fenetre principale
    Bonjour,

    J'ai un thread de communication qui doit afficher des messages d'informations ou questions (par AfxMessageBox ou avec une fenetre Modal).
    Mon problème est que ma fenetre principale doit rester active (elle affiche notamment des données de mon thread de communication), mais je veux bloquer les boutons encore visible tant que la fenetre d'information du thread de communication n'a pas été fermé.

    La solution que j'envisage, c'est de transmettre m'a demande par un message à mon thread principal pour qu'il se charge de l'affichage, mais dans ce cas ça complique pas mal car je doit récuper l'info Yes|no du bouton de la fenetre pour le thread de communication.

    Pour simplifier mon traitement, est-ce qu'il est possible de bloquer les boutons d'une fenêtre si celle-ci est en arrière-plan (C'est le cas pour ma fenetre principale ?

    Merci de votre aide.

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Oui... quelle est la question?

  3. #3
    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
    EnableWindow(FALSE) sur une fenetre bloque toute la fenetre.

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    argh, il y a eu un bug, je n'avais que la moitié du post quand j'ai répondu!
    je passe encore pour un pitre moi dans cette histoire

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    C'est ma faute r0d, j'ai validé mon post avant de l'avoir terminé .

    Pour mon Pb, Je pense en effet que EnableWindow doit pouvoir me convenir en le limitant sur mes Boutons.

    J'ai essayé, mais mon pb, c'est que je n'arrive pas à récuperer le pointeur sur ma fenetre principal, depuis ma classe d'affichage de mon message, lorsque c'est mon thread qui doit afficher mon message :

    Je m'explique :
    Ma classe de ma fenetre principale est CMainDlg :

    Dans ma classe d'affichage : si je fait :

    CmyDialog::OnInitDialog()
    {

    CMainDlg *p=(CMainDlg *)AfxGetMainWnd() ;

    p->EnableWindow(FALSE);

    ...
    }

    Dans mon Thread : CmyThread


    CMyThread ::Affiche()
    {
    CMyDialog Dlg;
    Dlg.DoModal();
    ...
    }

    Si je fait ça depuis mon thread, je ne récupère pas mon pointeur (p) de ma fenètre principale. Si je le fait depuis un enfant de CMainDlg, là ça marche.

    Merci de votre aide

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    C'est ma faute r0d, j'ai validé mon post avant de l'avoir terminé .

    Pour mon Pb, Je pense en effet que EnableWindow doit pouvoir me convenir en le limitant sur mes Boutons.

    J'ai essayé, mais mon pb, c'est que je n'arrive pas à récuperer le pointeur sur ma fenetre principal, depuis ma classe d'affichage de mon message, lorsque c'est mon thread qui doit afficher mon message :

    Ma classe de ma fenetre de base est CMainDlg :

    Dans ma classe d'affichage : si je fait :

    CmyDialog::OnInitDialog()
    {

    CMainDlg *p=(CMainDlg *)AfxGetMainWnd() ;

    p->EnableWindow(FALSE);

    ...
    }

    Dans mon Thread : CmyThread


    CMyThread ::Affiche()
    {
    CMyDialog Dlg;

  7. #7
    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,
    bon je le redis pour la nieme fois pas de GUI MFC dans un thread de travail
    voir faq:
    http://c.developpez.com/faq/vc/?page...d#WorkerThread

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Je comprends Farscape,

    Pour les messages simple ça me va, mais pour les messages ou j'attends une réponse de l'utilisateur (Yes|No) pour continuer, Ca va vite se transformer en usine à gaz, si je passe par des messages. Y'a pas un moyen plus simple pour mon PB ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/04/2014, 01h47
  2. [C#] Bloquer la fenetre principale
    Par legillou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/08/2006, 12h27
  3. [web] [Perl\Tk]Positioner la fenetre principale
    Par etranger dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/12/2004, 18h53
  4. [Thread] laisser une fenetre s'afficher
    Par parisjohn dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 25/08/2004, 15h05

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