2014-11-09 58 views
0

編輯:刪除我在這裏粘貼的代碼。我的代碼中的錯誤導致了所描述的行爲(在switch語句中缺少break)。來自GetMessage的Windows消息9?

在從GetMessage處理的消息switch聲明,我在整數值扔一對夫婦的消息沒有定義的別名(使用列表我發現這裏:http://www.mazama.net/scheme/v12/w32message.scm)有消息框會彈出如果其中一封郵件已收到。我的期望是,無名的消息被簡單地棄用,並且永遠不會出現。

我也嘗試了一些WM_ACTIVATE下的代碼,如果我點擊了它,它應該將窗口最小化。我搞砸了一些東西,所以窗戶一打開,窗戶就會自動縮小,但這不是我帶來的。只要窗口打開並最小化,消息框就會彈出,告訴我Windows已發送消息9.如果我忽略它,消息框會再次彈出。

所以它讓我想知道,有沒有人知道什麼事件觸發消息?或者,對於這個問題,GetMessage返回的沒有別名的整數值?列出Windows消息的所有內容都省略了與上面發佈的鏈接相同的編號。

+0

看起來你的'break'語句完全不在他們各自的情況下。 – Hosch250 2014-11-09 01:19:31

+0

@ hosch250你是對的;我錯過了'switch'聲明部分的'break',它直接位於應該彈出消息框的聲明之上,所以WndProc實際上並沒有收到該消息。不知道我是如何錯過的。留下以下問題的答案。 – jmccracken 2014-11-09 02:30:32

回答

0

未公開的頭文件中列出的低編號消息很可能不被推薦用於兼容性保留的Windows 3.1(或更早版本)消息(或者由於Microsoft沒有人認爲它足夠重要以將其刪除) 。

您可以在Wine或ReactOS等各種Windows替代項目的源代碼中找到他們的線索。事實上,從ReactOS的標題:

#define WM_SETVISIBLE  0x00000009 

這似乎一直是先行者對WM_SHOWWINDOW消息,並與相同參數同時發送。

我還發現有關消息0x0004a newsgroup thread的討論,甚至ReactOS似乎都不知道。那裏的信息被描述爲WM_SIZEWAIT,但是沒有任何線索。

簡而言之,這些消息因爲某種原因沒有記錄 - 它們不是您需要編寫的任何軟件所需要或使用的,您應該忽略它們。

+0

謝謝。我很好奇,因爲我認爲我收到了這個消息,但事實證明,我並沒有(正好在它上面的'WM_ACTIVATE'情況下丟失了一個'break'語句)。我懷疑未列出的那些確實從來沒有在消息隊列中收到。 – jmccracken 2014-11-09 02:33:08