Partager via


Module 1. Votre premier programme Windows

Dans ce module, nous allons écrire un programme de bureau Windows minimal. Tout ce qu’il fait est de créer et d’afficher une fenêtre vide. Ce premier programme contient environ 50 lignes de code, sans compter les lignes vides et les commentaires. Ce sera notre point de départ; plus tard, nous ajouterons des graphiques, du texte, des entrées utilisateur et d’autres fonctionnalités.

Si vous recherchez plus d’informations sur la création d’une application de bureau Windows traditionnelle dans Visual Studio, case activée procédure pas à pas : Créer une application de bureau Windows traditionnelle (C++).

Capture d’écran de l’exemple de programme, qui montre qu’il s’agit d’une fenêtre vide avec le titre Apprendre à programmer Windows.

Voici le code complet du programme :

#ifndef UNICODE
#define UNICODE
#endif 

#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    // Register the window class.
    const wchar_t CLASS_NAME[]  = L"Sample Window Class";
    
    WNDCLASS wc = { };

    wc.lpfnWndProc   = WindowProc;
    wc.hInstance     = hInstance;
    wc.lpszClassName = CLASS_NAME;

    RegisterClass(&wc);

    // Create the window.

    HWND hwnd = CreateWindowEx(
        0,                              // Optional window styles.
        CLASS_NAME,                     // Window class
        L"Learn to Program Windows",    // Window text
        WS_OVERLAPPEDWINDOW,            // Window style

        // Size and position
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

        NULL,       // Parent window    
        NULL,       // Menu
        hInstance,  // Instance handle
        NULL        // Additional application data
        );

    if (hwnd == NULL)
    {
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);

    // Run the message loop.

    MSG msg = { };
    while (GetMessage(&msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);

            // All painting occurs here, between BeginPaint and EndPaint.

            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));

            EndPaint(hwnd, &ps);
        }
        return 0;

    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

Vous pouvez télécharger le projet Visual Studio complet à partir de Windows Hello’exemple World.

Il peut être utile de donner un bref aperçu de ce que fait ce code. Les rubriques ultérieures examineront le code en détail.

  1. wWinMain est le point d’entrée du programme. Lorsque le programme démarre, il enregistre des informations sur le comportement de la fenêtre d’application. L’un des éléments les plus importants est l’adresse d’une fonction, nommée WindowProc dans cet exemple. Cette fonction définit le comportement de la fenêtre: son apparence, la façon dont elle interagit avec l’utilisateur, etc.
  2. Ensuite, le programme crée la fenêtre et reçoit un handle qui identifie la fenêtre de manière unique.
  3. Si la fenêtre est créée avec succès, le programme entre une boucle while . Le programme reste dans cette boucle jusqu’à ce que l’utilisateur ferme la fenêtre et quitte l’application.

Notez que le programme n’appelle pas explicitement la WindowProc fonction, même si nous avons dit que c’est là que la majeure partie de la logique d’application est définie. Windows communique avec votre programme en lui transmettant une série de messages. Le code à l’intérieur de la boucle while pilote ce processus. Chaque fois que le programme appelle la fonction DispatchMessage , Windows appelle indirectement la fonction WindowProc, une fois pour chaque message.

Contenu de cette section

Apprendre à programmer pour Windows en C++

exemple Windows Hello World