gpt4 book ai didi

c++ - 如何在 VC++ 中将 HICON 转换为 HBITMAP?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:34 25 4
gpt4 key购买 nike

如何在VC++中将HICON转成HBITMAP?

我知道这是一个常见问题解答,但我在 Google 上找到的所有解决方案都不起作用。我需要的是一个接受参数 HICON 并返回 HBITMAP 的函数。

即使图标是 24 位、16 位或 8 位,也尽可能转换为 32 位位图。

这是代码,我不知道哪里错了:

HBITMAP icon_to_bitmap(HICON Icon_Handle) {
HDC Screen_Handle = GetDC(NULL);
HDC Device_Handle = CreateCompatibleDC(Screen_Handle);

HBITMAP Bitmap_Handle =
CreateCompatibleBitmap(Device_Handle,GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON));

HBITMAP Old_Bitmap = (HBITMAP)SelectObject(Device_Handle,Bitmap_Handle);
DrawIcon(Device_Handle, 0,0, Icon_Handle);
SelectObject(Device_Handle,Old_Bitmap);

DeleteDC(Device_Handle);
ReleaseDC(NULL,Screen_Handle);
return Bitmap_Handle;
}

最佳答案

这段代码做到了:

HICON hIcon = (HICON)LoadImage(instance, MAKEINTRESOURCEW(IDI_ICON), IMAGE_ICON, width, height, 0);
ICONINFO iconinfo;
GetIconInfo(hIcon, &iconinfo);
HBITMAP hBitmap = iconinfo.hbmColor;

这是 *.rc 文件中的代码:

IDI_ICON ICON "example.ico"

这是 *.h 文件中的代码:

#define IDI_ICON 4000

关于c++ - 如何在 VC++ 中将 HICON 转换为 HBITMAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375003/

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