为什么LoadImage将我的16x16图标加载为32x32? 让我先说我是C++和MFC的新手。

为什么LoadImage将我的16x16图标加载为32x32? 让我先说我是C++和MFC的新手。,c++,mfc,C++,Mfc,在过去的几天里,我一直试图在我的客户端区域显示一个16x16图标,尽管它显示的是正确的图像,但图标总是被缩放到32x32,并且看起来失真。 我一直在搜索并尝试不同的LoadIcon和LoadImage方法,但似乎没有任何效果 以下是LoadImage的示例: m_icon1 = (HICON)::LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 16, 16, 0); int xIcon

在过去的几天里,我一直试图在我的客户端区域显示一个16x16图标,尽管它显示的是正确的图像,但图标总是被缩放到32x32,并且看起来失真。 我一直在搜索并尝试不同的LoadIcon和LoadImage方法,但似乎没有任何效果

以下是LoadImage的示例:

m_icon1 = (HICON)::LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 16, 16, 0);
int xIcon = GetSystemMetrics(SM_CXSMSIZE);
int yIcon = GetSystemMetrics(SM_CYSMSIZE);
CRect rect;
GetClientRect(&rect);
int xx = (rect.Width() - xIcon  + 1) / 2;
int yy = (rect.Height() - yIcon  + 1) / 2;
dc.DrawIcon(xx, yy, m_icon1 );
图标信息:

这是一个窗口,左边的图标是32x32,右边是16x16,你可以看到它们的大小相同。我给每个尺码都加了不同的颜色,只是为了确定

我做错什么了吗


提前感谢。

LR_SHARED
部分下检查:此函数使用请求的资源名称查找缓存中的第一个图像,而不管请求的大小。@Adrian,谢谢,我试过使用0,甚至LR_VGACOLOR,它也做了同样的事情。你能在调用后调用GetIconInfo并将输出附加到问题上吗?您所在位置的大小。起始:DrawIcon使用图标的系统度量值指定的宽度和高度绘制图标或光标;有关更多信息,请参阅GetSystemMetrics。您必须改用
DrawIconEx
。这不能作为MFC方法使用,因此您必须调用
::DrawIconEx(dc.GetSafeHdc(),0,0,hicon,…)