GetMessage
The GetMessage
function retrieves a message from the calling thread s message queue and places
it in the specified structure. This function can retrieve both messages
associated with a specified window and thread messages posted via the PostThreadMessage
BOOL GetMessage(
LPMSG lpMsg, |
// address of
structure with message |
HWND hWnd, |
// handle of window |
UINT wMsgFilterMin, |
// first message |
UINT wMsgFilterMax |
// last message |
); |
|
Parameters
lpMsg
Points to an MSG
hWnd
Identifies
the window whose messages are to be retrieved. One value has a special meaning:
Value |
Meaning |
NULL |
GetMessage retrieves messages for any window that belongs to
the calling thread and thread messages posted to the calling thread via PostThreadMessage |
wMsgFilterMin
Specifies the
integer value of the lowest message value to be retrieved.
wMsgFilterMax
Specifies the
integer value of the highest message value to be retrieved.
Return Values
If the
function retrieves a message other than WM_QUIT, the return value is nonzero.
If the
function retrieves the WM_QUIT message, the return value is zero.
If there is
an error, the return value is -1. For example, the function fails if hWnd
is an invalid window handle.
Remarks
An application
typically uses the return value to determine whether to end the main message
loop and exit the program.
The GetMessage
function only retrieves messages associated with the window identified by the hWnd
parameter or any of its children as specified by the IsChild
The WM_KEYFIRST
and WM_KEYLAST constants can be used as filter values to retrieve all messages
related to keyboard input; the WM_MOUSEFIRST and WM_MOUSELAST constants can be
used to retrieve all mouse messages. If the wMsgFilterMin and wMsgFilterMax
parameters are both zero, the GetMessage function returns all available
messages (that is, without performing any filtering).
GetMessage does not remove WM_PAINT messages from the queue. The
messages remain in the queue until processed.
Note that the
function return value can be TRUE, FALSE, or -1. Thus, you should avoid code
like this:
while (GetMessage( lpMsg, hWnd, 0, 0)) ...
The
possibility of a -1 return value means that such code can lead to fatal
application errors.
See Also