In
Win32
The Windows API, informally WinAPI, is the foundational application programming interface (API) that allows a computer program to access the features of the Microsoft Windows operating system in which the program is running. Programs can acces ...
application programming, WindowProc (or window procedure), also known as WndProc is a user-defined
callback function that processes messages sent to a window. This function is specified when an application registers its
window class and can be named anything (not necessarily WindowProc).
Message handling
The window procedure is responsible for handling all messages that are sent to a window. The
function prototype
In computer programming, a function prototype is a declaration of a function that specifies the function's name and type signature (arity, data types of parameters, and return type), but omits the function body. While a function definition ...
of WindowProc is given by:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
hwnd
is a handle to the window to which the message was sent and
uMsg
identifies the actual message by its identifier, as specified in
winuser.h.
wParam
and
lParam
are parameters whose meaning depends on the message. An application should identify the message and take the required action.
Default processing
Hundreds of different messages are produced as a result of various events taking place in the system, and typically, an application processes only a small fraction of these messages. In order to ensure that all messages are processed, Windows provides a default window procedure called DefWindowProc that provides default processing for messages that the application itself does not process.
An application usually calls DefWindowProc at the end of its own WindowProc function, so that unprocessed messages can be passed down to the default procedure.
See also
*
Event loop
*
Desktop Window Manager
External links
"Writing the Window Procedure" at Microsoft LearnDefWindowProc at Microsoft Learn
Events (computing)
Microsoft application programming interfaces