2012-09-21 59 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()。当我使用主线程时,它工作正常。