Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Tutorial d'initiation
A la programmation avec l'API Windows

Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
PrécédentIndexSuivant

Chapitre 3

Les fenêtres

7. Gestion de base d'une fenêtre

Cours théorique :

La gestion d'une fenêtre se fait à deux niveaux : au niveau de la procédure qui gère tous les messages reçus par la fenêtre et par des fonctions permettant diverses manipulation sur la fenêtre.

Voici un rapide aperçu des fonctions les plus utiles pour manipuler les fenêtres :

SetWindowText() modifie le texte de la barre de titre.

GetWindowText() retourne le texte de la barre de titre.

SetWindowPos() modifie la taille de la fenêtre, sa position sur l'écran, ainsi que sa position par rapport aux autres fenêtres (Z-order).

GetWindowPlacement() retourne des informations sur le statut courant de la fenêtre spécifiée.

GetClientRect() retourne la taille de la zone client de la fenêtre.

GetWindowRect() retourne la taille totale occupée par la fenêtre sur l'écran.

AdjustWindowRect modifie la taille de la fenêtre spécifiée.

GetParent() retourne la fenêtre parent de la fenêtre spécifiée.

SetParent() modifie la fenêtre parent de la fenêtre spécifiée.

ShowWindow() modifie l'état courant d'une fenêtre.

IsIconic(), IsZoomed(), IsWindowVisible() retournent des informations sur l'état de la fenêtre courante.

GetWindow() retourne la fenêtre ayant une relation spécifiée dans le Z-order par rapport à la fenêtre passée en paramètre.

La procédure de fenêtre, quant à elle, gère l'ensemble des messages envoyés à une fenêtre. Comme les messages envoyés à une fenêtre sont extrêmement nombreux, il serait très pénible de devoir tous les traiter, en particulier pour des fenêtres simples. L'API Windows fournit la fonction DefWindowProc() qui propose un traitement par défaut de tous les messages envoyés à une fenêtre. Pour un traitement personnalisé du message, il ne faut pas appeler la fonction DefWindowProc(). Le traitement par défaut de la plupart des messages est en général satisfaisant. Cependant, pour imposer des comportements personnalisés à une fenêtre, il s'avère obligatoire d'effectuer un traitement personnalisé de certains messages (ex. : pour masquer la fenêtre lors d'une pression sur la 'croix').

Voici un aperçu rapide des messages les plus courants :

WM_CREATE est envoyé à une fenêtre au moment de sa création.

WM_PAINT est envoyé lorsqu'une partie de la zone client doit être redessinée.

WM_ERASEBKGND est utilisé pour demander l'effacement d'une partie de la zone client.

WM_SYSCOMMAND est envoyé pour le traitement de différents évènements pouvant survenir (fenêtre minimisée, restaurée, ...).

WM_ACTIVATE est envoyé lorsqu'une fenêtre est activée ou désactivée.

WM_MOVE est envoyé lorsque la fenêtre a été déplacée.

WM_SIZE est envoyé lorsque la taille de la fenêtre à été modifiée.

WM_CLOSE indique que l'utilisateur demande la fermeture de l'application (en cliquant sur la 'croix' ou en pressant ALT+F4).

WM_DESTROY indique que la fenêtre est détruite.

Ces messages sont les premiers à utiliser pour le maniement d'une fenêtre. De nombreux autres seront utilisés pour gérer les interactions avec l'utilisateur (souris, clavier). Ils seront vus plus tard. Dans la plupart des cas, seul un nombre relativement peu élevé de messages sera traité par l'application elle même. Les autres seront passés à la fonction DefWindowProc().


PrécédentIndexSuivant

Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.