GetClientRect & co [Résolu]

Signaler
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012
-
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012
-
Au secours, je m'en sors pas sur les coordonnées et là je commence à tout mélanger et faire n'importe quoi

Contexte:
j'ai une form qui contient un OCX (usercontrol)
je crée un faut tooltip via une form. Sur le mousemove j'ai form.top=lY

le but que lY le place non pas au pointeur mais par exemple sur un control du usercontrol qui lui a un control.top

mais la ma form se place un peu n'importe ou sur l'écran et forcément j'ai fait n'importe quoi comme :

GetClientRect UserControl.ContainerHwnd, vRect
vPoint.y = vRect.top
ClientToScreen UserControl.ContainerHwnd, vPoint

form.top=y-vPoint.y

5 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,

l'API ClientToScreen doit suffire
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012

grrrrr y'a des claques qui se perdent !!

' Position du usercontrol par rapport à l'écran
GetWindowRect UserControl.hwnd, rc
lPosContX = rc.left
lPosContY = rc.top

lPosContY + Y suffit !
Messages postés
56
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
29 août 2010
1
Le control.top est relatif à son conteneur. Tu dois donc faire quelque chose du genre :

SonConteneur.Top + Control.Top

Et si le container à lui aussi un container faut l'additionner...

We can't solve problems by using the same kind of thinking we used when we created them.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
'lut Peug

j'ai pas compris la question mais je peux, je pense t'éclairer...

GetClientRect te donne les dimensions de la zone cliente... (la zone dans laquelle tu peux déposer tes controles...
GetWindowRect te donne les dimensions de la fenetre globale, barre de titre inclue.
la propriété Width de ta fenetre te donne la même chose (barre de titre inclue)
la propriété ScaleWidth ne comprend elle que la zone cliente (et mise a l'echelle de ScaleMode)

après, pour préciser ma réponse, je t'invite a reformuler ta question.
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012

oui déjà si j'explique mal... Puré j'ai passé 2h alors que d'autre fond ca en 30 secondes ,grrr

oui, Renfield c'est sur ces points et je commence donc a brûler.
J'ai une form1 qui contient un Usercontrol. Dans l'evènement mouseMove, je dois faire apparaître une form2 de taille d'un tooltip à des coordonnées différente de celle de la souris (sinon GetCursorpos aurait suffit)

voici où en est mon code :
Dim lPosFenX As Long, lPosFenY As Long
Dim lPosContX As Long, lPosContY As Long

' Position de la fenêtre par rapport à l'écran
GetWindowRect UserControl.ContainerHwnd, rc
lPosFenX = rc.left
lPosFenY = rc.top

' Position du usercontrol par rapport à l'écran
GetWindowRect UserControl.hwnd, rc
lPosContX = rc.left
lPosContY = rc.top

normalement Y+(lPosContY - lPosFenY) devrait suffire pour placer form2 où je vais... mais y'a un hic