Programmation Windows

Note 1: les fichiers exécutables windows ont généralement l'extension .exe.

Note 2: La fonction principale main() n'a pas besoin de retour. void main() ou void main(int argc, char *argv).

Handle: identifiant d'un objet de Windows

HACCEL handle vers une table de raccourcis
HBITMAP handle d'un bitmap
HBRUSH handle d'un pinceau
HDC handle de contexte de périphérique
HDLG handle d'une boîte de dialogue
HEDIT handle d'une zone d'édition
HINSTANCEhandle d'instance de programme
HMENU handle d'un menu
HWND handle d'une fenêtre

Message: données envoyer par Windows pour avertir une application

WM_COMMAND il y a eu une sélection dans un menu
WM_CREATE la fenêtre a été créée
WM_DESTROY la fenêtre a été détruite
WM_LBUTTONDBLCLKil y a eu un double clic gauche dans la zone client
WM_PAINT il faut redessiner la zone client

Envoie de message à Windows: SendMessage()

Librairie pour Windows: windows.h

Fonction principale: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

hInst     : correspond à l'instance courante de l'application. 
HPrevInst : correspond à l'instance précédente.
          : Est toujours égale a NULL pour les applications Win32. 
lpCmdLine : pointe vers la ligne de commande. 
nCmdShow  : spécifie comment la fenêtre doit être montrée

Classe:

 MSG msg;
 WNDCLASS winclass;
 WNDCLASSEX // 32 bits;
 {
  hInstance     : indique à Windows quelle instance de l'application est en cours. 
  lpszClassName : est de type char *. Il doit recevoir le nom que vous souhaitez donner à la classe. 
  lpfnWndProc   : pointeur vers la procedure qui reçoit les messages renvoyés par le programme.
                  Passez lui simplement le nom que vous avez donnez à la procédure. [CALLBACK FUNCTION]
  hCursor       : correspond au type de curseur qu' on veut choisir.
                  Dans LoadCursor () le premier paramètre est NULL , ce qui signifie qu' on prend un des curseur standard de Windows spécifié dans le deuxième argument. 
  lpszMenuName  : peut être égale à l'identificateur d' une ressource de type menu ou à 
                  NULL si on ne veut pas de menu. 
  hIcon         : contient une référence au type d'icone utilisé.
                  La fonction LoadIcon() fonctionne sur le même principe que LoadCursor(). 
  hIconSm       : doit contenir la référence d'une icone associée avec la classe.
  cbClsExtra    : spécifie le nombre d'octets supplémentaires à alouer en plus des octets alloués pour la classe. 
  cbWndExtra    : spécifie le nombre d'octets supplémentaires à alouer en plus des octets alloués pour la fenêtre. 
  hbrBackground : represente la couleur de fond de la partie cliente de la fenetre (client area).
                  C'est la portion de la fenetre située normalement sous la barre de menu dans laquelle l'utilisateur peut entrer des données.
                  Par exemple dans un traitement de texte c'est là ou on ecrit. 
                  On renvoit une couleur système (ici GRAY_BRUSH) définie dans le premier parametre de la fonction GetStockObject() qui va la chercher.
                  Cette valeur doit etre convertie au format HBRUSH de la façon decrite. 
  cbSize        : contient la taille en octets de la classe WNDCLASSEX. 
 }

 UINT : Unsigned INT
 WPARAM : Word PARAMeter (unsigned int)
 LPARAM : Long PARAMeter (LONG)
 LPSTR  : Long Pointer STRing