Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como Utilizar o PostQuitMessage no Ambiente Windows

O PostQuitMessage é uma função da API do Windows utilizada em programação de aplicativos Windows para sinalizar que um aplicativo deve encerrar sua execução. Essa função é frequentemente usada em conjunto com loops de mensagens em aplicações baseadas em janelas. Quando chamada, PostQuitMessage coloca uma mensagem WM_QUIT na fila de mensagens do thread, o que, por sua vez, faz com que o loop de mensagens termine e o aplicativo inicie seu processo de encerramento.

Exemplos:

Aqui está um exemplo básico de como PostQuitMessage pode ser utilizado em um aplicativo Windows escrito em C++:

#include <windows.h>

// Declaração do procedimento da janela
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);
                FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW+1));
                EndPaint(hwnd, &ps);
            }
            return 0;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nShowCmd) {
    const char CLASS_NAME[] = "Sample Window Class";

    WNDCLASS wc = { };

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

    RegisterClass(&wc);

    HWND hwnd = CreateWindowEx(
        0,                              // Optional window styles.
        CLASS_NAME,                     // Window class
        "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, nShowCmd);

    // Loop de mensagens
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

Neste exemplo, quando a janela é destruída (mensagem WM_DESTROY), PostQuitMessage(0) é chamado, o que coloca uma mensagem WM_QUIT na fila de mensagens, encerrando assim o loop de mensagens e permitindo que o aplicativo termine.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.