Identifiant pour une fenetre fille d'une application MDI [Résolu]

Signaler
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007
-
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
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

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
GetActiveWindow() te renvoie le handle de la fenetre active (celle qui a le focus)

Shell
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

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
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

parce qu'un handle ne me serait d'aucune utilité en faite
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

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.
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

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
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

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
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

merci beaucoup, t'avais raison en faite

je vais faire comme ca, je te remercie ca m'aide vraiment
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Ya pas de quoi, bon courage.

Shell