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

Windows Discussion :

boite de dialogue multiple


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Points : 80
    Points
    80
    Par défaut boite de dialogue multiple
    Bonjour a tous !

    J'ai encore une question tordu a vous poser...

    Je souhaite lancer plusieurs fois la meme boite de dialogue mais les deux boites sont gérée par la meme fonction procédurale... Du coup, un message envoyée a une des boites est traitée par la meme fonction, ce qui ne m'arrange pas...

    Je ne sais pas a priori le nombre de boite de dialogue a ouvrir...

    Y a t'il une solution a ce probleme ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Logiquement chacune des boites ouvertes doit avoir un lien avec le traitement d'un objet; il te suffit donc de créer un lien entre cet objet et la fenêtre du dialogue, ce qui te permettra ensuite de faire le distingo entre chaque objet dans le DialogProc...
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh...
    Pour des boîtes de dialogue Non-MFC, la boîte de dialogue est justement détachée de la DialogProc : C'est seulement en appelant DialogBox() ou CreateDialog() qu'on les associe.

    Si tu veux afficher simultanément deux boites de dialogue partageant la même DialogProc(), pas trente-six solutions : Il faut que la DialogProc n'ait aucune variable static ni aucune variable globale.
    ---> Tout doit être mis dans une structure associée à la boîte de dialogue. Notamment, tu peux stocker un pointeur vers cette structure avec SetWindowLong(GWL_USERDATA,...)
    (Note: Pour une boîte de dialogue, j'ignore ce qui est mieux entre GWL_USERDATA et DWL_USER. Pour l'instant, on dirait que les deux marchent.)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Médinoc
    Tout doit être mis dans une structure associée à la boîte de dialogue. Notamment, tu peux stocker un pointeur vers cette structure avec SetWindowLong(GWL_USERDATA,...)
    (Note: Pour une boîte de dialogue, j'ignore ce qui est mieux entre GWL_USERDATA et DWL_USER)
    Médinoc : si tu relis bien, c'est exactement ce que j'ai écrit (certes avec moins de détails) ...
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Points : 80
    Points
    80
    Par défaut
    ok.. j'ai tenté d'enregistrer les valeurs avec un setWindowLong mais a chaque foi, j'ai la meme erreur obtenus avec GetlastError : Invalid Handle...

    Je viens de retester et j'ai compris mon erreur.. En fait, je mettais le handle de ma boite de dialogue dans le SetWindowLong alors que celle ci était lancée a partir d'un thread.

    Il fallait mettre le handle de la fenetre principale.

    A présent, ca marche !

    Merci !

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben non, il faut mettre le handle de la boîte de dialogue et mettre le SetWindowLong dans le case WM_INITDIALOG de la DialogProc()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Pb plusieurs boites de dialogues
    Par schnito dans le forum MFC
    Réponses: 10
    Dernier message: 25/02/2004, 21h44
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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