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
| #include <windows.h>
#include <tchar.h>
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT ret = 0;
switch(message)
{
case WM_DESTROY: /* Reçu quand la fenêtre est détruite */
PostQuitMessage(0); /*Ordre de terminer la boucle de messages*/
break;
default:
ret = DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return ret;
}
/*On verra plus tard les programmes sans console du tout;
après tout, la console est utile pour le débogage.*/
int main(void)
{
WNDCLASS wc = {0};
HWND hWnd = NULL;
MSG msg = {0};
/*Création classe de fenêtre*/
wc.lpfnWndProc = MyWindowProc; /*Notre procédure de fenêtre ici*/
wc.hInstance = GetModuleHandle(NULL); /*Indique que la procédure est contenue dans l'EXE et non pas une DLL*/
wc.hCursor = LoadCursor(NULL, IDC_ARROW); /*Curseur flèche normal*/
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); /*Donne à l'arrière-plan de la fenêtre la couleur normale d'une fenêtre comme Bloc-Notes (généralement, blanc)*/
wc.lpszClassName = _T("Ma classe de fenêtre"); /*Le nom qu'on donne à la classe de fenêtre.*/
RegisterClass(&wc);
/*Création de la fenêtre*/
hWnd = CreateWindow(
_T("Ma classe de fenêtre"), /*Nom de la classe de fenêtre*/
_T("Mon Titre"), /*Titre de la fenêtre*/
WS_OVERLAPPEDWINDOW|WS_VISIBLE, /*Style: Fenêtre principale.*/
CW_USEDEFAULT, 0, /*Laisser Windows définir où placer la fenêtre*/
320, 240, /*Dimensions de la fenêtre (tour et barre de titre y compris)*/
NULL, /*Pas de fenêtre parente*/
NULL, /*Pas de menu*/
wc.hInstance,
NULL); /*Pas de paramètre supplémentaire*/
if(hWnd == NULL)
return EXIT_FAILURE;
ShowWindow(hWnd, SW_SHOW); /*Pour des raisons difficiles à expliquer, le style WS_VISIBLE ne suffit pas toujours.*/
/*Boucle de messages*/
while(GetMessage(&msg, NULL, 0, 0) > 0) /*Récupère le premier message de la file. Retournera zéro après un PostQuitMessage(), terminant la boucle.*/
{
DispatchMessage(&msg); /*Se charge d'appeler la bonne procédure de fenêtre.*/
}
return EXIT_SUCCESS;
} |
Partager