MsgWaitForMultipleObjects 的解释

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除了有WaitForMultipleObjects(Ex)的功能外,还有另外一个功能,就是在当前线程的消息队列中有特定类型的消息的时候返回。这样就不会因为在等待某些对象变成有信号态,而无法使消息循环运行。

当MsgWaitForMultipleObjects因消息返回后,你可以用下面的代码完成消息循环

while (PeekMessage (&msg, 0, 0, 0))
{
    TranslateMessage (&msg);
    DispatchMessage (&msg);
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值