排队的事件数量?(Win32事件队列)

Amount of events queued up? (Win32 event queue)

本文关键字:Win32 事件队列 事件 排队      更新时间:2023-10-16

我正在为一个事件循环类实现一个跨平台的"completePending"函数,该函数应该只解析队列中的n事件。(n在函数启动时被抓取,并且只有n事件被解析。)

所以我悠闲地漫步到日落中,却发现自己在msdn中,寻找一个XEventsQueued()DWORD WINAPI WinQueuedEvents(__in_opt DWORD)。但我似乎找不到。我开始质疑win32api中是否存在这样的函数!于是,我来到了程序员的奇妙住所,那是斯塔科弗弗洛,寻找答案。

据我所知,GetMessage()会一直阻塞到收到消息为止。所以,如果没有GetPending(),我应该在有不好的替代方案的消息时偷看并获取?

在收到(仅)windows消息之前不会阻塞的函数包括:

  • PeekMessage
  • MsgWaitForMultipleObjects
  • MsgWaitForMultipleObjectsEx

请注意,您可以将PM_REMOVE传递给PeekMessage以获得非阻塞GetMessage

还要注意,这些函数不会返回已发送的消息,而是会立即发送这些消息。