30#define NONAMELESSUNION
47#define expect_eq(expr, value, type, format) { type ret = (expr); ok((value) == ret, #expr " expected " format " got " format "\n", value, ret); }
49#define ole_expect(expr, expect) { \
51 ok(r == (expect), #expr " returned %x, expected %s (%x)\n", r, #expect, expect); \
54#define ole_check(expr) ole_expect(expr, S_OK);
61#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr)
650x47,0x49,0x46,0x38,0x37,0x61,0x01,0x00,0x01,0x00,0x80,0x00,0x00,0xff,0xff,0xff,
660xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x02,0x02,0x44,
720xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c,
730x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x05,0x03,0x04,0x04,0x04,0x03,0x05,
740x04,0x04,0x04,0x05,0x05,0x05,0x06,0x07,0x0c,0x08,0x07,0x07,0x07,0x07,0x0f,0x0b,
750x0b,0x09,0x0c,0x11,0x0f,0x12,0x12,0x11,0x0f,0x11,0x11,0x13,0x16,0x1c,0x17,0x13,
760x14,0x1a,0x15,0x11,0x11,0x18,0x21,0x18,0x1a,0x1d,0x1d,0x1f,0x1f,0x1f,0x13,0x17,
770x22,0x24,0x22,0x1e,0x24,0x1c,0x1e,0x1f,0x1e,0xff,0xdb,0x00,0x43,0x01,0x05,0x05,
780x05,0x07,0x06,0x07,0x0e,0x08,0x08,0x0e,0x1e,0x14,0x11,0x14,0x1e,0x1e,0x1e,0x1e,
790x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
800x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
810x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xff,0xc0,
820x00,0x11,0x08,0x00,0x01,0x00,0x01,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
830x01,0xff,0xc4,0x00,0x15,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
840x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xff,0xc4,0x00,0x14,0x10,0x01,0x00,0x00,
850x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc4,
860x00,0x14,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
870x00,0x00,0x00,0x00,0xff,0xc4,0x00,0x14,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
880x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xda,0x00,0x0c,0x03,0x01,
890x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xb2,0xc0,0x07,0xff,0xd9
940x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
950x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53,
960xde,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,
970x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd5,
980x06,0x03,0x0f,0x07,0x2d,0x12,0x10,0xf0,0xfd,0x00,0x00,0x00,0x0c,0x49,0x44,0x41,
990x54,0x08,0xd7,0x63,0xf8,0xff,0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,
1000xe7,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
1050x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
1060x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
1070x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
1080x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,
1140x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
1150x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x01,0x00,
1160x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
1170x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x01,
1230x47,0x49,0x46,0x38,0x37,0x61,0x02,0x00,0x02,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,
1240x39,0x62,0xfc,0xff,0x1a,0xe5,0xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x02,0x00,
1250x02,0x00,0x00,0x02,0x03,0x14,0x16,0x05,0x00,0x3b
1310xd7,0xcd,0xc6,0x9a, 0x00,0x00,0x00,0x00, 0x00,0x00,0xee,0x02, 0xb1,0x03,0xa0,0x05,
1320x00,0x00,0x00,0x00, 0xee,0x53,0x01,0x00, 0x09,0x00,0x00,0x03, 0x13,0x00,0x00,0x00,
1330x01,0x00,0x05,0x00, 0x00,0x00,0x00,0x00, 0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
1340x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00
139 0x01, 0x00, 0x09, 0x00, 0x00, 0x03, 0x19, 0x00,
140 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x32, 0x0a,
142 0x16, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x00, 0x00,
143 0x54, 0x65, 0x73, 0x74, 0x03, 0x00, 0x05, 0x00,
144 0x08, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00,
150 0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
152 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0xe7, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xff,
155 0x20, 0x45, 0x4d, 0x46, 0x00, 0x00, 0x01, 0x00,
156 0xf4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
157 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
160 0x40, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x04, 0x00,
163 0x80, 0xa9, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00,
164 0x08, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
165 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
167 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0xc8, 0x41, 0x00, 0x80, 0xbb, 0x41,
169 0x0b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
170 0x04, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
173 0xff, 0xff, 0xff, 0xff, 0x54, 0x00, 0x00, 0x00,
174 0x54, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00,
175 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
176 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
177 0x3c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
178 0x0e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
179 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
180 0x14, 0x00, 0x00, 0x00
222 OLE_XSIZE_HIMETRIC
width;
223 OLE_YSIZE_HIMETRIC
height;
232 ok(
hres ==
S_OK,
"OLP (NULL,..) does not return 0, but 0x%08x\n",
hres);
233 ok(pic !=
NULL,
"OLP (NULL,..) returns NULL, instead of !NULL\n");
240 ok(
hres ==
S_OK,
"IPicture_QI does not return S_OK, but 0x%08x\n",
hres);
241 ok(pvObj !=
NULL,
"IPicture_QI does return NULL, instead of a ptr\n");
243 IPicture_Release ((
IPicture*)pvObj);
247 ok(
hres ==
S_OK,
"IPicture_get_Handle does not return S_OK, but 0x%08x\n",
hres);
248 ok(
handle != 0,
"IPicture_get_Handle returns a NULL handle, but it should be non NULL\n");
254 ok(
bmp.bmBits != 0,
"not a dib\n");
259 ok(
hres ==
S_OK,
"IPicture_get_Width does not return S_OK, but 0x%08x\n",
hres);
260 ok(
width != 0,
"IPicture_get_Width returns 0, but it should not be 0.\n");
264 ok(
hres ==
S_OK,
"IPicture_get_Height does not return S_OK, but 0x%08x\n",
hres);
265 ok(
height != 0,
"IPicture_get_Height returns 0, but it should not be 0.\n");
268 hres = IPicture_get_Type (pic, &
type);
269 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
273 hres = IPicture_get_Attributes (pic, &
attr);
274 ok(
hres ==
S_OK,
"IPicture_get_Attributes does not return S_OK, but 0x%08x\n",
hres);
275 ok(
attr == 0,
"IPicture_get_Attributes returns %d, but it should be 0.\n",
attr);
278 hres = IPicture_get_hPal (pic, &hPal);
279 ok(
hres ==
S_OK,
"IPicture_get_hPal does not return S_OK, but 0x%08x\n",
hres);
281 ok(hPal == 0,
"IPicture_get_hPal returns %d, but it should be 0.\n", hPal);
283 res = IPicture_Release (pic);
284 ok (
res == 0,
"refcount after release is %d, but should be 0?\n",
res);
288test_pic(
const unsigned char *imgdata,
unsigned int imgsize)
306 ok (
hres ==
S_OK,
"createstreamonhglobal failed? doubt it... hres 0x%08x\n",
hres);
310 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
321 for (
i = 1;
i <= 8;
i++) {
330 for (
j = 2;
j <=
i;
j++) {
337 ok (
hres ==
S_OK,
"createstreamonhglobal failed? doubt it... hres 0x%08x\n",
hres);
341 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
374 ok (
hres ==
S_OK,
"CreatestreamOnHGlobal failed? doubt it... hres 0x%08x\n",
hres);
378 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
384 ok(pic !=
NULL,
"empty picture not loaded, pic is NULL\n");
386 hres = IPicture_get_Type (pic, &
type);
387 ok (
hres ==
S_OK,
"empty picture get type failed with hres 0x%08x\n",
hres);
391 hres = IPicture_get_Attributes (pic, &
attr);
392 ok (
hres ==
S_OK,
"empty picture get attributes failed with hres 0x%08x\n",
hres);
393 ok (
attr == 0,
"attr is %d, but should be 0\n",
attr);
396 ok (
hres ==
S_OK,
"empty picture get handle failed with hres 0x%08x\n",
hres);
397 ok (
handle == 0,
"empty picture get handle did not return 0, but 0x%08x\n",
handle);
398 IPicture_Release (pic);
420 ok (
hres ==
S_OK,
"CreatestreamOnHGlobal failed? doubt it... hres 0x%08x\n",
hres);
425 ok (
hres ==
S_OK,
"istream seek failed? doubt it... hres 0x%08x\n",
hres);
431 ok(pic !=
NULL,
"empty picture not loaded, pic is NULL\n");
433 hres = IPicture_get_Type (pic, &
type);
434 ok (
hres ==
S_OK,
"empty picture get type failed with hres 0x%08x\n",
hres);
437 IPicture_Release (pic);
446 DISPPARAMS dispparams;
468 V_BOOL(&vararg) = VARIANT_FALSE;
469 dispparams.cNamedArgs = 0;
470 dispparams.rgdispidNamedArgs =
NULL;
471 dispparams.cArgs = 1;
472 dispparams.rgvarg = &vararg;
474 ok(
hr ==
DISP_E_UNKNOWNNAME,
"IPictureDisp_Invoke should have returned DISP_E_UNKNOWNNAME instead of 0x%08x\n",
hr);
476 ok(
hr ==
DISP_E_UNKNOWNNAME,
"IPictureDisp_Invoke should have returned DISP_E_UNKNOWNNAME instead of 0x%08x\n",
hr);
478 dispparams.cArgs = 0;
479 dispparams.rgvarg =
NULL;
494 ok(
V_VT(&varresult) ==
VT_I4,
"V_VT(&varresult) should have been VT_UINT instead of %d\n",
V_VT(&varresult));
502 dispparams.cArgs = 1;
503 dispparams.rgvarg = &vararg;
507 dispparams.cArgs = 1;
508 dispparams.rgvarg = &vararg;
529 dispparams.rgvarg =
args;
530 dispparams.rgdispidNamedArgs =
NULL;
531 dispparams.cArgs = 10;
532 dispparams.cNamedArgs = 0;
545 dispparams.cArgs = 9;
550 IPictureDisp_Release(picdisp);
570 desc.bmp.hpal = (HPALETTE)0xbeefdead;
594 ok(0,
"picture type %d is not supported\n",
type);
617 pict = (
void *)0xdeadbeef;
620 ok(pict ==
NULL,
"got %p\n", pict);
628 hr = IPicture_get_Type(pict, &
type);
633 hr = IPicture_get_Handle(pict, &
handle);
641 hr = IPicture_get_hPal(pict, &
handle);
659 IPicture_Release(pict);
682 ok(
handle != 0,
"handle is null\n");
687 ole_check(IPicture_get_Height(pict, &cxy));
690 ole_check(IPicture_get_Width(pict, &cxy));
693 ole_check(IPicture_get_KeepOriginalFormat(pict, &keep));
697 IPicture_Release(pict);
738 ok(
handle != 0,
"handle is null\n");
743 ole_check(IPicture_get_Height(pict, &cxy));
746 ole_check(IPicture_get_Width(pict, &cxy));
749 ole_check(IPicture_get_KeepOriginalFormat(pict, &keep));
752 IPicture_Release(pict);
757 OLE_XPOS_HIMETRIC xSrc,
758 OLE_YPOS_HIMETRIC ySrc,
759 OLE_XSIZE_HIMETRIC cxSrc,
760 OLE_YSIZE_HIMETRIC cySrc,
769 hr = IPicture_Render(iface,
hdc,
x,
y,
cx,
cy, xSrc, ySrc, cxSrc, cySrc, bounds);
771 IPicture_QueryInterface(iface, &
IID_IDispatch, (
void**)&disp);
797 ok(
hr == hr_disp,
"DISPID_PICT_RENDER returned wrong code, 0x%08x, expected 0x%08x\n",
800 IDispatch_Release(disp);
811 OLE_XSIZE_HIMETRIC pWidth;
812 OLE_YSIZE_HIMETRIC pHeight;
819 hres = IPicture_get_Type(pic, &
type);
820 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
823 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 0, 0,
NULL);
825 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 0,
NULL);
827 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 10,
NULL);
829 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 0,
NULL);
831 hres =
picture_render(pic,
hdc, 0, 0, 0, 10, 0, 0, 10, 10,
NULL);
833 hres =
picture_render(pic,
hdc, 0, 0, 10, 0, 0, 0, 10, 10,
NULL);
835 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 10, 10,
NULL);
838 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 10,
NULL);
840 IPicture_Release(pic);
845 if(!
desc.icon.hicon){
846 win_skip(
"LoadIcon failed. Skipping...\n");
854 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 0, 0,
NULL);
856 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 10, 0,
NULL);
858 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 10,
NULL);
860 hres =
picture_render(pic,
hdc, 0, 0, 10, 10, 0, 0, 0, 0,
NULL);
862 hres =
picture_render(pic,
hdc, 0, 0, 0, 10, 0, 0, 10, 10,
NULL);
864 hres =
picture_render(pic,
hdc, 0, 0, 10, 0, 0, 0, 10, 10,
NULL);
866 hres =
picture_render(pic,
hdc, 0, 0, 0, 0, 0, 0, 10, 10,
NULL);
870 IPicture_get_Width(pic, &pWidth);
871 IPicture_get_Height(pic, &pHeight);
878 hres =
picture_render(pic,
hdc, 1, 1, 9, 9, 0, pHeight, pWidth, -pHeight,
NULL);
886 "Color at 0,0 should be unchanged 0x%06X, but was 0x%06X\n",
expected,
result);
889 "Color at 5,5 should have changed, but still was 0x%06X\n",
expected);
892 "Color at 10,10 should be unchanged 0x%06X, but was 0x%06X\n",
expected,
result);
895 IPicture_Release(pic);
908 hres = IPicture_get_Type(pic, &
type);
909 ok(
hres ==
S_OK,
"IPicture_get_Type does not return S_OK, but 0x%08x\n",
hres);
912 hres = IPicture_get_Attributes(pic,
NULL);
916 hres = IPicture_get_Attributes(pic, &
attr);
918 ok(
attr == 0,
"IPicture_get_Attributes does not reset attr to zero, got %d\n",
attr);
920 IPicture_Release(pic);
930 hres = IPicture_get_Handle(pic,
NULL);
933 IPicture_Release(pic);
944 hres = IPicture_get_Type(pic,
NULL);
947 IPicture_Release(pic);
959 WCHAR temp_fileW[
MAX_PATH + 5] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',
'/'};
970 } invalid_parameters[] =
984 invalid_parameters[
i].
riid,
985 (
void **)invalid_parameters[
i].pic);
987 "[%d] Expected OleLoadPicturePath to return E_INVALIDARG, got 0x%08x\n",
i,
hres);
989 "[%d] Expected output pointer to be 0xdeadbeef, got %p\n",
i, pic);
995 ok(
hres == INET_E_UNKNOWN_PROTOCOL ||
998 "Expected OleLoadPicturePath to return INET_E_UNKNOWN_PROTOCOL, got 0x%08x\n",
hres);
1000 "Expected the output interface pointer to be NULL, got %p\n", pic);
1005 ok(
hres == INET_E_UNKNOWN_PROTOCOL ||
1008 "Expected OleLoadPicturePath to return INET_E_UNKNOWN_PROTOCOL, got 0x%08x\n",
hres);
1010 "Expected the output interface pointer to be NULL, got %p\n", pic);
1026 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1028 IPicture_Release(pic);
1035 IPicture_Release(pic);
1042 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1044 IPicture_Release(pic);
1057 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1060 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1070 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1073 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1088 ptr = temp_fileW + 8;
1099 "Expected OleLoadPicturePath to return S_OK, got 0x%08x\n",
hres);
1101 IPicture_Release(pic);
1114 ok(
hres == INET_E_RESOURCE_NOT_FOUND ||
1117 "Expected OleLoadPicturePath to return INET_E_RESOURCE_NOT_FOUND, got 0x%08x\n",
hres);
1138 static const BYTE bmp_bits[1024];
1139 OLE_XSIZE_HIMETRIC
cx;
1140 OLE_YSIZE_HIMETRIC
cy;
1149 desc.cbSizeofstruct =
sizeof(
desc);
1166 hr = IPicture_get_Width(pic, &
cx);
1168 ok(
cx ==
d,
"got %d, expected %d\n",
cx,
d);
1172 hr = IPicture_get_Height(pic, &
cy);
1174 ok(
cy ==
d,
"got %d, expected %d\n",
cy,
d);
1177 IPicture_Release(pic);
1181 1, 1, bmp_bits, bmp_bits);
1182 ok(icon !=
NULL,
"failed to create icon\n");
1185 desc.icon.hicon = icon;
1192 hr = IPicture_get_Width(pic, &
cx);
1194 ok(
cx ==
d,
"got %d, expected %d\n",
cx,
d);
1198 hr = IPicture_get_Height(pic, &
cy);
1200 ok(
cy ==
d,
"got %d, expected %d\n",
cy,
d);
1202 IPicture_Release(pic);
1222 desc.cbSizeofstruct =
sizeof(
desc);
1227 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1230 hr = IPicture_get_Type(pic, &
type);
1234 hr = IPicture_get_Handle(pic, &
handle);
1235 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1240 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1243 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1244 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1245 ok(
size == 66,
"expected 66, got %d\n",
size);
1247 ok(!
memcmp(&
mem[0],
"BM", 2),
"got wrong bmp header %04x\n",
mem[0]);
1251 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1253 ok(
size == -1,
"expected -1, got %d\n",
size);
1260 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1262 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1265 IPersistStream_Release(src_stream);
1266 IStream_Release(dst_stream);
1269 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1270 ok(
mem[1] == 66,
"expected stream size 66, got %u\n",
mem[1]);
1271 ok(!
memcmp(&
mem[2],
"BM", 2),
"got wrong bmp header %04x\n",
mem[2]);
1277 IPicture_Release(pic);
1294 desc.cbSizeofstruct =
sizeof(
desc);
1298 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1301 hr = IPicture_get_Type(pic, &
type);
1305 hr = IPicture_get_Handle(pic, &
handle);
1306 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1311 ok(
hr ==
S_OK,
"CreateStreamOnHGlobal error %#x\n",
hr);
1314 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1315 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1317 ok(
size == 766,
"expected 766, got %d\n",
size);
1319 ok(
mem[0] == 0x00010000,
"got wrong icon header %04x\n",
mem[0]);
1323 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1325 ok(
size == -1,
"expected -1, got %d\n",
size);
1332 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1334 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1337 IPersistStream_Release(src_stream);
1338 IStream_Release(dst_stream);
1341 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1343 ok(
mem[1] == 766,
"expected stream size 766, got %u\n",
mem[1]);
1344 ok(
mem[2] == 0x00010000,
"got wrong icon header %04x\n",
mem[2]);
1350 IPicture_Release(pic);
1367 memset(&pic, 0,
sizeof(pic));
1368 desc.cbSizeofstruct =
sizeof(
desc);
1371 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1374 hr = IPicture_get_Type(pic, &
type);
1378 handle = (OLE_HANDLE)0xdeadbeef;
1379 hr = IPicture_get_Handle(pic, &
handle);
1380 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1385 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1388 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1389 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1390 ok(
size == -1,
"expected -1, got %d\n",
size);
1393 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1394 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1395 ok(
size == -1,
"expected -1, got %d\n",
size);
1398 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1400 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1404 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1405 ok(
mem[1] == 0,
"expected stream size 0, got %u\n",
mem[1]);
1408 IPersistStream_Release(src_stream);
1409 IPicture_Release(pic);
1418 ok(
hr ==
S_OK,
"OleLoadPicture error %#x\n",
hr);
1419 ok(pic !=
NULL,
"picture should not be not NULL\n");
1423 hr = IPicture_get_Type(pic, &
type);
1427 handle = (OLE_HANDLE)0xdeadbeef;
1428 hr = IPicture_get_Handle(pic, &
handle);
1429 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1432 IPicture_Release(pic);
1434 IStream_Release(dst_stream);
1438 ok(
stream !=
NULL,
"failed to create empty image stream\n");
1442 ok(
hr ==
S_OK,
"OleLoadPicture error %#x\n",
hr);
1443 ok(pic !=
NULL,
"picture should not be not NULL\n");
1447 hr = IPicture_get_Type(pic, &
type);
1451 handle = (OLE_HANDLE)0xdeadbeef;
1452 hr = IPicture_get_Handle(pic, &
handle);
1453 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1456 IPicture_Release(pic);
1479 ok(
hdc != 0,
"CreateEnhMetaFileA failed\n");
1481 desc.cbSizeofstruct =
sizeof(
desc);
1484 ok(
desc.emf.hemf != 0,
"CloseEnhMetaFile failed\n");
1486 ok(
hr ==
S_OK,
"OleCreatePictureIndirect error %#x\n",
hr);
1489 hr = IPicture_get_Type(pic, &
type);
1493 hr = IPicture_get_Handle(pic, &
handle);
1494 ok(
hr ==
S_OK,
"get_Handle error %#8x\n",
hr);
1499 ok(
hr ==
S_OK,
"createstreamonhglobal error %#x\n",
hr);
1502 hr = IPicture_SaveAsFile(pic, dst_stream,
TRUE, &
size);
1503 ok(
hr ==
S_OK,
"IPicture_SaveasFile error %#x\n",
hr);
1504 ok(
size == 128,
"expected 128, got %d\n",
size);
1514 hr = IPicture_SaveAsFile(pic, dst_stream,
FALSE, &
size);
1516 ok(
size == -1,
"expected -1, got %d\n",
size);
1523 ok(
hr ==
S_OK,
"QueryInterface error %#x\n",
hr);
1525 hr = IPersistStream_Save(src_stream, dst_stream,
TRUE);
1528 IPersistStream_Release(src_stream);
1529 IStream_Release(dst_stream);
1532 ok(!
memcmp(
mem,
"lt\0\0", 4),
"got wrong stream header %04x\n",
mem[0]);
1533 ok(
mem[1] == 128,
"expected 128, got %u\n",
mem[1]);
1542 IPicture_Release(pic);
1550 if (!pOleLoadPicture)
1552 win_skip(
"OleLoadPicture is not available\n");
1566 if (pOleLoadPictureEx)
1573 win_skip(
"OleLoadPictureEx is not available\n");
1600 This->supportHandle=0;
1646 void* supportBuffer;
1647 ULONG bytesReadBuffer;
1648 ULONG bytesToReadFromBuffer;
1651 pcbRead = &bytesReadBuffer;
1652 bytesToReadFromBuffer =
min(
This->streamSize.u.LowPart -
This->currentPosition.u.LowPart,
cb);
1654 memcpy(pv, (
char *) supportBuffer+
This->currentPosition.u.LowPart, bytesToReadFromBuffer);
1655 This->currentPosition.u.LowPart+=bytesToReadFromBuffer;
1656 *pcbRead = bytesToReadFromBuffer;
1670 void* supportBuffer;
1674 if (pcbWritten == 0)
1678 newSize.
u.HighPart = 0;
1679 newSize.
u.LowPart =
This->currentPosition.u.LowPart +
cb;
1680 if (newSize.
u.LowPart >
This->streamSize.u.LowPart)
1681 IStream_SetSize(iface, newSize);
1684 memcpy((
char *) supportBuffer+
This->currentPosition.u.LowPart, pv,
cb);
1685 This->currentPosition.u.LowPart+=
cb;
1701 case STREAM_SEEK_SET:
1702 newPosition.
u.HighPart = 0;
1703 newPosition.
u.LowPart = 0;
1705 case STREAM_SEEK_CUR:
1706 newPosition =
This->currentPosition;
1708 case STREAM_SEEK_END:
1709 newPosition =
This->streamSize;
1717 if (plibNewPosition) *plibNewPosition = newPosition;
1718 This->currentPosition = newPosition;
1728 if (libNewSize.
u.HighPart != 0)
1730 if (
This->streamSize.u.LowPart == libNewSize.
u.LowPart)
1733 if (supportHandle == 0)
1735 This->supportHandle = supportHandle;
1736 This->streamSize.u.LowPart = libNewSize.
u.LowPart;
1748 BYTE tmpBuffer[128];
1755 totalBytesRead.
u.LowPart = totalBytesRead.
u.HighPart = 0;
1756 totalBytesWritten.
u.LowPart = totalBytesWritten.
u.HighPart = 0;
1758 while (
cb.u.LowPart > 0 )
1760 if (
cb.u.LowPart >= 128 )
1763 copySize =
cb.u.LowPart;
1764 IStream_Read(iface, tmpBuffer, copySize, &bytesRead);
1765 totalBytesRead.
u.LowPart += bytesRead;
1766 IStream_Write(pstm, tmpBuffer, bytesRead, &
bytesWritten);
1773 if (bytesRead!=copySize)
1776 cb.u.LowPart -= bytesRead;
1780 pcbRead->
u.LowPart = totalBytesRead.
u.LowPart;
1781 pcbRead->
u.HighPart = totalBytesRead.
u.HighPart;
1786 pcbWritten->
u.LowPart = totalBytesWritten.
u.LowPart;
1787 pcbWritten->
u.HighPart = totalBytesWritten.
u.HighPart;
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define InterlockedIncrement
#define InterlockedDecrement
#define UlongToHandle(ul)
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
#define GetProcAddress(x, y)
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
#define MultiByteToWideChar
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
HRESULT WINAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid, BOOL Own, void **ppvObj)
HRESULT WINAPI OleLoadPicturePath(LPOLESTR szURLorPath, LPUNKNOWN punkCaller, DWORD dwReserved, OLE_COLOR clrReserved, REFIID riid, LPVOID *ppvRet)
HRESULT WINAPI OleLoadPictureFile(VARIANT filename, IDispatch **picture)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum GLsizei GLuint GLint * bytesWritten
GLenum const GLfloat * params
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
HGLOBAL NTAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static const WCHAR emptyW[]
#define seekto(pos, errstr)
#define memcpy(s1, s2, n)
static const WCHAR desc[]
static HMODULE MODULEINFO DWORD cb
static ULONG WINAPI NoStatStreamImpl_Release(IStream *iface)
static void test_metafile(void)
static HRESULT WINAPI NoStatStreamImpl_UnlockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static void test_himetric(void)
static const unsigned char apmdata[]
static void test_load_save_empty_picture(void)
static HRESULT WINAPI NoStatStreamImpl_Revert(IStream *iface)
static HRESULT WINAPI NoStatStreamImpl_CopyTo(IStream *iface, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
#define ok_ole_success(hr, func)
static HRESULT WINAPI NoStatStreamImpl_SetSize(IStream *iface, ULARGE_INTEGER libNewSize)
static void test_Render(void)
static const unsigned char metafile[]
static void test_pic_with_stream(LPSTREAM stream, unsigned int imgsize)
static void test_empty_image_2(void)
static const unsigned char gifimage[35]
static void test_get_Attributes(void)
static HRESULT picture_render(IPicture *iface, HDC hdc, LONG x, LONG y, LONG cx, LONG cy, OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc, OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc, const RECT *bounds)
static IStream * NoStatStream_Construct(HGLOBAL hGlobal)
static void test_Invoke(void)
static void test_load_save_icon(void)
static const unsigned char bmpimage[66]
static HRESULT WINAPI NoStatStreamImpl_Clone(IStream *iface, IStream **ppstm)
#define expect_eq(expr, value, type, format)
static const unsigned char bmpimage_rle8[]
static NoStatStreamImpl * impl_from_IStream(IStream *iface)
static ULONG WINAPI NoStatStreamImpl_AddRef(IStream *iface)
static void test_get_Handle(void)
static void NoStatStreamImpl_Destroy(NoStatStreamImpl *This)
static HRESULT WINAPI NoStatStreamImpl_Read(IStream *iface, void *pv, ULONG cb, ULONG *pcbRead)
static HRESULT WINAPI NoStatStreamImpl_Commit(IStream *iface, DWORD grfCommitFlags)
static void test_get_Type(void)
static void test_load_save_bmp(void)
static void delete_render_dc(HDC dc)
static HRESULT WINAPI NoStatStreamImpl_Seek(IStream *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static void test_OleLoadPicturePath(void)
static HRESULT WINAPI NoStatStreamImpl_QueryInterface(IStream *iface, REFIID riid, void **ppvObject)
static void test_OleCreatePictureIndirect(void)
static HDC create_render_dc(void)
static const unsigned char pngimage[285]
static void test_enhmetafile(void)
#define ole_expect(expr, expect)
static const unsigned char enhmetafile[]
static HRESULT WINAPI NoStatStreamImpl_LockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static const unsigned char jpgimage[285]
static void test_load_save_emf(void)
static void test_empty_image(void)
static HRESULT create_picture(short type, IPicture **pict)
static HRESULT WINAPI NoStatStreamImpl_Stat(IStream *iface, STATSTG *pstatstg, DWORD grfStatFlag)
static void test_apm(void)
static HRESULT WINAPI NoStatStreamImpl_Write(IStream *iface, const void *pv, ULONG cb, ULONG *pcbWritten)
static const unsigned char gif4pixel[42]
static void test_pic(const unsigned char *imgdata, unsigned int imgsize)
static const IStreamVtbl NoStatStreamImpl_Vtbl
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
interface IStream * LPSTREAM
BSTR WINAPI SysAllocString(LPCOLESTR str)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
#define PICTYPE_UNINITIALIZED
#define CTL_E_PATHFILEACCESSERROR
#define PICTYPE_ENHMETAFILE
#define DISPID_PICT_RENDER
struct tagPICTDESC PICTDESC
#define CTL_E_FILENOTFOUND
#define CTL_E_INVALIDPROPERTYVALUE
const GUID IID_IPictureDisp
const GUID IID_IPersistStream
_Out_opt_ int _Out_opt_ int * cy
#define IsEqualIID(riid1, riid2)
ULARGE_INTEGER streamSize
ULARGE_INTEGER currentPosition
struct _ULARGE_INTEGER::@4136 u
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define STG_E_INVALIDPOINTER
#define DISP_E_BADPARAMCOUNT
#define DISP_E_MEMBERNOTFOUND
#define DISP_E_TYPEMISMATCH
#define DISP_E_PARAMNOTOPTIONAL
#define STG_E_INVALIDFUNCTION
#define DISP_E_UNKNOWNNAME
HGDIOBJ WINAPI GetStockObject(_In_ int)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
BOOL WINAPI DeleteEnhMetaFile(_In_opt_ HENHMETAFILE)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HDC WINAPI CreateMetaFileA(_In_opt_ LPCSTR)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HMETAFILE WINAPI CloseMetaFile(_In_ HDC hdc)
HDC WINAPI CreateEnhMetaFileA(_In_opt_ HDC, _In_opt_ LPCSTR, _In_opt_ LPCRECT, _In_opt_ LPCSTR)
#define ENHMETA_SIGNATURE
HENHMETAFILE WINAPI CloseEnhMetaFile(_In_ HDC hdc)
BOOL WINAPI SetPixelV(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HICON WINAPI CreateIcon(_In_opt_ HINSTANCE, _In_ int, _In_ int, _In_ BYTE, _In_ BYTE, _In_ const BYTE *, _In_ const BYTE *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI DestroyIcon(_In_ HICON)