Question

J'écris une application direct3d et après avoir remarqué des bugs étranges tels que l'anti-aliasing, même quand il était désactivé et que le pointeur de la souris ne s'alignait pas sur les objets ayant les mêmes coordonnées que lui-même, j'ai découvert qu'en créant une fenêtre, les paramètres de largeur et de hauteur incluent la bordure. Le programme rendait une sortie graphique 800x600 dans une fenêtre de la même taille, mais à cause des bordures, elle était découpée en rectangle 792x566. J'ai augmenté la taille de la fenêtre pour compenser, mais cela ne fonctionne pas si le système utilise un style de bordure autre que le style XP standard. (Style classique, par exemple)

Existe-t-il un moyen de savoir quelle sera la largeur et la hauteur de la bordure avant de créer la fenêtre?

Était-ce utile?

La solution

On dirait que vous recherchez la fonction GetSystemMetrics. Par exemple, la largeur de la bordure en pixels est renvoyée par

GetSystemMetrics(SM_CXBORDER)

ADDED: Pour la taille totale, vous devez additionner les différentes "" pièces". de la zone non client: bordure, tailles de cadre, barres de titre, etc.

Autres conseils

Une autre option serait de s’assurer que la surface D3D a la même taille que la taille du rectangle du client ( GetClientRect () ). Ensuite, vous saurez que vous rendrez le rendu à la taille appropriée sans avoir à vous soucier de la largeur des menus, des bordures, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top