Shell_NotifyIcon()和一个不可见的窗口

时间:2012-09-21 15:35:31

标签: c winapi shell tray

我想使用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窗口?

谢谢!

1 个答案:

答案 0 :(得分:1)

哎呀,对不起,这是我的错。它不起作用的原因是我从另一个线程调用了CreateWindowEx()。当我使用主线程时它工作正常。