Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Interface Graphique > Apprentissage de l'API Windows > Annexes > Documentation > Lecture du tutoriel

Documentation

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Mg++
Visualisations : 5 526


Plus d'informations Plus d'informations
Vous trouverez ici une mini-documentation remplie au fur et à mesure de l'avancement du tuto.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Fonctions

Voici la liste de toutes les fonctions de l'API Windows que vous avez découvertes dans ce tutoriel.
Pour chaque fonction, j'explique le rôle, ses paramètres et sa valeur de retour.

WinMain


Code : C
1
2
3
4
5
6
int WinMain(      
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
);

Description


Cette fonction est le point d'entrée de tout programme Windows, c'est elle qui est appelée en premier dans votre programme. C'est en quelque sorte l'équivalent du main en programme console.

Paramètres


Code : C
1
HINSTANCE hInstance

Ce paramètre est l'instance de votre programme, c'est-à-dire une sorte d'identifiant unique qui représente votre programme. Ce paramètre est très important, puisqu'il est utilisé dans de nombreuses fonctions ou structures comme WNDCLASS ou CreateWindow.

Code : C
1
HINSTANCE hPrevInstance

Ce paramètre est obsolète depuis la fin de Windows 16-bit, il est toujours mis à NULL.

Code : C
1
LPSTR lpCmdLine

Ce paramètre est une chaîne de caractères qui contient une copie conforme de la ligne de commande. Ainsi, contrairement aux programmes console, la ligne de commande n'est pas découpée en arguments mais conservée telle quelle.

Code : C
1
int nCmdShow

Ce paramètre a un lien avec ShowWindow, puisqu'il représente l'état dans lequel doit être affichée la fenêtre du programme : maximisée, minimisée,...

Valeur de retour


Si le WinMain se termine avant la boucle des messages (voir GetMessage), alors elle doit retourner 0.
Sinon, lorsqu'elle reçoit le message WM_QUIT, elle doit renvoyer la valeur contenue dans wParam (voir l'exemple dans la première partie).

RegisterClass


Code : C
1
2
3
ATOM RegisterClass(      
    CONST WNDCLASS *lpWndClass
);

Description


Cette fonction enregistre une classe de fenêtre pour une utilisation avec CreateWindow ou CreateWindowEx.
Cette fonction a maintenant été remplacée par une autre, plus puissante : RegisterClassEx, mais elle peut très bien continuer à être utilisée.

Paramètres


Le seul paramètre de cette fonction est un pointeur vers une structure de type WNDCLASS. Pour plus de précision, voir la description de la structure WNDCLASS.

Valeur de retour


Si la fonction réussit, la valeur retournée est un identifiant unique qui représente cette classe.
Si elle échoue, elle renvoie 0.

CreateWindow


Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HWND CreateWindow(      
    LPCTSTR lpClassName,
    LPCTSTR lpWindowName,
    DWORD dwStyle,
    int x,
    int y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU hMenu,
    HINSTANCE hInstance,
    LPVOID lpParam
);

Description


Cette fonction, comme son nom l'indique, sert à créer une fenêtre.
Sous Windows, il faut prendre le terme fenêtre au sens large : un contrôle (par exemple un bouton) est aussi une fenêtre.


Paramètres


Code : C
1
LPCTSTR lpClassName

Ce paramètre est le nom d'une classe précédemment enregistrée avec RegisterClass.
Il existe certaines classes prédéfinies pour les contrôles comme
"BUTTON" pour un bouton.
Voir la liste en annexe.


Code : C
1
LPCTSTR lpWindowName

Ce paramètre est le nom de la fenêtre lorsque l'on crée une "vraie" fenêtre.
Lorsqu'il s'agit d'un contrôle, ce paramètre peut être utile (ou non). Voilà une liste non exhaustive :


Code : C
1
DWORD dwStyle

Ce paramètre représente le style de la fenêtre, il résulte en fait de la combinaison de nombreuses styles.
Vous pourrez trouver une liste en annexe.
Il existe une série de styles qui s'appliquent à toutes les fenêtres, et d'autres qui ne s'appliquent qu'à certains contrôles.

Code : C
1
2
3
4
int x,
    int y,
    int nWidth,
    int nHeight

