加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 10:06:59 所属栏目:大数据 来源:网络整理
导读:我需要显示16×16像素图标以显示错误/警告/信息.不幸的是,LoadIcon(0,IDI_ *)和LoadImage(0,OIC_ *,IMAGE_ICON,16,LR_SHARED)总是给我32×32版本的图标. 我读到了ShGetStockIconInfo,但这只能从Vista开始,我仍然需要支持XP. 有任何想法吗? 如果重要的话,我
我需要显示16×16像素图标以显示错误/警告/信息.不幸的是,LoadIcon(0,IDI_ *)和LoadImage(0,OIC_ *,IMAGE_ICON,16,LR_SHARED)总是给我32×32版本的图标.

我读到了ShGetStockIconInfo,但这只能从Vista开始,我仍然需要支持XP.

有任何想法吗?

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

解决方法

问题在于,当您这样做时,您将获得图标的缓存版本,即系统加载的第一个版本.那将是大尺寸的图标,通常是32×32.重要的不是你指定的尺寸.

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

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

你最好调用GetSystemMetrics(SM_CXSMICON)来获取图标大小而不是硬代码16,但你可能已经知道了.

我不确定从哪里获取user32中资源的资源ID,或者即使它们可以保证它们在不同的Windows版本中保持不变.我的猜测是,他们会因为太多的程序会破坏,但那只是纯粹的猜测.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读