Holy cow, I wrote a book!
There is no WaitMessageTimeout function,
but you can create your own with the assistance of
the MsgWaitForMultipleObjects function.
BOOL WaitMessageTimeout(DWORD dwTimeout)
0, NULL, FALSE, dwTimeout, QS_ALLINPUT)
To wait for a message with timeout, we use
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
That's what happens when you write entries on an airplane.]