yerosnimus
Messages postés18Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention15 janvier 2007
-
23 nov. 2004 à 19:10
yerosnimus
Messages postés18Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention15 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.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 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.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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 .