Je dois obtenir en quelque sorte la largeur de la bordure d'une fenêtre (fixe) (la verticale). Par défaut sur WinXP c'est assez mince mais sur Win7 avec Aero on, c'est beaucoup plus épais.Taille de la bordure d'une fenêtre fixe
Je pensais que GetSystemMetrics ferait l'affaire, mais il semble qu'il retourne les mêmes valeurs pour les systèmes XP et Win7, j'ai vérifié les paramètres suivants:
SM_CXBORDER
SM_CXEDGE
SM_CYFIXEDFRAME
SM_CYBORDER
SM_CXFIXEDFRAME
Mais comme je l'ai écrit, ils retournent les mêmes valeurs pour les deux OS, peu importe l'épaisseur de la bordure de la fenêtre verticale. La fenêtre a été créée avec les drapeaux WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
si cela aide (ce n'est pas important).
Merci pour vos commentaires.
Kra
qui ne fonctionne pas non plus, malheureusement. Je reçois le résultat 6 pour les deux systèmes d'exploitation. Je n'ai pas vraiment besoin de calculer la superficie du client ou quelque chose comme ça. J'ai besoin d'aligner une autre fenêtre à celle-ci et je dois considérer l'épaisseur de la bordure verticale droite pour le faire (je connais la largeur de fenêtre utilisée dans CreateWindowEx mais qui ne contient pas de bordure). Basé sur votre idée, j'ai également essayé d'utiliser GetWindowRect (hwnd, & rect) et d'aligner l'autre fenêtre sur rect.right mais aussi loin d'une bordure. – Kra
Ensuite, il doit être 6. Pouvez-vous donner un exemple que cette valeur est erronée (capture d'écran)? Rappelez-vous qu'une ombre ne fait pas partie de la bordure de la fenêtre. – adf88
Voici à quoi cela ressemble dans Win7, notez que la deuxième fenêtre chevauche la bordure: http://img17.imageshack.us/img17/9882/win7i.png Voici à quoi ça ressemble dans XP, c'est correctement aligné: http://img838.imageshack.us/img838/3656/85193079.png Cette valeur dans la boîte de message est la suivante: GetClientRect (hMainWnd, & smaller); GetWindowRect (hMainWnd, & plus grand); MsgBox val = plus grand.pièce - plus grand.pièce - plus petit.proissant); Notez que je 2ème fenêtre coin gauche est aligné avec une valeur fixe, il n'est pas calculé .. mais .. après je sais comment calculer la frontière, je vais la mettre en œuvre :) – Kra