Hello everyone .
I want to use ID2D1DCRenderTarget objects for render content to a printer device context.
The following code is wrong , What should I do ? Thanks.
extern HDC hPrinterDC ; // a valid printer device context.
extern ID2D1Factory2 * m_d2dFactory; // a valid object
D2D1_RENDER_TARGET_PROPERTIES rtPro_Printer;
rtPro_Printer.type = D2D1_RENDER_TARGET_TYPE_DEFAULT;
rtPro_Printer.dpiX = 0;
rtPro_Printer.dpiY = 0;
rtPro_Printer.usage = D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE;
rtPro_Printer.minLevel = D2D1_FEATURE_LEVEL_DEFAULT;
rtPro_Printer.pixelFormat = D2D1::PixelFormat(
(DXGI_FORMAT)DXGI_FORMAT_B8G8R8A8_UNORM,
D2D1_ALPHA_MODE_IGNORE
);
CComPtr<ID2D1DCRenderTarget> m_d2dDCRT;
hr = m_d2dFactory->CreateDCRenderTarget(&rtPro_Printer, &m_d2dDCRT);
assert(S_OK == hr);
RECT rect = { 100,100,800,800};
// This is the wrong code
hr = m_d2dDCRT->BindDC(hPrinterDC, &rect);
// it returns an HRESULT error code. "One or more arguments are invalid"