Согласно документации ExtractIconEx возвращает указатель на массив HICON. Как я могу указать, какой элемент в этом массиве использовать при передаче CreateBitmapFromHICON .
#include <iostream>
#include <Windows.h>
#include <Wincodec.h>
#pragma comment(lib,"Windowscodecs.lib")
HICON hiconLarge = NULL;
HICON hiconSmall = NULL;
int main()
{
CoInitialize(NULL);
double x, y;
IWICImagingFactory* piFactory = NULL;
IWICBitmap* piBitmap = NULL;
//Create the COM imaging factory.
HRESULT hr = CoCreateInstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory,
(LPVOID*)&piFactory);
UINT nIcons;
nIcons = ExtractIconEx(L"c:\\windows\\system32\\shell32.dll",
-1,
NULL,
NULL,
0);
ExtractIconEx(L"c:\\windows\\system32\\shell32.dll",
0,
&hiconLarge,
&hiconSmall,
nIcons);
std::cout << nIcons << " icons found." << std::endl;
HRESULT hResult = piFactory->CreateBitmapFromHICON(hiconLarge, &piBitmap);
if (hResult == S_OK)
{
piBitmap->GetResolution(&x, &y);
std::cout << "Resolution x=" << x << " y=" << y << std::endl;
}
}