Ces paramètres représentent la position et la taille initiales de la fenêtre.
Si x=CW_USEDEFAULT, alors le système choisit automatiquement la position de la fenêtre.
CW_USEDEFAULT n'est autorisée que si la fenêtre a le style WS_OVERLAPPED, ou un style qui inclut WS_OVERLAPPED comme WS_OVERLAPPEDWINDOW.

Si nWidth=CW_USEDEFAULT, alors le système choisit automatiquement la taille par défaut de la fenêtre.
La même remarque que ci-dessus s'applique ici.


Code : C
1
HWND hWndParent

Ce paramètre est l'identifiant du parent de la fenêtre à créer.
Si ce paramètre vaut NULL, la fenêtre a pour parent le Bureau.

Code : C
1
HMENU hMenu

Ce paramètre, lors de la création d'une "vraie" fenêtre, est l'identifiant d'un menu qui s'affichera en haut de la fenêtre (vous savez comme 'Fichier', 'Édition', 'Aide', ...).
Lors de la création d'un contrôle, celui-ci représente un entier utilisé pour identifier le contrôle sans son HWND.
Par exemple:
Code : C
1
HMENU identifiantControle=(HMENU)1000;

Il est conseillé de lui donner une valeur supérieure à 100 pour éviter les conflits avec le système.


Si ce paramètre vaut NULL, la fenêtre n'a pas de menu, ou pas d'identifiant selon le cas.

Code : C
1
HINSTANCE hInstance

Ce paramètre est l'instance du programme qui crée la fenêtre ; ici en l'occurrence, le vôtre qui est passé en paramètre à WinMain.

Code : C
1
LPVOID lpParam

Ce paramètre est un pointeur vers ce que vous voulez, il est utilisé pour passer un paramètre supplémentaire lors de la création de la fenêtre.
Voir la notification WM_CREATE en annexe.

Valeur de retour


Cette fonction renvoie un handle (poignée) sur votre fenêtre, c'est-à-dire une sorte d'identifiant unique, qui vous servira à communiquer avec votre fenêtre pour (par exemple) créer des contrôles dans votre fenêtre, ou changer sa taille.
Si la valeur de retour vaut NULL, alors la création a échoué.

ShowWindow


Code : C
1
2
3
4
BOOL ShowWindow(      
    HWND hWnd,
    int nCmdShow
);

Description


Cette fonction sert à modifier la visibilité d'une fenêtre.

Paramètres


Code : C
1
HWND hWnd

Ce paramètre est le handle sur la fenêtre dont vous voulez modifier la visibilité.
Vous l'obtenez lors de l'appel à CreateWindow par exemple.

Code : C
1
int nCmdShow

Ce paramètre peut prendre plusieurs valeurs selon la visibilité que vous voulez appliquer.


Je fais une petite remarque :
vous avez sûrement remarqué que j'utilise le mot activé en parlant des fenêtres.
Qu'est-ce que cela veut dire ?
Simplement sous Windows, il y a UNE seule fenêtre active à un moment donné, on appelle ça le focus. C'est elle qui reçoit les événements venant du clavier et de la souris.


Valeur de retour


Cette fonction renvoie TRUE si elle a réussi, et FALSE si elle a échoué.

UpdateWindow


Code : C
1
2
3
BOOL UpdateWindow(
  HWND hWnd
);

Description


Cette fonction met à jour la zone client de la fenêtre, en la forçant à être redessinée en envoyant un message WM_PAINT directement à la fenêtre, au lieu de placer le message dans la file des messages.

Paramètres


Code : C
1
HWND hWnd

handle de la fenêtre dont la zone client est à redessiner.

Valeur de retour


La fonction renvoie TRUE en cas de succès, et FALSE en cas d'échec.

GetMessage


Code : C
1
2
3
4
5
6
BOOL GetMessage(      
    LPMSG lpMsg,
    HWND hWnd,
    UINT wMsgFilterMin,
    UINT wMsgFilterMax
);

Description


Cette fonction récupère un message dans la file du thread appelant.
La précision est importante, car si votre programme possède plusieurs thread, il faut faire attention à qui gère l'interface.


Paramètres


Code : C
1
LPMSG lpMsg

Ce paramètre est un pointeur vers une structure de type MSG (voir annexe) qui contiendra, après l'appel à la fonction, le message récupéré.

