X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12acbc9bf7c4b486a74293be2eb5c0ebaf4828da..79b7b95aed76eb742deef93d046886c20452fb36:/src/msw/dcprint.cpp?ds=inline diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index a2e365c072..92425e9cf7 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -116,7 +116,10 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, { if ( !driver_name.empty() && !device_name.empty() && !file.empty() ) { - m_hDC = (WXHDC) CreateDC(driver_name, device_name, file, NULL); + m_hDC = (WXHDC) CreateDC(driver_name.wx_str(), + device_name.wx_str(), + file.fn_str(), + NULL); } else // we don't have all parameters, ask the user { @@ -178,14 +181,14 @@ bool wxPrinterDC::StartDoc(const wxString& message) { DOCINFO docinfo; docinfo.cbSize = sizeof(DOCINFO); - docinfo.lpszDocName = (const wxChar*)message; + docinfo.lpszDocName = message.wx_str(); wxString filename(m_printData.GetFilename()); if (filename.empty()) docinfo.lpszOutput = NULL; else - docinfo.lpszOutput = (const wxChar *) filename; + docinfo.lpszOutput = filename.wx_str(); docinfo.lpszDatatype = NULL; docinfo.fwType = 0; @@ -193,15 +196,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 +222,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 @@ -312,7 +326,7 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst) DEVMODE *lpDevMode = hDevMode ? (DEVMODE *)::GlobalLock(hDevMode) : NULL; - HDC hDC = ::CreateDC(NULL, deviceName, NULL, lpDevMode); + HDC hDC = ::CreateDC(NULL, deviceName.wx_str(), NULL, lpDevMode); if ( !hDC ) wxLogLastError(_T("CreateDC(printer)")); @@ -386,7 +400,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);