【发布时间】:2012-09-14 01:29:15
【问题描述】:
我想使用 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 窗口?
谢谢!
【问题讨论】:
-
如果你最终需要,你不能将
WS_VISIBLE传递到普通窗口的样式标志中。 -
那么有没有办法为它使用 HWND_MESSAGE 窗口呢?它必须是一个真正的窗口,只是没有 WS_VISIBLE 标志?
-
我不确定仅消息是否有效,但如果无效,这是一种解决方案。就我而言,这对我来说效果很好(不同之处在于我的未来可能会出现)。
-
好的,AFAICS HWND_MESSAGE 窗口不起作用...
-
该线程是否在运行正常的消息循环?