Position rectangle client

Résolu
Shromilder Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 février 2010 - 9 juil. 2007 à 21:20
Shromilder Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 février 2010 - 10 juil. 2007 à 00:37
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 22:44
ClientToScreen() et tu compares avec GetWindowRect().

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

GetWindowRect(hWndClient, &r);

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

ScreenToClient(hWndParent, &p);
3
Shromilder Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 février 2010
10 juil. 2007 à 00:14
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;
0
Shromilder Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 février 2010
10 juil. 2007 à 00:35
sinon le mode bidouille je crois que c'est:
ClientX = GetSystemMetrics(SM_CXDLGFRAME);
ClientY = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME);

à confirmer
0

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

Posez votre question
Shromilder Messages postés 32 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 février 2010
10 juil. 2007 à 00:37
14000 msgs BruNews, congratulations
0
Rejoignez-nous