static void test_CreateBitmapFromHICON(void) { static const char bits[4096]; HICON icon; ICONINFO info; HRESULT hr; IWICBitmap *bitmap; UINT width, height; WICPixelFormatGUID format; /* 1 bpp mask */ info.fIcon = 1; info.xHotspot = 0; info.yHotspot = 0; info.hbmColor = 0; info.hbmMask = CreateBitmap(16, 32, 1, 1, bits); ok(info.hbmMask != 0, "CreateBitmap failed\n"); icon = CreateIconIndirect(&info); ok(icon != 0, "CreateIconIndirect failed\n"); DeleteObject(info.hbmMask); hr = IWICImagingFactory_CreateBitmapFromHICON(factory, 0, NULL); ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got %#x\n", hr); hr = IWICImagingFactory_CreateBitmapFromHICON(factory, 0, &bitmap); ok(hr == HRESULT_FROM_WIN32(ERROR_INVALID_CURSOR_HANDLE), "expected ERROR_INVALID_CURSOR_HANDLE, got %#x\n", hr); hr = IWICImagingFactory_CreateBitmapFromHICON(factory, icon, NULL); ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got %#x\n", hr); hr = IWICImagingFactory_CreateBitmapFromHICON(factory, icon, &bitmap); ok(hr == S_OK, "CreateBitmapFromHICON error %#x\n", hr); DestroyIcon(icon); if (hr != S_OK) return; IWICBitmap_GetPixelFormat(bitmap, &format); ok(IsEqualGUID(&format, &GUID_WICPixelFormat32bppBGRA), "unexpected pixel format %s\n", wine_dbgstr_guid(&format)); IWICBitmap_GetSize(bitmap, &width, &height); ok(hr == S_OK, "IWICBitmap_GetSize error %#x\n", hr); ok(width == 16, "expected 16, got %u\n", width); ok(height == 16, "expected 16, got %u\n", height); IWICBitmap_Release(bitmap); /* 24 bpp color, 1 bpp mask */ info.fIcon = 1; info.xHotspot = 0; info.yHotspot = 0; info.hbmColor = CreateBitmap(16, 16, 1, 24, bits); ok(info.hbmColor != 0, "CreateBitmap failed\n"); info.hbmMask = CreateBitmap(16, 16, 1, 1, bits); ok(info.hbmMask != 0, "CreateBitmap failed\n"); icon = CreateIconIndirect(&info); ok(icon != 0, "CreateIconIndirect failed\n"); DeleteObject(info.hbmColor); DeleteObject(info.hbmMask); hr = IWICImagingFactory_CreateBitmapFromHICON(factory, icon, &bitmap); ok(hr == S_OK, "CreateBitmapFromHICON error %#x\n", hr); DestroyIcon(icon); IWICBitmap_GetPixelFormat(bitmap, &format); ok(IsEqualGUID(&format, &GUID_WICPixelFormat32bppBGRA), "unexpected pixel format %s\n", wine_dbgstr_guid(&format)); IWICBitmap_GetSize(bitmap, &width, &height); ok(hr == S_OK, "IWICBitmap_GetSize error %#x\n", hr); ok(width == 16, "expected 16, got %u\n", width); ok(height == 16, "expected 16, got %u\n", height); IWICBitmap_Release(bitmap); }
HRESULT WINAPI IWICImagingFactory_CreateBitmapFromHICON_Proxy_W(IWICImagingFactory *pFactory, HICON hIcon, IWICBitmap **ppIBitmap) { return IWICImagingFactory_CreateBitmapFromHICON(pFactory, hIcon, ppIBitmap); }