Code : C
1
HWND hWnd

Ce paramètre représente l'identifiant de la fenêtre dont on veut récupérer le message.
S'il ce paramètre vaut NULL, alors la fonction récupère un message qui appartient à n'importe quelle fenêtre créée par le thread.
L'intérêt de paramètre est de permettre une granularité plus fine sur les messages que l'on veut faire passer.


Code : C
1
UINT wMsgFilterMin,UINT wMsgFilterMax

Ces paramètres représentent respectivement les identifiants des messages les plus "bas" et les plus "hauts" à faire passer.
Si ces paramètres valent 0, tous les messages sont passés.
Valeurs particulières :


Valeur de retour


Cette fonction retourne TRUE si elle réussit, et FALSE si elle échoue.

translatemessage


Code : C
1
2
3
BOOL TranslateMessage(      
    const MSG *lpMsg
);

Description


Cette fonction est uniquement utile pour les messages de type clavier, elle traduit les événements de type Touche Virtuelle (voir note) en événement de types Caractère (voir note), et poste le message obtenu dans la file des messages.
Qu'est-ce que c'est donc que ça ?
En fait, lorsque vous appuyez sur une touche, le clavier envoie à Windows un nombre qui est le numéro physique de la touche, ensuite Windows traduit ce numéro en nombre qui est le numéro logique ou virtuel de la touche (les VK_*).
Le problème, c'est que pour les éditeurs de textes, ce n'est pas pratique de savoir quelle touche a été enfoncée ; ce qui les intéressent, c'est le caractère correspondant à cette touche.
C'est pourquoi cette fonction fait la traduction.


Paramètres


Code : C
1
const MSG *lpMsg

Ce paramètre est un pointeur vers le message récupéré par GetMessage.

Valeur de retour


Si le message a été traduit, cette fonction renvoie TRUE.
Si le message est WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN ou WM_SYSKEYUP, cette fonction renvoie TRUE.
Sinon, elle renvoie FALSE.

DispatchMessage


Code : C
1
2
3
LRESULT DispatchMessage(
    const MSG *lpmsg
);

Description


Cette fonction envoie le message à la fonction de callback de la fenêtre concernée.
En quelque sorte, c'est elle qui appelle votre fonction qui gère les messages.

Paramètres


Code : C
1
const MSG *lpMsg

Ce paramètre est un pointeur vers le message récupéré par GetMessage.

Valeur de retour


Cette fonction renvoie la valeur retournée par votre fonction de callback.
Par exemple, si dans votre de fonction de gestion des messages vous faites : "return 1000;",
alors, cette fonction retournera 1000.

WindowProc


Code : C
1
2
3
4
5
6
LRESULT CALLBACK WindowProc
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

Description


Ceci n'est pas vraiment une fonction de l'API Windows à proprement parler : c'est la fonction de gestion des messages envoyée à votre (vos) fenêtre(s).

Paramètres


Code : C
1
HWND hwnd

Ceci est le handle de la fenêtre concernée par le message.

Code : C
1
UINT uMsg

Ceci est l'identifiant du message.

Code : C
1
2
WPARAM wParam,
    LPARAM lParam

Ces paramètres sont entièrement dépendant du message envoyé.
Voir l'annexe sur les messages.

Valeur de retour


Ceci est la valeur retournée par vous-mêmes, ou la fonction DefWindowProc.

DefWindowProc


Code : C
1
2
3
4
5
6
LRESULT DefWindowProc(
    HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
);

Description


Cette fonction appelle la fonction de gestion des messages par défaut du système. Elle est utile lorsque vous ne gérez pas vous-mêmes le message.
En pratique, à chaque fois que vous ne gérez pas un message, vous appelez cette fonction.

Paramètres


Vous devez passer les paramètres de votre fonction de gestion des messages (voir WindowProc) tels quels..

Valeur de retour


Ceci est la valeur retournée par la fonction de gestion des messages. Vous devez retourner cette valeur :
Code : C
1
return DefWindowProc(hwnd,uMsg,wParam,lParam);


SendMessage


Code : C
1
2
3
4
5
6
LRESULT SendMessage(      
    HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
)

Description


