|
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) ;
}
|