bonsoir
J'ai cree une fenetre sans barre de titre qui s'affiche en haut de l'ecran la Form est initialisee a " fsStayOnTop ", mais j'aimerais que les autres fenetres s'affichent et s'ajustent sous ma Form, je cherche une piste
bonsoir
J'ai cree une fenetre sans barre de titre qui s'affiche en haut de l'ecran la Form est initialisee a " fsStayOnTop ", mais j'aimerais que les autres fenetres s'affichent et s'ajustent sous ma Form, je cherche une piste
Salut !
Dans ce sens là (?) :s'affichent et s'ajustent sous ma Form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { SetBounds(0,0,Screen->Width, 100); } //-- void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Form2->Show(); }
Pour interdire le déplacement de Form2 il suffirait d'intercepter et de gérer l'événement WM_WOVING.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void __fastcall TForm2::FormShow(TObject *Sender) { SetBounds(0,Form1->Height, Width, Height); }
(toujours sur BCB3 Pro donc ...)
A plus !
Salut !
Sinon, en interprétant le problème autrement :
Pour gérer le positionnement des autres forms par rapport à cette form, l'interception de WM_MOVING reste d'actualité !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Form2->Show(); // peu importe Form3->Show(); // peu importe à ce stade Application->NormalizeAllTopMosts(); // << y compris Form1 Form3->FormStyle = fsStayOnTop; // << Replace et demeure au premier plan }
A plus !
Merci pour tes reponses henderson
Je me suis tres mal explique la fenetre que je cree va me servir de Zoom et se place en haut de l'ecran elle est redimensionnable, ce que je cherche, c'est que les fenetres presente se redimensionnes dans l'espace restant sur l'ecran de meme pour celles qui vont se charger la fenetre de Zoom deja presente, je regarde du cote des API Window je pense que c'est ce qu'il faut utiliser mais je ne vois pas lequelles
En faisant des testes je me retrouve devant un probleme si je fais ceci pour obtenir le Handle du bureau j'ai cette valeur " 00010014 "
Si je fais ceci pour obtenir le Handle pointe par le curseur en faisant ce qui suit j'ai cette valeur " 00010088 ", j'avais pris la precotion de deplacer les fenetre pour verifier que cela pointe sur le bureau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 HWND hwndBureau = GetDesktopWindow();
Pourquoi deux valeurs differentes, comment obtenir le Handle du bureau que l'on voit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // on positionne le curseur sur la barre de titre // a 10 du bord gauche et 10 du bord haut TPoint Pt; Pt.x = 10; Pt.y = 10; // on recupere le Handle de la fenetre affichee HWND hwndAppli = WindowFromPoint(Pt); // on recupere le Handle du composant sous le curseur
Salut !
DeskTop ... ???
En supposant que cette fenêtre Zoom ne concerne que ton application, le plus simple serait quand même que ton application gère ses propres fenêtres.
Ca peut se faire "facilement" en mettant les OnResize en guirlande :
Zoom étant maître du positionnement des autres fenêtres elle lancera donc la OnResize de la première fenêtre qui lancera la OnResize de la deuxième fenêtre ... la OnResize de la dernière fenêtre ne lancera aucune OnResize.
Cette daisy-chain doit respecter une condition : Zoom doit être la dernière fenêtre créée et il faudra donc inhiber l'action des OnResize avec un flag que Zoom validera lors de sa construction (pour éviter d'utiliser une fenêtre qui ne serait pas encore construite à cause de ce montage en daisy-chain).
Dès que la OnResize de cette Zoom sera solicitée (inévitablement après sa construction), toutes les fenêtres se positionneront les unes par rapport aux autres (et l'une après l'autre)... à faire donc dans chaque OnResize (donc pour chacune d'elle) avant de solliciter la OnResize de "sa" suivante dans la daisy-chain.
Je me limite ici à n'en décrire que le principe (comme j'ai testé ce principe avec mon BCB3 Pro ...) !
Si on travaille dans un contexte MDI ... c'est encore plus simple ... puisque la MDIForm est maître de son contenu (on peut développer pour faire beaucoup plus que Cascade et Tile ) !!!
A plus !
Partager