Cette fonction permet d'envoyer un message à une fenêtre ou à un contrôle. C'est-à-dire qu'elle va appeler la fonction de gestion des messages de la fenêtre avec les paramètres que vous spécifiez.
Par exemple, si vous faites :
Code : C
1
SendMessage(hwnd,WM_QUIT,0,0);

Ceci va appeler une fonction de type WindowProc, associée à hwnd, avec exactement les mêmes paramètres que vous avez spécifiés.

Paramètres


Ce sont les même que pour WindowProc sauf que hWnd est l'identifiant de la fenêtre à laquelle vous envoyez le message.

Valeur de retour


Cette fonction renvoie la valeur retournée par la fonction de gestion des messages.

MessageBox


Code : C
1
2
3
4
5
6
int MessageBox(      
    HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
);

Description


Cette fonction extrêmement pratique permet d'afficher une petite fenêtre avec du texte dedans pour informer l'utilisateur, ou lui demander quelque chose.
Par exemple, lorsque vous fermez votre éditeur de texte préféré, vous obtenez un message :
Voulez-vous sauvegarder votre travail ?
Et un choix Oui / Non. Eh bien vous pouvez faire ceci avec MessageBox.


Paramètres


Code : C
1
HWND hWnd

Ce paramètre est le handle de la fenêtre qui sera le parent du message affiché.
Mais quel intérêt ?
Vous savez que quand ce message s'affiche dans votre éditeur de texte préféré, vous ne pouvez plus activer votre éditeur de texte, sinon vous obtenez un 'Beeeeeep'.
Eh bien c'est parce que le parent du message est la fenêtre de votre éditeur de texte.


Code : C
1
LPCTSTR lpText

Ce paramètre est la chaîne de caractères à afficher dans le message.
Si dans la chaîne de caractères vous mettez '\n', alors cela passera à la ligne suivante comme dans la console.


Code : C
1
LPCTSTR lpCaption

Ce paramètre est la chaîne de caractères à afficher comme titre de la fenêtre.
Si dans la chaîne de caractères vous mettez '\n', le résultat est indéfini.


Code : C
1
UINT uType

Ce paramètre est le type de message à afficher.
Il peut être la combinaison de plusieurs paramètres grâce au OU binaire(|).
Le premier groupe de paramètres spécifie les boutons à afficher :

Le deuxième groupe spécifie l'icône à afficher :

Le troisième groupe spécifie le bouton par défaut.
C'est quoi le bouton par défaut ?
Vous savez, quand vous avez un message et que vous appuyez sur Entrée, cela "appuie" sur le bouton qui apparaît différent des autres.


Le quatrième groupe spécifie le type de fenêtre :

Le dernier groupe spécifie d'autres options :


Valeur de retour


Si la fonction échoue, elle renvoie 0.
Si elle réussit, elle renvoie:


CreateMenu


Code : C
1
HMENU CreateMenu(VOID);

Description


Cette fonction permet de créer un menu. Ce menu est initialement vide.

Paramètres



Valeur de retour


Le handle du menu en cas de succès, et NULL en cas d'échec.

AppendMenu


Code : C
1
2
3
4
5
6
BOOL AppendMenu(      
    HMENU hMenu,
    UINT uFlags,
    UINT_PTR uIDNewItem,
    LPCTSTR lpNewItem
);

Description


Cette fonction permet d'ajouter un élément à un menu existant.
Par élément, on entend aussi bien un libellé (texte) qu'une case à cocher, une image ou un sous-menu.


Paramètres


Code : C
1
HMENU hMenu

Le handle du menu auquel on va ajouter l'élément.

Code : C
1
UINT uFlags

Ce paramètre peut être la combinaison d'un ou plusieurs de ces paramètres :


Les groupes suivants ne peuvent être utilisés ensemble :


Code : C
1
UINT_PTR uIDNewItem

Spécifie soit l'identifiant du menu, ou si uFlags est mis à MF_POPUP, le handle du sous-menu.

Code : C
1
LPCTSTR lpNewItem

Ce paramètre dépend de la valeur de lpNewItem :


Valeur de retour


La fonction renvoie TRUE en cas de succès, et FALSE en cas d'échec.

SetMenu


Code : C
1
2
3
4
BOOL SetMenu(      
    HWND hWnd,
    HMENU hMenu
);

