]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dcprint.cpp
handle correctly never/always shown scrollbars in GetClientSize()
[wxWidgets.git] / src / msw / dcprint.cpp
index 628e6e81b2217364fed0c46add04d756739c6603..8a0b13d38fc7438fa5898473bcc19c0ebe07a751 100644 (file)
@@ -228,7 +228,7 @@ void wxPrinterDCImpl::EndPage()
 }
 
 
-wxRect wxPrinterDCImpl::GetPaperRect()
+wxRect wxPrinterDCImpl::GetPaperRect() const
 
 {
     if (!IsOk()) return wxRect(0, 0, 0, 0);
@@ -327,17 +327,21 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
     }
 
 
-    HGLOBAL hDevMode = (HGLOBAL)(DWORD) data->GetDevMode();
+    GlobalPtrLock lockDevMode;
+    const HGLOBAL devMode = data->GetDevMode();
+    if ( devMode )
+        lockDevMode.Init(devMode);
 
-    DEVMODE *lpDevMode = hDevMode ? (DEVMODE *)::GlobalLock(hDevMode) : NULL;
-
-    HDC hDC = ::CreateDC(NULL, deviceName.wx_str(), NULL, lpDevMode);
+    HDC hDC = ::CreateDC
+                (
+                    NULL,               // no driver name as we use device name
+                    deviceName.wx_str(),
+                    NULL,               // unused
+                    static_cast<DEVMODE *>(lockDevMode.Get())
+                );
     if ( !hDC )
         wxLogLastError(_T("CreateDC(printer)"));
 
-    if ( lpDevMode )
-        ::GlobalUnlock(hDevMode);
-
     return (WXHDC) hDC;
 #endif // PostScript/Windows printing
 }