Winapi 为控制台项目中的托盘图标消息处理设置回调

Winapi 为控制台项目中的托盘图标消息处理设置回调,winapi,callback,Winapi,Callback,我过去习惯于使用WndProc来处理proc消息,但现在我有了一个控制台项目,我想以某种方式处理一个定制的WM\u TRAYICON消息 我有回调函数,我只需要让Windows在有人与托盘图标交互时调用它。在最近的一个程序中,我使用了SetWindowsHookEx,可以使用类似的东西吗?我建议您不要使用项目控制台。如果您希望以合法的方式处理窗口消息(没有钩子和黑客),并且希望有一个控制台,那么典型的解决方案是使用函数。您需要创建一个隐藏窗口,以便与通知图标一起使用。像往常一样调用CreateW

我过去习惯于使用WndProc来处理proc消息,但现在我有了一个控制台项目,我想以某种方式处理一个定制的
WM\u TRAYICON
消息


我有回调函数,我只需要让Windows在有人与托盘图标交互时调用它。在最近的一个程序中,我使用了
SetWindowsHookEx
,可以使用类似的东西吗?

我建议您不要使用项目控制台。如果您希望以合法的方式处理窗口消息(没有钩子和黑客),并且希望有一个控制台,那么典型的解决方案是使用函数。

您需要创建一个隐藏窗口,以便与通知图标一起使用。像往常一样调用
CreateWindow
来创建一个窗口,但不要显示它。在创建窗口时,请确保您没有通过
WS\u VISIBLE


另一个问题是您需要一个消息循环。由于控制台应用程序在默认情况下不会运行消息循环,因此最简单的解决方案是从实现消息循环的单独线程中运行通知图标。当然,这意味着隐藏窗口也需要在该线程中创建和销毁。

控制台应用程序可以完全合法地使用窗口和消息循环。如果OP需要应用程序保持控制台应用程序的状态,那么创建一个隐藏窗口来处理消息(可能在自己的线程上)是最简单的方法。