【问题标题】:Can you have a win32 program that consists solely of a tray (notification) icon?你能有一个只包含一个托盘(通知)图标的win32程序吗?
【发布时间】:2011-09-28 23:00:44
【问题描述】:

我有一个实际上由托盘图标组成的程序。不需要图形用户界面。但是,在编写win32代码的时候,是否还需要初始化一个hWnd对象来关联托盘图标呢?

例如,NOTIFYICONDATA hWnd 字段指向窗口句柄是正常的。喜欢

nid.hWnd = hwnd;

基本上,如果我设置了,我的图标是否仍然能够接收消息

nid.hwnd = NULL;

【问题讨论】:

    标签: windows winapi trayicon


    【解决方案1】:

    如果没有窗口,您将如何接收消息?

    是的,您需要一个与托盘图标关联的窗口。

    【讨论】:

    • 所以我必须创建一个窗口,关联它并隐藏它?
    • 创建没有WS_VISIBLE的窗口,它一开始是不可见的(不需要“隐藏”)。仅消息窗口非常常见。
    • 您也可以使用message-only Windows,但我不确定它们是否能与通知图标一起正常工作。
    • 看来只有消息窗口不“接收广播消息”。例如,如果任务栏崩溃并重置,我认为我不会收到wm_taskbarcreated 消息。 @MatteoItalia
    • 是的,我不应该使用那个措辞。我的意思是一个仅用于接收消息的不可见窗口。
    【解决方案2】:

    可以通过指定HWND_MESSAGE 创建窗口来创建message-only window。但是,仅消息窗口不接收广播消息,您将错过TaskbarCreated 消息。此消息告诉您的应用程序 explorer.exe 已重新启动,并且您的应用程序需要重新添加其通知图标。比较重要。所以创建一个永远不可见的窗口:never call ShowWindow().

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多