Description


Cette fonction permet de définir le menu associé à une fenêtre.

Paramètres


Code : C
1
HWND hWnd

handle de la fenêtre à laquelle on assigne un nouveau menu.

Code : C
1
HMENU hMenu

handle du nouveau menu, ou NULL pour que la fenêtre n'ait plus de menu associé.

Valeur de retour


Elle renvoie TRUE en cas de succès, et FALSE en cas d'erreur.

En aucun cas cette fonction ne détruit le menu associé, vous devez appelez destroymenu pour accomplir cette tâche.


EnableMenuItem


Code : C
1
2
3
4
5
BOOL EnableMenuItem(      
    HMENU hMenu,
    UINT uIDEnableItem,
    UINT uEnable
);

Description


Cette fonction permet d'activer, désactiver et griser un élément d'un menu.

Paramètres


Code : C
1
HMENU hMenu

handle du menu auquel appartient l'élément à modifier.

Code : C
1
UINT uIDEnableItem

Ce paramètre est l'indice ou l'identifiant de l'élément du menu à modifier selon le paramètre uEnable.

Code : C
1
UINT uEnable

Ce paramètre peut prendre une ou plusieurs de ces valeurs :


Valeur de retour


La fonction retourne l'état précédent de l'élément modifié (MF_DISABLED, MF_ENABLED ou MF_GRAYED), ou -1 en cas d'échec.

CheckMenuItem


Code : C
1
2
3
4
5
DWORD CheckMenuItem(
    HMENU hmenu,
    UINT uIDCheckItem,
    UINT uCheck
);

Description


Cette fonction permet de définir l'état de la boîte à cocher de l'élément d'un menu.

Paramètres


Code : C
1
HMENU hmenu

handle de l'élément auquel appartient le menu.

Code : C
1
UINT uIDCheckItem

Ce paramètre est l'indice ou l'identifiant de l'élément du menu à modifier selon le paramètre uEnable.

Code : C
1
UINT uEnable

Ce paramètre peut prendre une ou plusieurs de ces valeurs :


Valeur de retour


La fonction retourne l'état précédent de l'élément modifié (MF_CHECKED ou MF_UNCHECKED), ou -1 en cas d'échec.

LoadMenu


Code : C
1
2
3
4
HMENU LoadMenu(      
    HINSTANCE hInstance,
    LPCTSTR lpMenuName
);

Description


Cette fonction permet de charger un menu contenu dans une ressource de l'exécutable.

Paramètres


Code : C
1
HINSTANCE hInstance

Instance du programme qui contient la ressource à charger.

Code : C
1
LPCTSTR lpMenuName

Nom de la ressource à charger.
Peut être une chaîne de caractères, ou un identifiant formé avec la macro MAKEINTRESOURCE.

Valeur de retour


Elle renvoie le handle du menu en cas de succès, et NULL en cas d'échec.

CreateDialog


Code : C
1
2
3
4
5
6
HWND CreateDialog(      
    HINSTANCE hInstance,
    LPCTSTR lpTemplate,
    HWND hWndParent,
    DLGPROC lpDialogFunc
);

Description


Cette fonction permet de créer une boîte de dialogue stockée en ressource dans l'exécutable.

Paramètres


Code : C
1
HINSTANCE hInstance

Instance du programme auquel appartient la ressource.

Code : C
1
LPCTSTR lpTemplate

Nom de la ressource de type boîte de dialogue.
Peut être un pointeur sur une chaîne de caractères, ou une valeur formée par la macro MAKEINTRESOURCE.

Code : C
1
HWND hWndParent

handle de la fenêtre parent de la boîte de dialogue.

Code : C
1
DLGPROC lpDialogFunc

Pointeur vers la fonction de gestion des messages de la boîte de dialogue.

Valeur de retour


Cette fonction renvoie le handle de la boite de dialogue, ou NULL en cas d'échec.

DialogBox


Code : C
1
2
3
4
5
6
INT_PTR DialogBox(      
    HINSTANCE hInstance,
    LPCTSTR lpTemplate,
    HWND hWndParent,
    DLGPROC lpDialogFunc
);

Cette fonction (qui en fait est une macro) fait la même chose que CreateDialogBox, sauf qu'elle ne rend le contrôle que lors de la destruction de la boîte de dialogue avec la fonction EndDialog.

