GetClientRect & co

Résolu
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012 - 14 déc. 2007 à 12:14
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012 - 14 déc. 2007 à 14:48
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 déc. 2007 à 14:47
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
3
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012
14 déc. 2007 à 14:48
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 !
3
Elxior Messages postés 56 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 29 août 2010 1
14 déc. 2007 à 14:04
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 déc. 2007 à 14:11
'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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012
14 déc. 2007 à 14:29
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
0
Rejoignez-nous