Ayant un jour cherché des liens sur ce sujet et n'ayant pas trouvé ce que je voulais... alors, cette petite fiche est pour vous, apprentis programmeurs, pour vous montrer comment créer rapidement votre premier .exe sous Windows ! (puristes s'abstenir... :)
N'importe quel éditeur permet d'écrire du code C++, mais vu que ce langage doit être compilé (traduit en langage machine), autant utiliser un soft permettant de faire les deux...
J'ai utilisé ici Dev-C++4 de Bloodshed Software qui est Gratuit !(7,8 Mo)
switch (message) { case WM_DESTROY: PostQuitMessage(0); // Envoie un WM_QUIT break; default: // autres messages non traîtés return DefWindowProc(hwnd, message, wParam, lParam); }
Ce qui donne donc pour l'instant
main-01.cpp
// Librairies #include <windows.h>
// Déclarations LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); char szClassName[ ] = "WindowsApp"; // nom de la classe en var globale
// DEBUT int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { // Déclarations HWND hwnd; MSG messages; WNDCLASSEX wincl; // Structure de la fenêtre wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; // Fonction appelée par Windows wincl.style = CS_HREDRAW|CS_VREDRAW; // Redessine à chaque fois wincl.cbSize = sizeof(WNDCLASSEX); // Icônes, pointeur, etc wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); // Fond blanc // Enregistre la classe sinon quitte le programme if(!RegisterClassEx(&wincl)) return 0;
// Création de la fenêtre hwnd = CreateWindowEx(0, szClassName, "C++ et Windows - 01", // Titre WS_OVERLAPPEDWINDOW, // Fenêtre par défaut GetSystemMetrics(SM_CXSCREEN)/4, // left GetSystemMetrics(SM_CYSCREEN)/4, // top GetSystemMetrics(SM_CXSCREEN)/2, // width GetSystemMetrics(SM_CYSCREEN)/2, // height HWND_DESKTOP, NULL, hThisInstance, NULL );
// Montre la fenêtre ShowWindow(hwnd, nFunsterStil);
// Boucle jusqu'à ce que GetMessage() retourne 0 while(GetMessage(&messages, NULL, 0, 0)) { DispatchMessage(&messages); } return messages.wParam; } // FIN
// Fonction appelée par la fonction Windows DispatchMessage() LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { // Intercepte les messages case WM_DESTROY: // Destruction de la fenêtre PostQuitMessage(0); // Envoie WM_QUIT à Windows break; default: // Messages non gérés return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }