2012-09-21 57 views
1

我想使用Shell_NotifyIcon()將圖標添加到系統托盤,但我不想在我的應用程序中有一個可見的窗口。這就是爲什麼我將句柄傳遞給Shell_NotifyIcon()的僅消息窗口。該窗口已創建這樣的:Shell_NotifyIcon()和一個不可見的窗口

hTrayWnd = CreateWindowEx(0, CLASSNAME, "tray_dummy", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, HINSTANCE, NULL); 

CLASSNAME點,我已經註冊的使用RegisterClassEx()和HINSTANCE是我的實例的句柄在我的類的名稱。

現在的問題是:添加了托盤圖標,但我的類的WindowProc()永遠不會被調用。如果我使用普通的頂級窗口,一切正常。

有沒有辦法創建沒有頂級窗口的托盤圖標?我看過應用程序有一個托盤圖標沒有頂級窗口,所以它必須以某種方式可能。但爲什麼它不適用於HWND_MESSAGE窗口?

謝謝!

+0

如果最終需要,您可以不將'WS_VISIBLE'傳遞到普通窗口的樣式標誌。 – chris

+0

所以沒有辦法爲它使用HWND_MESSAGE窗口?它必須是一個真正的窗口,沒有WS_VISIBLE標誌? – Andreas

+0

我不確定一條消息是否可用,但如果不是這樣,這是一個解決方案。我說話時對我來說工作得很好(不同之處在於我的未來可能會顯示)。 – chris

回答

1

哎呀,對不起,這是我的錯。它不工作的原因是我從另一個線程調用了CreateWindowEx()。當我使用主線程時,它工作正常。