?
Suche nach IHTMLElementRenderer oder OleDraw.
HRESULT ElementGetBitmap(IDispatch *object, HBITMAP *ppv)
{
IHTMLElementRender *renderer;
IHTMLElement *element;
HRESULT hr = E_FAIL;
if (!object->QueryInterface(IID_IHTMLElement, &element))
{
if (!object->QueryInterface(IID_IHTMLElementRender, &renderer))
{
// element.border and .style.border should be removed
RECT rc;
rc.left = 0;
rc.top = 0;
element->get_offsetWidth(&rc.right);
element->get_offsetHeight(&rc.bottom);
HDC hdc = GetDC(0);
HDC cdc = CreateCompatibleDC(hdc);
HBITMAP hbm = CreateCompatibleBitmap(hdc, rc.right, rc.bottom);
hbm = SelectObject(cdc, hbm);
FillRect(cdc, &rc, GetStockObject(WHITE_BRUSH));
hr = renderer->DrawToDC(cdc);
hbm = SelectObject(cdc, hbm);
*ppv = hbm;
DeleteDC(cdc);
ReleaseDC(0, hdc);
if (hr < 0) DeleteObject(hbm);
renderer->Release();
}
element->Release();
}
return hr;
}