| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 
 |  
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
 
 
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
     static CHAR szAppName[] ="Salut" ;
     HWND         hwnd ;		// handle de le fenêtre
     MSG          msg ;			// structure de message
     WNDCLASS     wndclass ;		// Classe de fenêtre
 
     wndclass.style         = NULL;			// style de la fenêtre
     wndclass.lpfnWndProc   = WndProc ;		// Nom de la procédure de fenêtre
     wndclass.cbClsExtra    = 0 ;		// réserve de la place supplémentaire dans la structure de la classe
     wndclass.cbWndExtra    = 0 ;		// réserve de la place supplémentaire dans la  structure de la fenêtre
     wndclass.hInstance     = hInstance ;			// handle de l'application
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;	// charge un icône pour l'application
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;		// charge style de le curseur de la souris
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;	// définit la couleur de fond de l'application 
     wndclass.lpszMenuName  = NULL ;					// nom du menu à charger (ici aucun)
     wndclass.lpszClassName = szAppName ;				// nom de la classe
 
     if (!RegisterClass (&wndclass))	// enregistrement de la classe
     {
          MessageBox (NULL, "Problème!", szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     hwnd = CreateWindow (		// Création de la fenêtre
         	szAppName,	              	// nom de la classe
                "Texel", 		// titre de la fenêtre
                WS_OVERLAPPEDWINDOW,      // style de la fenêtre
                CW_USEDEFAULT,               // position initiale sur x
                CW_USEDEFAULT,              // position initiale sur y
                CW_USEDEFAULT,              // largeur initiale
                CW_USEDEFAULT,              // hauteur initiale
                NULL,                       // handle de la fenêtre mère ( pas de fenêtre fille donc pas de fenêtre mère)
                NULL,                      // handle du menu de la fenêtre ( pas de menu ici donc NULL)
                hInstance,                  // handle de l'instance (application)
                NULL) ;                     // paramètres de création ( très souvent égal à NULL)
 
     ShowWindow (hwnd, iCmdShow) ;		// affiche la fenêtre à l'écran
     UpdateWindow (hwnd) ;			// rafraîchis le contenu de la zone cliente ( la fenêtre devient visible)
 
     while (GetMessage (&msg, NULL, 0, 0))	// lit un message de la file d'attente
     {
          TranslateMessage (&msg) ;		// traduis les msg d'événement de touche en msg de caractère
          DispatchMessage (&msg) ;		// appel la procédure de fenêtre
     }
     return msg.wParam ;
}
 
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{ 
    switch (message)
     {
 
       case WM_DESTROY:	// message de fermeture du programme
          PostQuitMessage (0) ;
          return 0 ;
 
       case WM_KEYDOWN:		// tape d'une touche détecter
		 switch(wParam)
		 {
			case VK_LEFT:	// la touche tapée est "flèche gauche"
				MessageBox (NULL,"Flèche gauche","Information", MB_ICONINFORMATION) ;
				break;
			case VK_ESCAPE:	// la touche tapée est "Echape"
				DestroyWindow(hwnd);
				break;
			default:
				break;
		 }
		 break;
 
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
} |