2010-01-24 6 views
3

Collé sur un petit problème délicat. Je crée une interface graphique en C++ en utilisant XP et VS C++ en utilisant la commande CreateWindow().Créer une fenêtre carrée C++

Ma question est, comment puis-je faire de la région à peindre à l'intérieur un carré parfait. Lorsque vous passez dans la taille de la fenêtre à créer, une partie est déduite pour la barre de menu en haut, la bordure tout autour, etc. Y a-t-il des variables en temps réel que je peux transmettre, par ex. pour créer une fenêtre 500x500 serait:

...500+BORDER,500+MENU_TOP+BORDER... 

Merci à tous

Répondre

4

Comme je le fais habituellement avec AdjustWindowRect. Je trouve cela plus simple que les autres méthodes suggérées (qui devraient fonctionner aussi bien, c'est votre choix). Utilisez-le comme tel:

RECT rect = {0, 0, desiredWidth, desiredHeight}; 

AdjustWindowRect(&rect, windowStyle, hasMenu); 

const int realWidth = rect.right - rect.left; 
const int realHeight = rect.bottom - rect.top; 

Et passer realWidth & realHeight-CreateWindow. Comme son nom l'indique, la fonction ajustera la fenêtre en fonction du style de votre fenêtre et de l'utilisation du menu, de sorte que la région du client corresponde à la taille souhaitée.

+0

Fonctionne très bien, merci! – Ljdawson

+0

Pas de problème: 3 – GManNickG

0

vous pouvez trouver toutes les dimensions pertinentes (fenêtres FrameWidth, la hauteur de la barre de menus, etc) ici: GetSystemMetrics(). En utilisant ces valeurs, vous devriez être capable de créer une fenêtre carrée parfaite

0

Vous pouvez obtenir toutes les mesures de l'interface utilisateur à partir de l'appel API GetSystemMetrics(). Par exemple, le menu sera SM_CXMENU et SM_CYMENU.

Questions connexes