Child Window

Signaler
Messages postés
18
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2007
-
Messages postés
18
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2007
-
bonjour,

Je lis la documentation du site MSDN Library concernant la programmation windows à laquelle je ne connais rien et j'ai un peu de mal à m'en sortir concernant un exemple simple trouvé dans ce site que j'essaie d'adapter à mon cas.

J'ai une fenêtre principale et je veux trois fenêtres "enfants" à l'intérieur.

Dans l'exemple proposé, Microsoft crée les fenêtres dans la WindowProcedure à partir du message WM_CREATE.

J'ai donc fait la même chose mais non seulement je ne vois pas mes fenêtres "child" apparaître mais en plus mes menus de la fenêtre principale ne fonctionnent plus.

Je ne sais pas trop comment chercher l'erreur car le programme se compile correctement.

Pour l'instant, je pense qu'il s'agit peut être d'un problème lié à la classe window. En effet, j'utilise la même classe que ce soit pour la fenêtre principale ou pour les fenêtres enfants. Mais si je dois créer une nouvelle classe où dois je le faire dans le programme ?

Pour info : j'apprends (j'essaie) avec Dev-C++ et je suis autodidacte.

Merci de votre aide

Jerome

4 réponses

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Des fenetres 'enfants' sont des controles, comme des boutons, des edit, statics...etc, tu parles de nouvelles fenetres (alors des fenetre 'fille') ou de fenetre 'enfants' ? Envoie nous le code stp.

+2(p - n)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux créer une fenêtre principale ayant une (ou plusieurs) fenêtre fille (child), ainsi tu as deux choix:
1- La fenêtre fille est de la même classe que la fenêtre mère. Dans ce cas la fenêtre fille utilise la procédure de la fenêtre mère. Tous les messages de la fille seront traités par la procédure de la mère. Là se pose un problème : quand la fenêtre fille est créee avec CreateWindow() durant le traitement du message WM_CREATE de la procédure, un nouveau WM_CREATE est envoyé à cette procédure et ça boucle à l'infini. Je pense que c'est ça ton problème. Pour le résoudre il suffit de créer une variable de contrôle pour que la fenêtre fille ne soit créee qu'une seule fois. Exemple:
LRESULT CALLBACK WndProc( .........)
{
static int variable=0;
//.....
case WM_CREATE:
          if (!variable)
            {
             variable=1;
             CreateWindow(.....)//fille
             //....
             }
          //......
         return 0;
// suite du code....
}


2- La fenêtre fille est d'une classe différente de la mère. Dans ce cas, aucun problème, tu peux déclarer cette classe, définir ses membres , l'enregistrer et créer la fenêtre pendant le traitement de WM_CREATE de la mère .
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Messages postés
18
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2007

Merci,

Merci à tous pour vos réponses. J'essaie de mettre en pratique tout ça et je me plonge dans la lecture du Petzold.

Bonne journée

Cordialement,

Jérôme