Identifiant pour une fenetre fille d'une application MDI

Résolu
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007 - 1 mars 2006 à 15:08
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 1 mars 2006 à 17:53
Salut à tous,

est ce qu'il existe un moyen de savoir, dans une application MDI, sur quelle fenetre fille le client, ou le focus aussi, est ? En fait je souhaiterais associer une variable de type int suivant sur quelle fenetre fille on se trouve ( la 1, la 2, la 3, etc...) enfin bref, je me repéte là

voilà j'vous remercie si vous trouvez

12 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 16:30
Allez je t'aide un peu :

- Tu déclares en globales un tableau de HWND et un compteur :
int iChildrenCount;
HWND hChildren[1024];

- Au lancement du prog tu initialises le compteur à 0:
iChildCount = 0;

- A chaque fois que tu crées un fenetre enfant en envoyant un SendMessage(...) tu mets a jour le tableau et le compteur :
hChild = (HWND)SendMessage(g_hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
if(hChild)
{
hChildren[iChildrenCount++] = hChild;
}

- Ensuite, à chaque fois que tu as besoin de savoir qu'elle est ta fenetre qui a le focus tu fais :
hTemp = GetActiveWindow();

for(i=0;i<iChildrenCount;i++)
{
if(hChildren[i] == hTemp)
{
// On a trouver l'index de la fenetre enfant active
break; // Permet de sortir de la boucle. Tu peux aussi passer par un while
}
}

Après tout ca, tu peux aussi optimiser le programme de tel sorte a ce que le tableau de HWND soit toujours tenue a jour.
Donc quand tu fermes une fenetre enfants, tu supprime l'entrée correspondante dans le tableau.
Dans cette exemple la, tu peux gérer jusqu'à 1024 fenetre enfants.

Shell
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 15:22
GetActiveWindow() te renvoie le handle de la fenetre active (celle qui a le focus)

Shell
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 15:25
oui merci mais, comme je bosse sur une application MDI, est ce qu'il n'existe pas une fonction associé à MDI, et surtout je veux un int, si c'est pas trop demander
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 15:26
parce qu'un handle ne me serait d'aucune utilité en faite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 15:33
Etant donné que c'est toi qui crée les fenetres enfants, tu sais exactement quel handle leur est attribuée.
En associant ce handle à un int, le tour est joué.
Pour cela, une idée et de créer un tableau de HWND, dans le quel tu stoque tout tes handle de fenetre.
Ainsi, l'index du tableau correpondra à un et un seul handle.

Shell
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 15:37
je crée effectivement les fenetres filles, mais elles ont toujours le meme handle, et puis il peut y en avoir 10, 20, 30, je ne sais pas. enfin bref, j'essaie de te dire qu'avec un handle en main, impossible de savoir de quelle fenetre fille on parle.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 15:43
A quoi correspondrait tes index alors ???
Ca métonne qu'elle est le meme handle en plus! Elles ont certes le memes parent, mais surement pas le meme handle!

Shell
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 15:48
je ne sais pas si t'as déjà vu une application MDI alors. Si t'as Dev-C++, regarde l'exemple qu'il en donne, et tu comprendras. Mais je suis sur qu'il existe une fonction pour savoir sur quelle fenetre on est qui renvoi un int. Faut savoir qu'une application MDI c'est assez spécial, ce que tu me dis aurais pu aller pour une application ... bah sans MDI quoi

je sais pas si je m'exprime correctement dsl, enfin j'espere que je suis compris quand meme
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 15:52
Merci de te préoccuper de mes connaissances en programmation.
Si tu as Spy++ de Microsoft, ouvre une application MDI, et pointe sur deux fenetres filles. Tu remaqueras qu'elles n'ont pas le meme handle!
Mais bon vu tes dires, tu vas nous trouver la réponse.
J'aurais le privilège de me coucher moins bete ce soir grace a toi ^_^

Shell
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 15:59
ah mais c'est pas ce que je veux dire biensur, je remet pas tes connaissances en programmation en doute, loin de là, c'est moi le padawan ici je le sais bien.

bon je vais me débrouiller avec tous tes conseils, merci
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
1 mars 2006 à 17:31
merci beaucoup, t'avais raison en faite

je vais faire comme ca, je te remercie ca m'aide vraiment
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 mars 2006 à 17:53
Ya pas de quoi, bon courage.

Shell
0