begin process at 2012 05 29 08:01:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Maîtriser le Z order des fenêtres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Maîtriser le Z order des fenêtres

jeudi 19 août 2004 à 14:02:07 | Maîtriser le Z order des fenêtres

larion

Bonjour,

Depuis un certain temps je cherche à maîtriser le "Z order" des fenêtres, mais sans succès.

Imaginons que l'on a 10 fenêtres portant les titres :
- "0", "1", "2" ... "9"

Le but est de positionner, la fenêtre :
- "9" devant la "8"
- "8" devant la "7"
...
- "1" devant la "0"
Donc la fenêtre "9" est la fenêtre au premier plan
et la fenêtre "0" est la fenêtre au dernier plan.

J'ai tenté d'utiliser SetWindowPos(); mais sans succès.
jeudi 19 août 2004 à 14:42:00 | Re : Maîtriser le Z order des fenêtres

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
As tu essayé d'utiliser SetWindowPos dans l'ordre d'apparition des fenêtres ?

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
jeudi 19 août 2004 à 17:08:50 | Re : Maîtriser le Z order des fenêtres

larion

Oui. Et j'obtiens n'importe quoi ...
Je n'ai pas très bien compris la logique de SetWindowPos pour la gestion du Z-Order.
jeudi 19 août 2004 à 20:09:41 | Re : Maîtriser le Z order des fenêtres

ymca2003

peu-être an appelant plusieurs fois SetWindowPos par fenêtre:
- placer "0"
- placer "1" sur "0"
- placer "2" sur "0 et "1"
- placer "3" sur "0", "1" et "2"
- placer "4" sur "0", "1", "2" et "3"
...

jeudi 19 août 2004 à 23:12:18 | Re : Maîtriser le Z order des fenêtres

larion

Donc pour
- 10 fenêtres, il faut 45 appels à SetWindowPos
- 20 fenêtres, il faut 190 appels à SetWindowPos
- 50 fenêtres, il faut 1225 appels à SetWindowPos

Je ne pense pas que ce soit une bonne solution.
C'est trop consommateur de temps pour juste afficher des fenêtres dans un ordre précis.
vendredi 20 août 2004 à 09:43:41 | Re : Maîtriser le Z order des fenêtres

ymca2003

et en mettant HWND_TOP pour la fenêtre (placer les fenêtres au sommet du Z order en partant de "0", "1", ...) ?
vendredi 20 août 2004 à 16:09:22 | Re : Maîtriser le Z order des fenêtres

larion

C'est une bonne idée. En principe cela doit fonctionner. Mais en utilisant ce code :
SetWindowPos(Handle,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
Il n'y a rien à faire : rien ne se passe.

Mais en utilisant :
SetForegroundWindow(Handle);
Cela à l'air de fonctionner ???
Disons que c'est ma premier méthode fiable.
L'inconvéniant de cette dernier, c'est qu'il faut passer toutes les fenêtres en revue.

Maintenant imaginons que j'ai l'ordre suivant : "0" "1" "2" "3" "4" "6" "5" "7" "8" "9"
Tout en sachant que "5" et "6" sont inversées, comment modifier l'ordre Z de la fenêtre "6" sans toucher aux autres fenêtres.
(Ca c'est pointu comme question)

Autre question : comment connaître l'ordre de ces mêmes fenêtres (pour lire l'ordre défini par l'utilisateur par exemple)
mercredi 25 août 2004 à 08:46:23 | Re : Maîtriser le Z order des fenêtres

Pamaury

Pour connaitre le Z-order de toutes les fenêtre(visibles), il y a deux méthodes:

//Première méthode:

HWND temp=GetWindow(GetForegroundWindow(),
GW_HWNDFIRST);
LPTSTR str=(LPTSTR)LocalAlloc(0,90);

while(temp)
{
if(IsWindowVisible(temp))
{
GetWindowText(temp,str,90);
std::cout<<"\""<<str<<"\"\n";
}
temp=GetWindow(temp,GW_HWNDNEXT);
}

LocalFree((LPVOID)str);

/*Ce programme affichera le noms de toutes les fenêtres visible en fonction de leur Z-order: La première est la "foregroundWindow" et la dernière et celle avec le Z-order le plus bas .
*/

//deuxième méthode:

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
if(IsWindowVisible(hwnd))
{
LPTSTR str=(LPTSTR)LocalAlloc(0,90);

GetWindowText(hwnd,str,90);
std::cout<<"\""<<str<<"\"\n";

LocalFree((LPVOID)str);
}

return TRUE;
}

void TestEnumWindows()
{
EnumWindows(EnumWindowsProc,0);
}

//le résultat sera le même
mercredi 25 août 2004 à 10:08:40 | Re : Maîtriser le Z order des fenêtres

larion

Merci beaucoup. J'ai tous ce qu'il me faut à présent.


Cette discussion est classée dans : fenêtre, fenêtres, order, succès, maîtriser


Répondre à ce message

Sujets en rapport avec ce message

Problème de hook sur fenêtre enfant... [ par platon179 ] Bonjour, j'ai un souci concernant les hooks sur les fenêtres enfant. En fait, ca marche très bien sur les fenêtres parent, mais il semble que la procé fenêtre arrière plan [ par wanny ] Bonjour.DAns une appli, j'ai une ou plusieurs fenêtre(s) graphique (classe fille de CView).Je clique sur un menu de la mainframe pour changer des para MultiWindows [ par Galmiza ] Salut,J'aimerais faire un logiciel de 3D avec menu + toolbar + statusbar + fenêtres 3D.Il me faut donc gerer plusieures fenêtres.J'arrive a inclure la [WINDOWS C++]problème de fenêtre fille [ par brosse_adan ] Bonjour à tous!Voilà mon problème : je veux avoir une fenêtre principale avec trois fenêtres filles. J'enregistre ma classe de fenêtre principale, mes !!! Pb crétation de fenêtre + thread !!! [ par yoyo269 ] Mon problème est que je crée une ou plusieurs fenêtres à l'intérieur d'un thread dont je stocke le handle dans un tableau de static HWND déclaré en gl Child Window [ par yerosnimus ] bonjour,Je lis la documentation du site MSDN Library concernant la programmation windows à laquelle je ne connais rien et j'ai un peu de mal à m'en so Récupérer l'épaisseur des bords de fenêtre ? [ par tintin72 ] Bonjour, Je programme une fenêtre contenant 2 splitters (1 vertical, 1 horizontal). Ces splitters sont créé manuellement, cad qu'il y a en fait 4 fenê Récupérer un handle de fenêtre [ par tintin72 ] Bonjour, Je programme une classe 'Splitter' qui a besoin de récupérer le handle des fenêtres filles pour les agencer dans la fenêtre hote. J'ai donc Effet mosaique et MFC ! [ par flopflopp ] Bonjour, Je travaille sur un projet de fenêtre MFC. La fenêtre principale ouvre 4 fenêtres qui sont des navigateurs internet. Seulement, ces fenêtres callback fenêtres filles [ par seb2086 ] Bonjour, J'ai une application avec 1 fenêtre mere et environ 40 ou 50 fenêtres filles.J'ai 1 callback pour la fenêtre mere mais j'aurai voulu savoir


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales