X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8826f46f0d755eba7996920da2aee45946bc6144..b59ff3c9c8d59c2c4e0291b964d349c9df839894:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 14f157d3fe..872e8e4b6e 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -51,6 +51,7 @@ #ifdef __WXMSW__ #include + #include #if !defined(__WIN32__) #include @@ -197,26 +198,58 @@ wxPrintData::wxPrintData() wxPrintData::wxPrintData(const wxPrintData& printData) { +#ifdef __WXMSW__ + m_devMode = NULL; +#endif + (*this) = printData; } wxPrintData::~wxPrintData() { #ifdef __WXMSW__ - HGLOBAL hDevMode = (HGLOBAL) hDevMode; + HGLOBAL hDevMode = (HGLOBAL) m_devMode; if (hDevMode ) GlobalFree(hDevMode); - /* - PRINTDLG *pd = (PRINTDLG *) m_printData; - if ( pd && pd->hDevMode ) - GlobalFree(pd->hDevMode); - if ( pd ) - delete pd; - */ #endif } -#ifdef __WXMSW__ +#if defined(__WXMSW__) && defined(__WIN32__) + +static wxString wxGetPrintDlgError() +{ + DWORD err = CommDlgExtendedError(); + wxString msg = "Unknown"; + switch (err) + { + case CDERR_FINDRESFAILURE: msg = "CDERR_FINDRESFAILURE"; break; + case CDERR_INITIALIZATION: msg = "CDERR_INITIALIZATION"; break; + case CDERR_LOADRESFAILURE: msg = "CDERR_LOADRESFAILURE"; break; + case CDERR_LOADSTRFAILURE: msg = "CDERR_LOADSTRFAILURE"; break; + case CDERR_LOCKRESFAILURE: msg = "CDERR_LOCKRESFAILURE"; break; + case CDERR_MEMALLOCFAILURE: msg = "CDERR_MEMALLOCFAILURE"; break; + case CDERR_MEMLOCKFAILURE: msg = "CDERR_MEMLOCKFAILURE"; break; + case CDERR_NOHINSTANCE: msg = "CDERR_NOHINSTANCE"; break; + case CDERR_NOHOOK: msg = "CDERR_NOHOOK"; break; + case CDERR_NOTEMPLATE: msg = "CDERR_NOTEMPLATE"; break; + case CDERR_STRUCTSIZE: msg = "CDERR_STRUCTSIZE"; break; + case PDERR_RETDEFFAILURE: msg = "PDERR_RETDEFFAILURE"; break; + case PDERR_PRINTERNOTFOUND: msg = "PDERR_PRINTERNOTFOUND"; break; + case PDERR_PARSEFAILURE: msg = "PDERR_PARSEFAILURE"; break; + case PDERR_NODEVICES: msg = "PDERR_NODEVICES"; break; + case PDERR_NODEFAULTPRN: msg = "PDERR_NODEFAULTPRN"; break; + case PDERR_LOADDRVFAILURE: msg = "PDERR_LOADDRVFAILURE"; break; + case PDERR_INITFAILURE: msg = "PDERR_INITFAILURE"; break; + case PDERR_GETDEVMODEFAIL: msg = "PDERR_GETDEVMODEFAIL"; break; + case PDERR_DNDMMISMATCH: msg = "PDERR_DNDMMISMATCH"; break; + case PDERR_DEFAULTDIFFERENT: msg = "PDERR_DEFAULTDIFFERENT"; break; + case PDERR_CREATEICFAILURE: msg = "PDERR_CREATEICFAILURE"; break; + default: break; + } + return msg; +} + + void wxPrintData::ConvertToNative() { @@ -228,16 +261,17 @@ void wxPrintData::ConvertToNative() // GNU-WIN32 has the wrong size PRINTDLG - can't work out why. #ifdef __GNUWIN32__ + memset(pd, 0, 66); pd->lStructSize = 66 ; - memset(pd, 0, sizeof(PRINTDLG)); #else - pd->lStructSize = sizeof(PRINTDLG); memset(pd, 0, sizeof(PRINTDLG)); + pd->lStructSize = sizeof(PRINTDLG); #endif pd->hwndOwner = (HWND)NULL; pd->hDevMode = NULL; // Will be created by PrintDlg pd->hDevNames = NULL; // Ditto + pd->hInstance = (HINSTANCE) wxGetInstance(); pd->Flags = PD_RETURNDEFAULT; pd->nCopies = 1; @@ -252,6 +286,12 @@ void wxPrintData::ConvertToNative() GlobalFree(pd->hDevNames); pd->hDevMode = NULL; pd->hDevNames = NULL; + +#if defined(__WXDEBUG__) && defined(__WIN32__) + wxString str("Printing error: "); + str += wxGetPrintDlgError(); + wxLogDebug(str); +#endif } else {