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