我想定义一个 Win32 窗口的应用程序图标,例如通过使用 SetClassLong 调用 GCL_HICON 并将句柄传递给图标(请参阅 MSDN 上的 SetClassLong Function)。

这很好用,但我还没有弄清楚应该如何加载图标(从 ICO 文件)以保留所有可用尺寸(例如 16x16、32x32、48x48 和全尺寸 PNG 图标)。当我通过 LoadImage 将图标文件加载到内存中以获取 HICON 时,我必须指定我想要的大小(请参阅我的 reply to a related question )。

我的 ICO 文件包含一个小尺寸的图像,它应该用作窗口图标(标题栏的左上角),并且设计得非常清晰,但也有较大的变体,应该显示在 Alt-Tab 对话框中,但是...

  • 加载 16x16 图标在标题栏中显示了正确的图标,但是 - 当然 - 当我 Alt-Tab 时它的丑陋拉伸(stretch)版本。而且任务栏中出现的那个也不是很漂亮。
  • 当我 Alt-Tab 时,加载 48x48 图标会显示一个不错的图标,但是显示在标题栏中的图标是模糊的,因为它是 48x48 图标的缩小版本。

  • 有没有办法告诉 Windows 我的 Windows 有一个多尺寸图标?是否有一些我错过的明显 API?

    最佳答案

    GCL_HICON 设置“大”图标,GCL_HICONSM 设置小图标(大小通常为 32x32 和 16x16,但您应该使用 GetSystemMetrics 和 SM_CXICON 和 SM_CXSMICON 来查找实际大小(对于大图标,您也可以将 LR_DEFAULTSIZE 传递给 LoadImage) 0 尺寸))

    关于windows - 如何在窗口上设置 HICON(具有多种尺寸的 .ICO)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2234988/

    10-13 08:16