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

2. Fonctionnement général d'une fenêtre

Cours théorique :

Le fonctionnement général des fenêtres a déjà été vu au cours du premier chapitre. Un petit rappel ainsi que quelques précisions est cependant nécessaire.

Lorsqu'une fenêtre est créée, le système lui attribue un identifiant. Cet identifiant est appelé 'handle'. Il identifié la fenêtre dans son ensemble. Toute modification de la fenêtre (déplacement, modification de la taille) se fait grâce à cet identifiant. Une application utilisant plusieurs fenêtres pourra donc être amenée à définir des variables globales contenant les identifiants des différentes fenêtres pour plus de confort. Cette définition globale n'est absolument pas nécessaire et peut être évitée dans le cas d'applications simples (le passage en paramètre des identifiants devient rapidement impossible).

La fenêtre d'une application ne correspond absolument pas à l'application elle même. Une application (ou processus) peut être exécutée et ne pas avoir de fenêtre. La création de la fenêtre est effectuée par le programme lui même. De plus, elle est totalement facultative. Aucune fenêtre ne sera créée par le système au moment de l'exécution de l'application. De plus, la fermeture de la fenêtre n'entraîne pas la fermeture de l'application. C'est au programmeur de faire concorder ces deux événements si il le désire. Bien entendu la majorité des applications créent une fenêtre au démarrage et se terminent lors de la fermeture de cette même fenêtre, mais ce n'est en rien une obligation. De plus, une fenêtre peut avoir plusieurs états, visible, cachée, minimisée... Lorsqu'une fenêtre est créée, elle n'est pas visible. Elle existe, ont peut la déplacer, afficher dans sa zone client... Cependant, rien de tout ceci n'est visible à l'utilisateur. Dès qu'on donne à une fenêtre le statut 'visible', elle apparaît à la même position que lorsqu'elle était invisible. Lorsqu'on détruit une fenêtre, elle n'est plus affichée à l'écran, mais dans ce cas, on ne peut plus la modifier. Elle n'existe plus pour le système. Il ne faut donc pas confondre une fenêtre cachée, qui existe toujours bien que n'étant pas visible, et une fenêtre détruite, qui elle n'existe plus.

Une fenêtre contient différentes zones. La zone client est la zone (généralement blanche) dans laquelle les données de la fenêtre sont affichées. Les menus, la barre de titre, ne font pas partie de la zone client. La zone client est la seule partie de la fenêtre qui soit gérée par l'application. La taille de la fenêtre sur l'écran est donc différente de celle de la zone client. La zone client est nécessairement de taille égale ou inférieure à l'espace occupé par la fenêtre. Pour afficher des données dans une fenêtre, on utilise des coordonnées relatives à la zone client. Pour déplacer une fenêtre, on utilise des coordonnées relatives à l'écran (coin supérieur gauche).

Pour identifier la zone client, on utilise un contexte d'affichage. Il définit l'ensemble des propriétés relatives à l'affichage dans la zone client (nombre de couleurs disponibles, type de police...). Un contexte d'affichage identifie une zone dans laquelle ont peut afficher n'importe quel type de données. Cette zone n'est pas nécessairement affichée à l'écran, on peut par exemple afficher des données dans une fenêtre cachée en utilisant le même contexte d'affichage. Dans ce cas, le contexte d'affichage est lié à la fenêtre, on peut donc l'obtenir à partir de l'identifiant de la fenêtre concernée. Pour afficher dans la zone client, il n'est donc jamais nécessaire de se préoccuper de la position de la fenêtre sur l'écran, il suffit de posséder un 'handle' sur le contexte d'affichage.


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.