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 :

[API Win32] Masquer une boite de dialogue


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut [API Win32] Masquer une boite de dialogue
    Bonjour,

    Merci pour le temps que vous allez consacrer à mon problème.

    j'ai réalisé un programme qui comprend une fenêtre principale.
    Dans cette fenêtre principale, je créer des boites de dialogue filles.
    J'affiche correctement ma premiere fille.
    J'aimerais pouvoir via l'évenement WM_COMMAND masquer cette premiere
    fenetre et afficher une autre que j'ai créé auparavant (dans le WM_CREATE, en meme temps que la premiere).

    J'ai essayé ShowWindow() et UpdateWindow() sans succes.
    de meme avec RedrawWindow() et InvalidateRect().
    J'ai beau faire des recherches un peu partout, je ne trouve point de solution à mon problème

    Voici le code problematique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	case WM_COMMAND:
            if(LOWORD(wParam) == IDM_QUIT) PostMessage(hFrame, WM_CLOSE,0,0);
    		if(LOWORD(wParam) == IDM_NEW)
    		{
    			ShowWindow(g_hAbout, SW_HIDE);
    			//UpdateWindow(g_hAbout);
    			ShowWindow(g_hNew, SW_SHOW);
    			//UpdateWindow(g_hNew);
    			//RedrawWindow(hFrame,NULL,NULL,TRUE);
    			InvalidateRect(hFrame,NULL,TRUE);
    			BWin = !BWin;
    		}
    		return 0;
    j'ajoute que les 2 CreateDialog() ne renvoient pas d'erreur. J'ai donc mes 2 handles de créés. Les deux boites de dialogue sont de style WS_CHILD.
    hFrame est le handle de ma fenêtre principale.

    Pourriez vous me donner un indice s'il vous plait? Merci d'avance!

  2. #2
    mat.M
    Invité(e)
    Par défaut
    1-
    if(LOWORD(wParam) == IDM_QUIT) PostMessage(hFrame, WM_CLOSE,0,0);
    if(LOWORD(wParam) == IDM_NEW)
    Prendre un switch plutot qu'une palenquée de if ....sinon ça va devenir ingérable

    2-
    ShowWindow(g_hAbout, SW_HIDE);
    //UpdateWindow(g_hAbout);
    ShowWindow(g_hNew, SW_SHOW);
    que valent les handles g_hAbout et g_hNew ( déboguage ) ? Les déclarer en static

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut
    Entierement d'accord pour les if.

    Je viens de tester pour les handles. Ils n'étaient en effet pas en static.
    J'ai fais la correction et cela fonctionne maintenant parfaitement.
    Cependant, j'ai du mal à saisir pourquoi.
    mmm ah je crois que ça me revient, d'un lointain souvenir de C... c'est pour empecher de reinitialiser la variable à chaque appel de la fonction, c'est bien ça?
    Dans ce cas oui tout s'éclaire! C'est pas bon de rouiller en dev
    Merci infiniment pour l'aide!
    Très bonne journée à toi!

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par thargos
    Je viens de tester pour les handles. Ils n'étaient en effet pas en static.
    J'ai fais la correction et cela fonctionne maintenant parfaitement.
    Cependant, j'ai du mal à saisir pourquoi.
    C'est parce qu'ils sont déclarés dans une fonction procédurale ré-entrante de type CALLBACK;
    en fait un processus qui sera appelé à intervalles réguliers par le "scheduler" de l'OS le Windows Manager ( multi-taches oblige )
    Effectivement à chaque appel de la fonction WindowsProc , les variables sont réallouées

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/01/2009, 18h43
  2. Réponses: 3
    Dernier message: 10/10/2006, 16h30
  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