Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2725 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Déterminer la taille d'une fenêtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Déterminer la taille d'une fenêtre

n°324031
Skydude
Life is short, Row hard
Posté le 05-03-2003 à 22:15:05  profilanswer
 

Encore moi avec un problème de fenêtres :)
J'utilise la fonction GetWindowRect pour déterminer la taille de ma fenêtre (si jamais l'utilisateur l'agrandit par exemple), pour redessiner mon dessin à l'échelle (pour qu'il prenne tjrs toute la fenêtre).
Donc je vous livre la portion de code que j'utilise :
 

Code :
  1. RECT *lpRect;
  2. if(GetWindowRect(hwnd, lpRect))
  3. {
  4.    *largeur=(*lpRect).right-(*lpRect).left;
  5.    *hauteur=(*lpRect).bottom-(*lpRect).top;
  6. }


 
Alors ça marche pas trop mal, mais de temps en temps, spécialement dans les 2 cas suivants :
- Agrandissement de la fenêtre (taille maximale, avec le bouton en haut à droite)
- Réduction puis réactivation de la fenêtre,
eh ben ça me sort une erreur "L'instruction à ... emploie l'adresse mémoire 0x000000001. La mémoire ne peut pas être written"....
Une idée ? Paske de temps en temps ça marche et de temps en temps non... :??:

mood
Publicité
Posté le 05-03-2003 à 22:15:05  profilanswer
 

n°324063
Poireau
Posté le 05-03-2003 à 22:41:24  profilanswer
 

Code :
  1. RECT *lpRect;
  2. if(GetWindowRect(hwnd, lpRect))
  3. {
  4.    *largeur=(*lpRect).right-(*lpRect).left;
  5.    *hauteur=(*lpRect).bottom-(*lpRect).top;
  6. }


 
 
Il faut bien lire la documentation, GetWindowRect n'alloue pas une type RECT, il faut lui passer l'adresse d'une variable existante. Car là, lpRect pointe sur n'importe quoi...
De plus, largeur et hauteur ne sont pas definies dans cette portion de code. Egalement, le code est correct si ce sont des pointeurs sur des entiers (initialises)...
Donc comme ca, ca devrait mieux fonctionner :
 

Code :
  1. RECT Rect;
  2. if(GetWindowRect(hwnd, &Rect))
  3. {
  4.    largeur=Rect.right-Rect.left;
  5.    hauteur=Rect.bottom-Rect.top;
  6. }


 
EDIT: Quand ca fonctionne c'est que lpRect pointe (aléatoirement) sur une zone memoire ou tu as un acces en ecriture. L'inverse lève une exception...


Message édité par Poireau le 05-03-2003 à 22:47:44
n°324102
Skydude
Life is short, Row hard
Posté le 05-03-2003 à 23:17:50  profilanswer
 

Ah ok merci bien ça marche.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Déterminer la taille d'une fenêtre

 

Sujets relatifs
Taille maximal d'une trame dans une session TCPEffacer une fenêtre
taille des buffers de reception d'un recvCode source d'une fenetre de sauvegarde
[php] limiter la taille des img en uploadForcer le rafraichissement de la fenêtre parent sans connaitre son nom
le tag html qui permet de mettre la fenêtre en plein écran (F11)[Flash] Taille du texte dynamique
coordonnée d'une fenêtre sous AccessGridBagLayout Swing, tout déconne quand je resize la fenetre
Plus de sujets relatifs à : Déterminer la taille d'une fenêtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR