2012-07-10 94 views
0

我正在爲事件循環類實現跨平臺'completePending'功能,該功能應簡單地解析隊列中的n n事件。 (ñ在功能開始被抓住,只有ñ事件進行解析。)排隊等候的事件數量? (Win32事件隊列)

所以,我悠閒地踱向夕陽才發現自己在MSDN,尋找 XEventsQueued() DWORD WINAPI WinQueuedEvents( __in_opt DWORD)。但我似乎無法找到一個。我開始質疑win32 API中這樣一個函數的存在!所以我來到了尋找答案的翻譯器的美妙居所。

據我所知,GetMessage()塊直到收到一條消息。所以,如果沒有GetPending(),我應該偷看並獲取消息,而不是一個不錯的選擇?

+0

我找不到任何關於'XQueuedEvents'的文檔。這是正確的拼寫嗎? – 2012-07-10 22:49:16

+0

我試圖通過展示我的卓越X11/Xlib知識(unix'es)來搞笑 – Eximius 2012-07-10 22:51:28

+0

是的,我意識到你需要一個Windows相當於你從X11知道的一些功能。所以我想知道這個功能到底是什麼......但是找不到它。 – 2012-07-10 22:52:34

回答

3

功能不禁止,直到你得到(只)Windows消息包括:

  • PeekMessage
  • MsgWaitForMultipleObjects
  • MsgWaitForMultipleObjectsEx

請注意,您可以通過PM_REMOVEPeekMessage有一個非阻塞GetMessage

還要注意發送的消息不會被這些函數返回,它們會立即分派。

+0

您的答案會擴展得更多嗎?我很好奇。這就像3.5線/ 1分鐘的擴展!我想在windows中沒有'getpending'函數。所以是的,我會做PeekMessage + GetMessage。 – Eximius 2012-07-10 22:42:29

+1

@Eximius:如果你使用'PM_REMOVE',你不需要在'PeekMessage'後面調用'GetMessage'。 – 2012-07-10 22:46:54

+0

是的,我的答案會擴大更多,除了MSDN的'PeekMessage'頁面不會加載。他們的服務器出現問題我正在檢查發送消息的行爲是否與兩者相同。 – 2012-07-10 22:47:31