static void test_extent(IOleObject *oleobj) { SIZE expected, extent; DWORD dpi_x; DWORD dpi_y; HDC hdc; HRESULT hres; /* default aspect ratio is 96dpi / 96dpi */ hdc = GetDC(0); dpi_x = GetDeviceCaps(hdc, LOGPIXELSX); dpi_y = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(0, hdc); if (dpi_x != 96 || dpi_y != 96) trace("dpi: %d / %d\n", dpi_y, dpi_y); extent.cx = extent.cy = 0xdeadbeef; hres = IOleObject_GetExtent(oleobj, DVASPECT_CONTENT, &extent); ok(hres == S_OK, "GetExtent failed: %08x\n", hres); expected.cx = MulDiv(192, 2540, dpi_x); expected.cy = MulDiv(192, 2540, dpi_y); ok(extent.cx == expected.cx && extent.cy == expected.cy, "size = {%d %d} (expected %d %d)\n", extent.cx, extent.cy, expected.cx, expected.cy ); extent.cx = 800; extent.cy = 700; hres = IOleObject_SetExtent(oleobj, DVASPECT_CONTENT, &extent); ok(hres == S_OK, "SetExtent failed: %08x\n", hres); extent.cx = extent.cy = 0xdeadbeef; hres = IOleObject_GetExtent(oleobj, DVASPECT_CONTENT, &extent); ok(hres == S_OK, "GetExtent failed: %08x\n", hres); ok(extent.cx == 800 && extent.cy == 700, "size = {%d %d}\n", extent.cx, extent.cy); hres = IOleObject_GetExtent(oleobj, 0, &extent); ok(hres == E_FAIL, "GetExtent failed: %08x\n", hres); hres = IOleObject_GetExtent(oleobj, 7, &extent); ok(hres == E_FAIL, "GetExtent failed: %08x\n", hres); extent.cx = 900; extent.cy = 800; hres = IOleObject_SetExtent(oleobj, DVASPECT_CONTENT, &expected); ok(hres == S_OK, "SetExtent failed: %08x\n", hres); hres = IOleObject_SetExtent(oleobj, 0, &expected); ok(hres == DV_E_DVASPECT, "SetExtent failed: %08x\n", hres); hres = IOleObject_SetExtent(oleobj, 7, &expected); ok(hres == DV_E_DVASPECT, "SetExtent failed: %08x\n", hres); }
static void test_oleobject(void) { DWORD status, dpi_x, dpi_y; IOleClientSite *site; IOleObject *obj; SIZEL extent; HRESULT hr; HDC hdc; hr = CoCreateInstance(&CLSID_ScriptControl, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IOleObject, (void**)&obj); ok(hr == S_OK, "got 0x%08x\n", hr); if (0) /* crashes on w2k3 */ hr = IOleObject_GetMiscStatus(obj, DVASPECT_CONTENT, NULL); status = 0; hr = IOleObject_GetMiscStatus(obj, DVASPECT_CONTENT, &status); ok(hr == S_OK, "got 0x%08x\n", hr); ok(status != 0, "got 0x%08x\n", status); hr = IOleObject_SetClientSite(obj, &testclientsite); ok(hr == S_OK, "got 0x%08x\n", hr); if (0) /* crashes on w2k3 */ hr = IOleObject_GetClientSite(obj, NULL); hr = IOleObject_GetClientSite(obj, &site); ok(hr == S_OK, "got 0x%08x\n", hr); ok(site == &testclientsite, "got %p, %p\n", site, &testclientsite); IOleClientSite_Release(site); hr = IOleObject_SetClientSite(obj, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IOleObject_GetClientSite(obj, &site); ok(hr == S_OK, "got 0x%08x\n", hr); ok(site == NULL, "got %p\n", site); /* extents */ hdc = GetDC(0); dpi_x = GetDeviceCaps(hdc, LOGPIXELSX); dpi_y = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(0, hdc); memset(&extent, 0, sizeof(extent)); hr = IOleObject_GetExtent(obj, DVASPECT_CONTENT, &extent); ok(hr == S_OK, "got 0x%08x\n", hr); ok(extent.cx == MulDiv(38, 2540, dpi_x), "got %d\n", extent.cx); ok(extent.cy == MulDiv(38, 2540, dpi_y), "got %d\n", extent.cy); extent.cx = extent.cy = 0xdeadbeef; hr = IOleObject_GetExtent(obj, DVASPECT_THUMBNAIL, &extent); ok(hr == DV_E_DVASPECT, "got 0x%08x\n", hr); ok(extent.cx == 0xdeadbeef, "got %d\n", extent.cx); ok(extent.cy == 0xdeadbeef, "got %d\n", extent.cy); extent.cx = extent.cy = 0xdeadbeef; hr = IOleObject_GetExtent(obj, DVASPECT_ICON, &extent); ok(hr == DV_E_DVASPECT, "got 0x%08x\n", hr); ok(extent.cx == 0xdeadbeef, "got %d\n", extent.cx); ok(extent.cy == 0xdeadbeef, "got %d\n", extent.cy); extent.cx = extent.cy = 0xdeadbeef; hr = IOleObject_GetExtent(obj, DVASPECT_DOCPRINT, &extent); ok(hr == DV_E_DVASPECT, "got 0x%08x\n", hr); ok(extent.cx == 0xdeadbeef, "got %d\n", extent.cx); ok(extent.cy == 0xdeadbeef, "got %d\n", extent.cy); IOleObject_Release(obj); }