From: Detlef Riekenberg Subject: [PATCH 7/8] comdlg32: Return a device context, when requested Message-Id: <1329742540-6143-8-git-send-email-wine.dev@web.de> Date: Mon, 20 Feb 2012 13:55:39 +0100 -- By by ... Detlef --- dlls/comdlg32/printdlg.c | 28 ++++++++++++++++++++++++++-- 1 files changed, 26 insertions(+), 2 deletions(-) diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c index 229c7aa..1a93a61 100644 --- a/dlls/comdlg32/printdlg.c +++ b/dlls/comdlg32/printdlg.c @@ -4002,7 +4002,19 @@ HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA lppd) hr = E_FAIL; lppd->hDevMode = update_devmode_handleA(lppd->hDevMode, dm); - if (!lppd->hDevMode) + if (!hr && lppd->hDevMode) { + if (lppd->Flags & PD_RETURNDC) { + lppd->hDC = CreateDCA(dbuf->pDriverPath, pbuf->pPrinterName, pbuf->pPortName, dm); + if (!lppd->hDC) + hr = E_FAIL; + } + else if (lppd->Flags & PD_RETURNIC) { + lppd->hDC = CreateICA(dbuf->pDriverPath, pbuf->pPrinterName, pbuf->pPortName, dm); + if (!lppd->hDC) + hr = E_FAIL; + } + } + else hr = E_FAIL; HeapFree(GetProcessHeap(), 0, pbuf); @@ -4111,7 +4123,19 @@ HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW lppd) hr = E_FAIL; lppd->hDevMode = update_devmode_handleW(lppd->hDevMode, dm); - if (!lppd->hDevMode) + if (!hr && lppd->hDevMode) { + if (lppd->Flags & PD_RETURNDC) { + lppd->hDC = CreateDCW(dbuf->pDriverPath, pbuf->pPrinterName, pbuf->pPortName, dm); + if (!lppd->hDC) + hr = E_FAIL; + } + else if (lppd->Flags & PD_RETURNIC) { + lppd->hDC = CreateICW(dbuf->pDriverPath, pbuf->pPrinterName, pbuf->pPortName, dm); + if (!lppd->hDC) + hr = E_FAIL; + } + } + else hr = E_FAIL; HeapFree(GetProcessHeap(), 0, pbuf); -- 1.7.5.4