Child Window

yerosnimus Messages postés 18 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 15 janvier 2007 - 23 nov. 2004 à 19:10
yerosnimus Messages postés 18 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 15 janvier 2007 - 24 nov. 2004 à 09:03
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

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
23 nov. 2004 à 19:25
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)
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
23 nov. 2004 à 20:50
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 .
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 nov. 2004 à 21:31
0
yerosnimus Messages postés 18 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 15 janvier 2007
24 nov. 2004 à 09:03
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
0
Rejoignez-nous