我注意到我的应用程序将图标发送到尺寸为16x16像素的Windows托盘 - 而我的Vista PC我有一个双倍宽的任务栏,似乎以18x18显示图标。我的应用程序图标上的调整大小工件看起来很糟糕。如何询问Windows图标应该是多大?
编辑:
我正在动态生成图标,并使用像素字体文字叠加。动态生成一堆图标大小似乎很浪费,所以避免构建一个具有所有“可能”大小的图标会很好(不是我甚至不确定那些是什么)。
GetSystemMetrics(SM_CXSMICON)返回16 - 不正确的值。
GetThemeBackgroundContentRect也没有帮助。
答案 0 :(得分:1)
以多种格式创建图标,让Windows选择所需的图标。
Here's the Wikipedia article on the .ico format.
如果您真的需要知道,GetSystemMetrics参数为SM_CXICON或SM_CYICON将告诉您Windows要加载的宽度和高度。
答案 1 :(得分:1)
Mark的核心答案是正确的:以多种格式创建图标,让Windows选择正确的图标。不要忘记为HighDPI场景执行32x32和64x64图标。
但是SM_CXICON / SM_CYICON不一定会返回将在任务栏中使用的大小。任务栏为其大小选择正确的图标大小(在窗口7中,很多更重要)。
只需提供尺寸合适的图标,您就可以了。
答案 2 :(得分:0)
您最好的选择可能是GetThemeBackgroundContentRect传递TBN_BACKGROUND
作为托盘通知背景的iPartId。
GetThemeBackgroundContentRect应返回当前主题定义的大小,该大小可用于绘制而不重叠父元素的边框。如果我正确地阅读这个,那将是允许的最大尺寸的通知图标,并且可能是正在使用的尺寸。
使用多个DPI设置进行测试可能是判断这是否返回正确值的最简单方法。