Voici un code permettant de modifier l'ordre d'affichage des fenêtres sur l'index Z (z-index), c'est à dire sur l'axe vertical :

Pour commencer et pour illustrer le fonctionnement du z-index, ce code affiche un empilement de 6 fenêtres filles MDI :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
LOCAL
	sNomAlias est une chaîne
 
POUR i = 1 _A_ 6
	sNomAlias = "Fen_FilleMDI_"+i
	MDIOuvre(Fen_FilleMDI,sNomAlias,sNomAlias)
	{sNomAlias,indFenêtre}..Y = i*30
	{sNomAlias,indFenêtre}..X = i*30
FIN
Je peux ensuite faire en sorte que la fenêtre "Fen_FilleMDI_1" soit affichée juste en dessous de la fenêtre "Fen_FilleMDI_6" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
LOCAL
	iRetourFonction est un entier
	iFenDessousHandle est un entier
	iFenDessusHandle est un entier
 
iFenDessousHandle = Handle("Fen_FilleMDI_"+1)
iFenDessusHandle = Handle("Fen_FilleMDI_"+6)
 
iRetourFonction	= API("USER32","BeginDeferWindowPos",1)
iRetourFonction	= API("USER32","DeferWindowPos",iRetourFonction,iFenDessousHandle,iFenDessusHandle,0,0,0,0,403)
iRetourFonction	= API("USER32","EndDeferWindowPos",iRetourFonction)
AppelDLL32("user32","ShowWindow",iFenDessousHandle,5)
Et éventuellement inverser l'ordre d'affichage des fenêtres sur l'index Z :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
LOCAL
	i est un entier
	sNomAlias est une chaîne
	iHandleAliasDessus est un entier
	iHandleAliasDessous est un entier
	iRetourFonction est un entier
	tFenFille est un tableau de chaînes
 
Trace("Index Z Initial------------------")
 
i = 1
sNomAlias = MDIEnumèreFille(i)
TANTQUE sNomAlias <> ""
	Trace("Fenêtre fille MDI Index Z "+i+" : "+sNomAlias)
	TableauAjoute(tFenFille,sNomAlias)
	i++
	sNomAlias = MDIEnumèreFille(i)
FIN	
 
iFin est un entier
iFin = tFenFille..Occurrence
 
POUR i = 1 _A_ tFenFille..Occurrence
	iHandleAliasDessous 	= Handle(tFenFille[i])
	iHandleAliasDessus 		= Handle(tFenFille[iFin])
	iRetourFonction	= API("USER32","BeginDeferWindowPos",1)
	iRetourFonction	= API("USER32","DeferWindowPos",iRetourFonction,iHandleAliasDessous,iHandleAliasDessus,0,0,0,0,403)
	iRetourFonction	= API("USER32","EndDeferWindowPos",iRetourFonction)
	AppelDLL32("user32","ShowWindow",iHandleAliasDessous,5)
FIN
 
Trace("Index Z inversé------------------")
 
i = 1
sNomAlias = MDIEnumèreFille(i)
TANTQUE sNomAlias <> ""
	Trace("Fenêtre fille MDI Index Z "+i+" : "+sNomAlias)
	i++
	sNomAlias = MDIEnumèreFille(i)
FIN
Plus d'infos sur DeferWindowPos ici :
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Bonne prog