Message Loop in Microsoft Windows

Microsoft Windows programs are event-based. They act upon messages that the operating system posts to the main thread of the application. These messages are received from the message queue by the application by repeatedly calling the GetMessage (or PeekMessage) function in a section of code called the "event loop." The event loop typically appears as follows:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; while(GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }

Though not strictly required, it's conventional for the event loop to call TranslateMessage and DispatchMessage, which transfers the message to the callback procedure associated with the window the message refers to.

Modern graphical interface frameworks, such as WinForms, Windows Presentation Foundation, MFC, Delphi, Qt et al. do not typically require applications to directly access the Windows message loop, but instead automatically route events such as key presses and mouse clicks to their appropriate handlers as defined within the framework. Underlying these frameworks, however, the message loop can again be found, and can usually be accessed when more direct control is required.


Famous quotes containing the words windows and/or message:

    this frenzy,
    like bees stinging the heart all morning,
    will keep the angels
    with their windows open,
    wide as an English bathtub.
    Anne Sexton (1928–1974)

    Gossip, then, is content, a message about people; rumor is a process. It takes a bit of gossip and reshapes it, modifies it in some way, and passes it along from individual to individual in different ways.
    Jack Levin (b. 1941)