DWORD MsgWaitForMultipleObjects(
DWORD nCount, //pHandle所指的handle数组中元素的个数
LPHANDLE pHandle, //指向一个由对象handle所组成的数组
BOOL fWaitAll, //如果此值为TRUE,表示所有的HANDLE都被激发,此函数才返回
//否则,此函数将在任何一个HANDLE激发时就返回
DWORD dwMilliseconds, //当该时间终了时,即使没有任何handles激发,此
//函数也会返回。此值可为0,以便测试。也可以指定
//为INFINITE,表示无穷等待
DWORD dwWakeMask //预观察的用户输入消息,可以是:
) //QS_ALLINPUT QS_KEY
//QS_HOTKEY QS_MOUSE
//QS_INPUT QS_MOUSEBUTTON
//QS_MOUSEMOVE QS_PAINT
//QS_POSTMESSAGE QS_SENDMESSAGE
//QS_TIMER
这个函数是用来在GUI现成中等待对象被激发,是用来修改主消息循环的
这个函数非常像WaitForMultipleObjects(),但是他会在“对象被激发”
或“消息到达队列”时被唤醒而返回。MsgWaitForMultipleObject()函数
比WaitForMultipleObject()多接受一个参数,允许指定哪些消息是观察对象
MsgWaitForMultipleObject()的正确使用方式是改写主消息循环,使得激发状态
的HANDLE得以像消息一样被等待!
当MsgWaitForMultipleObjects因消息返回后,你可以用下面的代码完成消息循环
while (PeekMessage (&msg, 0, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
};