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 :
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 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
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 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)
Plus d'infos sur DeferWindowPos ici :
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
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Bonne prog![]()
Partager