gpt4 book ai didi

delphi - 如何加载系统小图标?

转载 作者:行者123 更新时间:2023-12-03 14:46:03 26 4
gpt4 key购买 nike

我需要显示 16x16 像素的错误/警告/信息图标。不幸的是 LoadIcon(0, IDI_*)LoadImage(0, OIC_*, IMAGE_ICON, 16, 16, LR_SHARED) 总是给我 32x32 版本的图标。

我读到了有关 ShGetStockIconInfo 的内容,但这仅适用于 Vista 及以上版本,而且我仍然需要支持 XP。

有什么想法吗?

如果重要的话,我正在使用带有 TImage 组件的 Delphi 2010。

最佳答案

问题是,当您这样做时,您会获得图标的缓存版本,即系统加载的第一个图标。这将是大尺寸的图标,通常为 32x32。您指定的大小并不重要。

您可以做的是在 user32.dll 中找到所需资源的 ID 并使用如下内容:

LoadImage(GetModuleHandle('user32'), MAKEINTRESOURCE(103), IMAGE_ICON,
16, 16, LR_DEFAULTCOLOR);

您最好调用 GetSystemMetrics(SM_CXSMICON) 来获取图标大小,而不是硬编码 16,但您可能已经知道这一点。

我不确定您从哪里获取 user32 中资源的资源 ID,或者即使它们能保证它们在不同的 Windows 版本中保持不变。我的猜测是他们会这样做,因为太多的程序会崩溃,但这只是纯粹的猜测。

关于delphi - 如何加载系统小图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com