X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/632aaa18917a5a26e166aa970f7ad65ff15a3667..659863d8a73d02626f4060bb1099fe7bfd80d22a:/src/msw/dcprint.cpp diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index 8f77fa7fe8..4b514b9e32 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -56,7 +56,7 @@ #define GDI_ERROR ((int)-1) #endif -#if defined(__WXUNIVERSAL__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW +#if defined(__WXUNIVERSAL__) && wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW #define wxUSE_PS_PRINTING 1 #else #define wxUSE_PS_PRINTING 0 @@ -193,15 +193,13 @@ bool wxPrinterDC::StartDoc(const wxString& message) if (!m_hDC) return false; - int ret = ::StartDoc(GetHdc(), &docinfo); - - if (ret <= 0) + if ( ::StartDoc(GetHdc(), &docinfo) <= 0 ) { - DWORD lastError = GetLastError(); - wxLogDebug(wxT("wxDC::StartDoc failed with error: %ld\n"), lastError); + wxLogLastError(wxT("StartDoc")); + return false; } - return (ret > 0); + return true; } void wxPrinterDC::EndDoc() @@ -221,6 +219,19 @@ void wxPrinterDC::EndPage() ::EndPage((HDC) m_hDC); } + +wxRect wxPrinterDC::GetPaperRect() + +{ + if (!Ok()) return wxRect(0, 0, 0, 0); + int w = ::GetDeviceCaps((HDC) m_hDC, PHYSICALWIDTH); + int h = ::GetDeviceCaps((HDC) m_hDC, PHYSICALHEIGHT); + int x = -::GetDeviceCaps((HDC) m_hDC, PHYSICALOFFSETX); + int y = -::GetDeviceCaps((HDC) m_hDC, PHYSICALOFFSETY); + return wxRect(x, y, w, h); +} + + #if !wxUSE_PS_PRINTING // Returns default device and port names @@ -386,7 +397,8 @@ void wxPrinterDC::DoDrawBitmap(const wxBitmap& bmp, { // no support for StretchDIBits() or an error occurred if we got here wxMemoryDC memDC; - memDC.SelectObject(bmp); + + memDC.SelectObjectAsSource(bmp); Blit(x, y, width, height, &memDC, 0, 0, wxCOPY, useMask);