Paramètres


Ceux sont les mêmes que pour la fonction CreateDialogBox.

Valeur de retour


Cette fonction renvoie la valeur passée au paramètre nResult de la fonction EndDialog.

EndDialog


Code : C
1
2
3
4
BOOL EndDialog(      
    HWND hDlg,
    INT_PTR nResult
);

Description


Cette fonction détruit la boîte de dialogue, et rend le contrôle au thread lorsque celle-ci a été créée avec la fonction DialogBox qui est bloquante.

Paramètres


Code : C
1
HWND hDlg

handle de la boîte de dialogue à détruire.

Code : C
1
INT_PTR nResult

Spécifie une valeur à retourner à l'application lors de la destruction.

Cette fonction ne détruit pas instantanément la boîte de dialogue, mais attend que la fonction qui a créé la boîte de dialogue rende le contrôle.

Messages

Voici la liste de tous les messages de l'API Windows que vous avez découverts dans ce tutoriel, et qui sont envoyés à la fonction de gestion des messages .
Pour chaque message, j'expliquerai sa signification ainsi que celle des paramètres wParam et lParam et de la valeur retournée.

WM_CREATE


Description


Ce message est envoyé lors de la création d'une fenêtre avec CreateWindow et CreateWindowEx.

wParam


Ce paramètre est inutilisé.

lParam


Pointeur vers une structure de type CREATESTRUCT.
Voir Annexe sur les structures.

Valeur de retour


Retournez 0 pour continuer la création de la fenêtre, ou -1 pour annuler la création.

WM_DESTROY


Description


Ce message est envoyé lorsqu'une fenêtre va être détruite.

wParam


Ce paramètre est inutilisé.

lParam


Ce paramètre est inutilisé.

Valeur de retour


Retournez 0.

WM_COMMAND


Description


Ce message est utilisé lorsque l'utilisateur interagit avec un contrôle.

wParam


Le mot haut (récupérable avec HIWORD) est le code de notification du contrôle. Celui-ci est spécifique à chaque classe de contrôle. Il vaut 1 si le message vient d'un raccourci clavier, et 0 si le message vient d'un menu.
Le mot bas (récupérable avec LOWORD) est l'identifiant de la fenêtre spécifié lors de la création avec CreateWindow et le paramètre hMenu.

lParam


handle du contrôle (fils de la fenêtre qui reçoit le message) qui a envoyé le message.
Il vaut NULL si ce n'est pas un contrôle.

Valeur de retour


Retournez 0.

Structures

Voici la liste de toutes les structures de l'API Windows que vous avez découvertes dans ce tutoriel.
Pour chaque structure, j'expliquerai le rôle de chacun des membres.

