1 2 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) ;
} |
Partager