Code source



Affichage d'une simple fenêtre

#include <windows.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) ;
}



texel.fr.fm