WNDCLASS


Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
typedef struct {
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCTSTR lpszMenuName;
    LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;

Description


Cette structure est utilisée lors de la création d'une classe de fenêtre.
Elle est passée en paramètre à RegisterClass.

Membres


Code : C
1
UINT style

Spécifie les styles de la classe, ce peut être une combinaison avec le OU binaire (|) de n'importe quel paramètre :


Mais qu'est-ce qu'un DC ?
Un DC (Device Context) est utilisé lors du dessin dans la zone client d'une fenêtre.
Par exemple, lorsque vous créez des boutons dans une fenêtre, ceux-ci sont dessinés dans des DC, puis ces DC sont copiés sur le DC du parent qui est ensuite affiché.
On peut voir un DC comme une zone de dessin.
Le paramètre CS_PARENTDC permet, au lieu de copier les DC des fils dans celui du parent (ce qui est lent), de dessiner directement le fils dans le DC du parent.
Les DC sont principalement utilisé avec les fonctions du GDI qui permettent de dessiner des rectangles, carrés, du texte, des polygones, etc.


Code : C
1
WNDPROC lpfnWndProc

Ce membre est un pointeur vers la fonction de gestion des messages arrivant à toutes les fenêtres de cette classe.

Code : C
1
int cbClsExtra

Spécifie le nombre d'octets supplémentaires à allouer dans la structure de la classe.
Cela permet de stocker des données supplémentaires associées à cette classe.

Code : C
1
int cbWndExtra

Spécifie le nombre d'octets supplémentaires à allouer dans la structure d'une fenêtre.
Cela permet de stocker des données supplémentaires associées à chaque fenêtre.

Code : C
1
HINSTANCE hInstance

Instance du programme qui crée la classe.
Cette variable est passée en paramètre au WinMain.

Code : C
1
HICON hIcon

handle de l'icône à afficher dans la barre de titre des fenêtres de cette classe.

Code : C
1
HCURSOR hCursor

handle du curseur à afficher quand le pointeur de la souris est au-dessus de la fenêtre.

Code : C
1
HBRUSH hbrBackground

Brosse à utiliser pour dessiner le fond de la fenêtre (c'est en rapport avec le GDI).
Il y en a quelques-unes prédéfinies :

Si ce paramètre est NULL, le programme doit dessiner lui-même le fond de la fenêtre lors des notification WM_PAINT ou WM_ERASEBKGND.

Code : C
1
LPCTSTR lpszMenuName

Nom de la ressource à utiliser comme menu pour les fenêtres de la classe (voir note).

Code : C
1
LPCTSTR lpszClassName

Nom de la classe. Il doit être unique dans le programme pour que la classe soit enregistrée avec succès.

Qu'est-ce qu'une ressource ?
Une ressource est une donnée spéciale intégrée à l'exécutable avec un nom.
Par exemple, on peut intégrer une image, un menu, un raccourci clavier, une fenêtre, etc.
Chaque ressource est identifiée par un nom qui peut être une chaîne de caractères ou un identifiant.
Les ressources peuvent aussi être intégrées à l'exécutable avec un fichier .rc.


MSG


Code : C
1
2
3
4
5
6
7
8
typedef struct {
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD time;
    POINT pt;
} MSG, *PMSG;

Description


Cette structure représente un message dans la file des messages envoyés à une fenêtre.

Membres


Code : C
1
HWND hwnd

Ceci est le handle de la fenêtre qui doit recevoir le message.

Code : C
1
UINT message

Identifiant du message (c'est le même que celui passé à la fonction de gestion des messages).

Code : C
1
2
WPARAM wParam
LPARAM lParam

Ce sont des paramètres supplémentaires passés à la fonction de gestion des messages.

Code : C
1
DWORD time

L'heure à laquelle le message a été posté.

Code : C
1
POINT pt

Position du curseur lorsque le message a été posté.

CREATESTRUCT


Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
typedef struct tagCREATESTRUCT {
    LPVOID lpCreateParams;
    HINSTANCE hInstance;
    HMENU hMenu;
    HWND hwndParent;
    int cy;
    int cx;
    int y;
    int x;
    LONG style;
    LPCTSTR lpszName;
    LPCTSTR lpszClass;
    DWORD dwExStyle;
} CREATESTRUCT, *LPCREATESTRUCT;

Description


Cette structure est passée en paramètre avec le message WM_CREATE.
Elle permet de connaître les paramètres exacts avec lesquels la fenêtre a été créée.

Membres


Les membres sont exactement les mêmes que pour CreateWindow.
Seules précisions :


int x
int y
int cx
int cy


Si, lors de la création, vous avez spécifié CW_USEDEFAULT ou 0, la valeur vaudra alors la taille réelle de la fenêtre.

RECT


Code : C
1
2
3
4
5
6
typedef struct _RECT { 
  LONG left; 
  LONG top; 
  LONG right; 
  LONG bottom; 
} RECT;

Description


Cette structure permet de stocker différents paramètres qui ont à voir avec des rectangles comme des dimensions, des marges ou des positions...

Membres


Code : C
1
LONG left

Coordonnée en abscisse du coin supérieur gauche.

Code : C
1
LONG top

Coordonnée en ordonnée du coin supérieur gauche.

Code : C
1
LONG right

Coordonnée en abscisse du coin inférieur droit.

Code : C
1
LONG bottom

Coordonnée en ordonnée du coin inférieur droit.

La documentation sera remplie au fur et à mesure de l'avancement du tuto, et de notre temps libre. ;)
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 16/08/2006 à 11:53:13
Modifié : le 22/08/2008 à 15:53:16
Avancement : 25%
Licence : Copie non autorisée

Commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 168 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0259s (0.0142s)