Detlef Riekenberg : comdlg32: Return a device context when requested.

Alexandre Julliard julliard at winehq.org
Tue Mar 27 12:48:05 CDT 2012


Module: wine
Branch: master
Commit: 24047e902f6287c54b401cd1163126b2b0455225
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=24047e902f6287c54b401cd1163126b2b0455225

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sun Mar 18 22:14:23 2012 +0100

comdlg32: Return a device context when requested.

---

 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 0ac3650..3d3ac2a 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);




More information about the wine-cvs mailing list