Position rectangle client [Résolu]

Signaler
Messages postés
32
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 février 2010
-
Messages postés
32
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 février 2010
-
Bonjour tout le monde
Voila, je cherche à trouver comment avoir la position du client d'une boite de dialog.
J'ai bien la commande GetClientRec() mais cette fonctionne ne donne pas vraiment la vrai position par rapport à la position du dialog (ca donne 0,0 comme point en haut à gauche).
Si je créer une dialog avec rien dedans, spy++ me dit que le "Rectangle client" se trouve à 3x22 pixel du haut de ma fenètre.
Je voulais donc savoir comment cela etait trouvé.
Je crois avoir trouvé une bidouille qui consiste à utiliser la commande SystemParametersInfo(SPI_GETNONCLIENTMETRICS) pour trouver la taille de la police et la taille des bords mais bon... ca me parait plutot compliqué pour juste trouver des pixels
Si vous connaissez une fonction plus rapide ou même comment calculer le 22px, je suis preneur

Merci d'avance, cordialement.

5 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
ClientToScreen() et tu compares avec GetWindowRect().

ciao...
BruNews, MVP VC++
Messages postés
178
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010
1
RECT r;
POINT p;

GetWindowRect(hWndClient, &r);

p.x = r.left;
p.y = r.top;

ScreenToClient(hWndParent, &p);
Messages postés
32
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 février 2010

Merci messieurs
J'avais vu ces fonctions mais j'avais pas internet à ce moment là donc impossible de voir ce que ca donnait.
Py quand j'ai retrouvé internet, j'ai oublié de les verifier
Bon ca marche!!!

POINT p;
p.x = 0;
p.y = 0;
ClientToScreen(hWndScreenshot,&p);
RECT rcScreenshot;
GetWindowRect(hWndScreenshot, &rcScreenshot);
int ClientX, ClientY;
ClientX = p.x - rcScreenshot.left;
ClientY = p.y - rcScreenshot.top;
Messages postés
32
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 février 2010

sinon le mode bidouille je crois que c'est:
ClientX = GetSystemMetrics(SM_CXDLGFRAME);
ClientY = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME);

à confirmer
Messages postés
32
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 février 2010

14000 msgs BruNews, congratulations