如何向Windows询问系统托盘图标的大小?

kee*_*elo 9 windows winapi taskbar system-tray

我注意到我的应用程序将图标发送到尺寸为16x16像素的Windows托盘 - 而我的Vista PC我有一个双倍宽的任务栏,似乎以18x18显示图标.我的应用程序图标上的调整大小工件看起来很糟糕.如何询问Windows图标应该是多大?

编辑:

我正在动态生成图标,带有像素字体文本覆盖.动态生成一堆图标大小似乎很浪费,所以避免构建一个具有所有"可能"大小的图标会很好(不是我甚至不确定那些是什么).

GetSystemMetrics(SM_CXSMICON)返回16 - 不正确的值.

GetThemeBackgroundContentRect也没有帮助.

Mar*_*som 1

创建多种格式的图标,然后让 Windows 选择它想要的一种。

这是有关 .ico 格式的维基百科文章。

如果您确实需要知道,带有 SM_CXICON 或 SM_CYICON 参数的GetSystemMetrics会告诉您 Windows 想要加载的宽度和高度。

  • 这个答案的前半部分是错误的。通知图标的 API 是“Shell_NotifyIcon”。它接收包含“HICON”的“NOTIFYICONDATA”。现在,“HICON”指的是单个图标,因此您必须在调用“Shell_NotifyIcon”之前确定大小。不过最后一段是准确的。 (4认同)