Je voudrais identifier la position d'un Form dans l'écran pendant le mouvement d'un Form, c'est à dire capter Form->Top dynamiquement.
Je compte sur vous et merci.
Xavier
Je voudrais identifier la position d'un Form dans l'écran pendant le mouvement d'un Form, c'est à dire capter Form->Top dynamiquement.
Je compte sur vous et merci.
Xavier
A ma maigre connaissance, il n'y en a pas, mais tu peux utiliser un Timer pour regarder si le Form a Bougé.
Tu enregistres la position de ton form dans 2 variables et tu les compares à chaques timers avec la valeur actuelle.
Ca pourra peut-être te dépanner en attendant une meileure réponse.
bonjour
peut être que tu peux intersepter un message la l'API.
exemple d'évenement:
Visualisation des messages avec «*WinSight32*»
Études de quelques messages
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 WM_CREATE WM_CREATE // Ce message est envoyé lors de la création de la fenêtre avant // qu elle soit visible WM_DESTROY // Envoyé lorsque l application termine et que la fenêtre est détruite WM_QUIT // Ce message indique une demande de terminer l application. // Il fait sortir le programme de la boucle des messages (message loop).Code d*’un programme Windows développé avec l*’API (Application Programming Interface)
peut être en existie une pour ce que tu cherche.
va voir dans
(c'est dans l'aide du Builder)Rubriques d'aide:Microsoft Programmer's Guide to Windows 95
bonne chance
Salut Xavier !
Voici je que j'ai fait avec BCB3 :
Form1 contient un TStatusBar et Form2 est la fenêtre dont on veut
connaître la position qui sera affichée dans StatusBar1 de Form1.
J'ai rajouté un "panel" dans le StatusBar en éditant sa propriété Panels.
L'astuce consiste à intercepter le message WM_WINDOWPOSCHANGING;
Dans le .h de Form2 déclarer :
Dans le .cpp de Form2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 protected : int __fastcall WINPOSCHANGING(TMessage Message); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, TMessage, WINPOSCHANGING) END_MESSAGE_MAP(TComponent)
Pour information :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int __fastcall TForm2::WINPOSCHANGING(TMessage Message) { WINDOWPOS *lpwp = (WINDOWPOS*)Message.LParam; Form1->StatusBar1->Panels->Items[0]->Text = IntToStr(lpwp->y); return(0); }
On peut sans doute améliorer ou simplifier car je ne maîtrise pas complètementThe WINDOWPOS structure contains information about the size and position
of a window.
typedef struct _WINDOWPOS {
HWND hwnd;
HWND hwndInsertAfter;
int x;//left
int y;//top
int cx;
int cy;
UINT flags;//Pour repaint etc...
} WINDOWPOS;
ce type de manipulation ! En tout cas, à ce stade, ça fonctionne.
A plus !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager