【问题标题】:How to get the size of icons on the Windows system tray?如何获取 Windows 系统托盘上图标的大小?
【发布时间】:2023-03-03 03:47:01
【问题描述】:

我想在 Windows 系统托盘上显示之前自己加载一个合适的图标大小。如果我让 Windows 执行此操作(如网络上许多页面上所建议的那样),它会使用错误的图标大小,并且生成的系统托盘图标看起来很糟糕。如果我能找到一种方法来指定要加载的图标大小,我可以在 Photoshop 中做得更好。

使用LoadIconWithScaleDown甚至LoadImage加载特定图标大小的任务很容易,问题是我如何找出系统托盘中显示的图标的当前大小?

【问题讨论】:

  • 这里已经讨论过了:How do I ask Windows for the size of system tray icons? 我不确定它是否有帮助
  • @Mataniko:正如我所说,每个人都说“让 Windows 选择”,这在我的情况下不起作用。
  • @chris:如果用户在不增加屏幕 DPI 的情况下改变窗口标题栏的大小,小图标大小不会改变吗?在这种情况下,系统托盘大小将保持不变。
  • @user843732,是的,我从另一个问题中看到这是不对的。这只是一个猜测。
  • 我添加了我能想到的代码。我最好的猜测是使用上下文菜单检查图标的大小。它们似乎与不断变化的 DPI 设置最一致。那你怎么看?

标签: windows winapi


【解决方案1】:

通知区域图标是方形图标,大小等于GetSystemMetrics(SM_CXSMICON)。换句话说,它们是小图标。

NOTIFYICONDATA 文档末尾的示例代码默认了这一点。

【讨论】:

  • 您的意思是 LoadIconMetric 对吗?好吧,我想这是唯一的方法。虽然同样,当操作系统进行缩放时,它并不总是看起来很好......
  • 不,我不是那个意思。问题询问图标大小。该函数加载图标。
  • 如果您不给它所需的大小,操作系统只会缩放图标。给它大小合适的图标,就不会有锯齿了。
  • 虽然我链接到的文档使用 LoadIconMetric,但这不是唯一的方法。这只是获得正确大小图标的一种方法的说明。我包含该链接是因为它是我所见过的最接近官方确认的传说中已知的通知图标是小图标。您可以随心所欲地获取您的小图标。
  • 我知道,如果我知道将要显示的图标的大小,我会在其中一个加载它的 API 中指定它。同样,找到将要显示的正确尺寸似乎是个问题......
猜你喜欢
  • 2010-10-08
  • 2016-02-12
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 2011-11-11
相关资源
最近更新 更多