#include <stdlib.h>
-#include "wx/msw/private.h"
-
-#include <commdlg.h>
+#include "wx/msw/wrapcdlg.h"
#ifndef __WIN32__
#include <print.h>
// Shouldn't really get here
wxFAIL_MSG(wxT("Couldn't find paper size in paper database."));
data.SetPaperId( wxPAPER_NONE );
- data.SetPaperSize( wxSize() );
+ data.SetPaperSize( wxSize(0,0) );
}
}
else
// Shouldn't really get here
wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative."));
data.SetPaperId( wxPAPER_NONE );
- data.SetPaperSize( wxSize() );
+ data.SetPaperSize( wxSize(0,0) );
}
}
else if ((devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
// Shouldn't really get here
wxFAIL_MSG(wxT("Couldn't find paper size from DEVMODE."));
data.SetPaperId( wxPAPER_NONE );
- data.SetPaperSize( wxSize() );
+ data.SetPaperSize( wxSize(0,0) );
}
//// Duplex
else
data.SetQuality( wxPRINT_QUALITY_HIGH );
+ if (devMode->dmDriverExtra > 0)
+ data.SetPrivData( (char *)devMode+devMode->dmSize, devMode->dmDriverExtra );
+ else
+ data.SetPrivData( NULL, 0 );
+
GlobalUnlock(hDevMode);
}
wxString printerName = (LPTSTR)lpDevNames + lpDevNames->wDeviceOffset;
// Not sure if we should check for this mismatch
-// wxASSERT_MSG( (m_printerName == "" || (devName == m_printerName)), "Printer name obtained from DEVMODE and DEVNAMES were different!");
+// wxASSERT_MSG( (m_printerName.empty() || (devName == m_printerName)), "Printer name obtained from DEVMODE and DEVNAMES were different!");
if (!printerName.empty())
data.SetPrinterName( printerName );
devMode->dmPrintQuality = quality;
devMode->dmFields |= DM_PRINTQUALITY;
+ if (data.GetPrivDataLen() > 0)
+ {
+ memcpy( (char *)devMode+devMode->dmSize, data.GetPrivData(), data.GetPrivDataLen() );
+ devMode->dmDriverExtra = (WXWORD)data.GetPrivDataLen();
+ }
+
if (data.GetBin() != wxPRINTBIN_DEFAULT)
{
switch (data.GetBin())