There is no WaitMessageTimeout
function,
but you can create your own with the assistance of
the MsgWaitForMultipleObjects
function.
BOOL WaitMessageTimeout(DWORD dwTimeout) { return MsgWaitForMultipleObjects( 0, NULL, FALSE, dwTimeout, QS_ALLINPUT) == WAIT_TIMEOUT; }
To wait for a message with timeout, we use
the MsgWaitForMultipleObjects
in a vacuous sense:
You pass it a list of objects you want to wait for,
as well as a timeout and a set of queue states,
asking that the function return when any of the
objects is signalled or when a message is ready.
By passing no objects, the only thing left to wait
for is an incoming message.
Next time, we’ll see how this basic idea can be used to build a slightly more complex function.
[1/26: Fix call to MsgWaitForMultipleObjects; had it confused with MsgWaitForMultipleObjectsEx. That’s what happens when you write entries on an airplane.]
0 comments