- printerWidth = ::GetDeviceCaps((HDC) printerDC.GetHDC(), HORZSIZE);
- printerHeight = ::GetDeviceCaps((HDC) printerDC.GetHDC(), VERTSIZE);
- printerXRes = ::GetDeviceCaps((HDC) printerDC.GetHDC(), HORZRES);
- printerYRes = ::GetDeviceCaps((HDC) printerDC.GetHDC(), VERTRES);
-
- int logPPIPrinterX = ::GetDeviceCaps((HDC) printerDC.GetHDC(), LOGPIXELSX);
- int logPPIPrinterY = ::GetDeviceCaps((HDC) printerDC.GetHDC(), LOGPIXELSY);
-
- m_previewPrintout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY);
- m_previewPrintout->SetPageSizeMM(printerWidth, printerHeight);
-
- if (logPPIPrinterX == 0 || logPPIPrinterY == 0 || printerWidth == 0 || printerHeight == 0)
- m_isOk = FALSE;
+ wxPrinterDCImpl *impl = (wxPrinterDCImpl*) printerDC.GetImpl();
+ HDC dc = GetHdcOf(*impl);
+ printerWidthMM = ::GetDeviceCaps(dc, HORZSIZE);
+ printerHeightMM = ::GetDeviceCaps(dc, VERTSIZE);
+ printerXRes = ::GetDeviceCaps(dc, HORZRES);
+ printerYRes = ::GetDeviceCaps(dc, VERTRES);
+ logPPIPrinterX = ::GetDeviceCaps(dc, LOGPIXELSX);
+ logPPIPrinterY = ::GetDeviceCaps(dc, LOGPIXELSY);
+
+ paperRect = printerDC.GetPaperRect();
+
+ if ( logPPIPrinterX == 0 ||
+ logPPIPrinterY == 0 ||
+ printerWidthMM == 0 ||
+ printerHeightMM == 0 )
+ {
+ m_isOk = false;
+ }