jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006
-
9 mars 2005 à 20:35
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006
-
12 mars 2005 à 14:57
J'ai programmé sur Dev C++ un bouton avec image dans une fenêtre fille de la fenêtre principal. Aussi je ne parviens plus à récupérer le message du bouton dans ma fenêtre principal puisque les message sont envoyer dans la fenêtre fille. Enfin c'est ce que j'ai cru comprendre puisque quand je change la fenêtre parent dans les caractèrestique du bouton en mettant la fenêtre principal le bouton déclanche bien l'action contenu dans "switch(LOWORD(wParam))".
Comment pourais-je donc envoyer le message dans la bonne fenêtre, sachant que si je mette le bouton dans la fenêtre principal (hwnd) il est plus difficile de gérer sa possition avec la fenêtre fille et donc sont apparission
Merci de votre aide.
JBM
_____________________________________
Le code :
/* Fenête principal */
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Red Castle - "Le Mystère des Ummites"", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
800, /* The programs width */
600, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006 9 mars 2005 à 22:30
Merci pour ta réponce YOYO, mais je suis un véritable autodidacte au début de la programation c++.
J'ai donc un problème : Oui, créer une classe pour ma fenêtre fille, mais comment
Pour ma fenêtre principale c'est dev c++ qui le fait pour moi.
Après ta réponce je suis allé voir des sites. Je comprend qu'il faux que je reproduise quelque choses avec "
WNDCLASSEX wincl;" en donnent un autre nom et que je lui applique les instruction :
/* The Window structure */
wincl.hInstance = g_hInst;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
Mais
1 - est-ce possible sur une fenêtre CreateWindow( )
2 - dois-je prendre toute les caractéristique ou seulement :
mafenêtre.lpszClassName = szClassName;
mafenêtre.lpfnWndProc = WindowProcedure;
Et donc si cela fonctionne je n'aurais plus cas recréer une lecture des message de cette classe avec LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
}
}
c'est bien cela
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006 10 mars 2005 à 13:58
Ou je dois mettre QUOI et COMMENT
Ma fenêtre (intro) fille est une CreateWindow("edit"). Ou puis-je lui donner le nom de la classe
Pour créer la classe la consernant, dois-je écrire :
mafenêtre.lpszClassName = szClassName;
mafenêtre.lpfnWndProc = WindowProcedure;
dans WinMain, ainsi que :
Ou puis-je uttiliser une même classe pour plusieur fenêtre pour ne gérer qu'un seule groupe de message
Si vous avez un livre à me conseiller
Je cherche un livre qui me permetre de répondre à de la programation en API Windows
Je ne trouvé dans les magasin que des livre qui dévelope la programmation c++ sur DOS et auccun sur Windows.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 10 mars 2005 à 17:40
Si j'ai bien compris tu veux utiliser un edit sur une fenêtre.
Si c'est bien ça, t'as juste à créer ta fenêtre comme tu l'as déjà fait, donc là pas de pb.
Par contre quand tu crées ton edit, le nom de classe est défini par défaut c'est "edit" et rien d'autre. Tu dois également donner en argument (le 9ème) à CreateWindow, le HWND de la fenêtre où tu veux qu'il se trouve.
Pour ton code ça sera donc hwnd tout simplement.
J'espère que c'est ce que tu voulais.
Dans tous les cas tiens-moi au courant.
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006 11 mars 2005 à 19:15
Reprenons :
J'ai une fenêtre principal (créé avec CreateWindowEx) dans laquelle j'ai créer plusieur editbox (crée avec CreateWindow) que je veux faire apparêtre l'une après l'autre via un menu dans ma fenêtre principal. Dans mon editbox j'ai intégré un bouton (crée avec CreateWindow).
Ne serait-il pas possible pour simpliffier le problème de renvoyer le message du bouton de l'éditbox dans la fenêtre principal en uttilisant le principe parent/enfant comme on le ferait pour du texte en Javascript
Cela m'éviterait de devoir écouter les message de chacune de mes fenêtre et me permettré de ne pas répéter les actions dans un autre CALLBACK que celui dejà uttilisé par la fenêtre principal
Désolé, je ne comprend pas bien votre réponce. J'ai mis le bouton dans l'editbox INTRO. C'est dans cette fenêtre que je voudrez qu'ils ce trouve. Malheureusement les messages envoyé par les boutons de l'éditbox INTRO sont envoyé dans l'éditbox en question, plus dans la fenêtre principal. Or c'est sur la fenêtre principal que j'ai mis une écoute des messages tel que je l'ai apris depuis que je progamme.
Vous me dit que c'est dans le 9ème argument que je doit mettre la fenêtre, mais le 9ème argument c'est "(HMENU) ID_BTNMEDIA1", d'ID qui créer le lien pour déclencher l'action rataché. Que dois-je faire alors
Faut t-il absolument que je créer une écoute des message de chaque fenêtre
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 12 mars 2005 à 08:35
Pas le 9ème pardon, mais le 8ème.
T'es obligé de mettre tes booutons dans l'edit ?
Parce qu'il suffirait de les placer dans la fenêtre principale et ça irait tout seul.
T'aurais plus qu'à régler leur position afin d'imiter ce que tu as actuellement graphiquement.
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006 12 mars 2005 à 13:28
Ok ! Je vois. Je met mon bouton dans la fenêtre principal en moddifiant son focus pour qu'il ce trouve devant l'édit. Ainsi, ni vu, ni connu !
Je vais esseyer. Merci beaucoup.
jbmartinez
Messages postés33Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention10 juillet 2006 12 mars 2005 à 14:47
Un nouveau problème ce pose
Quand je click sur mes bouton je déclanche un son ou une vidéo par la fonction :
ShellExecute(NULL, NULL, "video/terre1934.mpg", NULL, NULL, SW_SHOWNORMAL);
ce qui marche très bien !
Mais windows média souvrant part dessus j'ai un problème de réfréchisement qui ce pose.
J'ai plassé UpdateWindow(hwnd); juste après ShowWindow (hwnd, nFunsterStil);
cela rafréchi très bien ma fenêtre principal et je ne pert rien de mon édit, mais mes bouton disparessent ! Que puis-je faire