X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8826f46f0d755eba7996920da2aee45946bc6144..ec5d85fbd58bf6ef774e3d93b9e38d9f90b42d40:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 14f157d3fe..e686815845 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 = _T("Unknown"); + switch (err) + { + case CDERR_FINDRESFAILURE: msg = _T("CDERR_FINDRESFAILURE"); break; + case CDERR_INITIALIZATION: msg = _T("CDERR_INITIALIZATION"); break; + case CDERR_LOADRESFAILURE: msg = _T("CDERR_LOADRESFAILURE"); break; + case CDERR_LOADSTRFAILURE: msg = _T("CDERR_LOADSTRFAILURE"); break; + case CDERR_LOCKRESFAILURE: msg = _T("CDERR_LOCKRESFAILURE"); break; + case CDERR_MEMALLOCFAILURE: msg = _T("CDERR_MEMALLOCFAILURE"); break; + case CDERR_MEMLOCKFAILURE: msg = _T("CDERR_MEMLOCKFAILURE"); break; + case CDERR_NOHINSTANCE: msg = _T("CDERR_NOHINSTANCE"); break; + case CDERR_NOHOOK: msg = _T("CDERR_NOHOOK"); break; + case CDERR_NOTEMPLATE: msg = _T("CDERR_NOTEMPLATE"); break; + case CDERR_STRUCTSIZE: msg = _T("CDERR_STRUCTSIZE"); break; + case PDERR_RETDEFFAILURE: msg = _T("PDERR_RETDEFFAILURE"); break; + case PDERR_PRINTERNOTFOUND: msg = _T("PDERR_PRINTERNOTFOUND"); break; + case PDERR_PARSEFAILURE: msg = _T("PDERR_PARSEFAILURE"); break; + case PDERR_NODEVICES: msg = _T("PDERR_NODEVICES"); break; + case PDERR_NODEFAULTPRN: msg = _T("PDERR_NODEFAULTPRN"); break; + case PDERR_LOADDRVFAILURE: msg = _T("PDERR_LOADDRVFAILURE"); break; + case PDERR_INITFAILURE: msg = _T("PDERR_INITFAILURE"); break; + case PDERR_GETDEVMODEFAIL: msg = _T("PDERR_GETDEVMODEFAIL"); break; + case PDERR_DNDMMISMATCH: msg = _T("PDERR_DNDMMISMATCH"); break; + case PDERR_DEFAULTDIFFERENT: msg = _T("PDERR_DEFAULTDIFFERENT"); break; + case PDERR_CREATEICFAILURE: msg = _T("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(_T("Printing error: ")); + str += wxGetPrintDlgError(); + wxLogDebug(str); +#endif } else { @@ -288,7 +328,7 @@ void wxPrintData::ConvertToNative() //// Printer name - if (m_printerName != "") + if (m_printerName != _T("")) { // TODO: make this Unicode compatible int len = wxMin(31, m_printerName.Len()); @@ -454,7 +494,7 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Couldn't find paper size in paper database."); + wxFAIL_MSG(_T("Couldn't find paper size in paper database.")); m_paperId = wxPAPER_NONE; m_paperSize.x = 0; @@ -464,7 +504,7 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Paper database wasn't initialized in wxPrintData::ConvertFromNative."); + wxFAIL_MSG(_T("Paper database wasn't initialized in wxPrintData::ConvertFromNative.")); m_paperId = wxPAPER_NONE; m_paperSize.x = 0; @@ -480,7 +520,7 @@ void wxPrintData::ConvertFromNative() else { // Shouldn't really get here - wxFAIL_MSG("Couldn't find paper size from DEVMODE."); + wxFAIL_MSG(_T("Couldn't find paper size from DEVMODE.")); m_paperSize.x = 0; m_paperSize.y = 0; @@ -697,7 +737,7 @@ void wxPrintDialogData::ConvertToNative() m_printData.SetNativeData((void*) NULL); - wxASSERT_MSG( (pd->hDevMode), "hDevMode must be non-NULL in ConvertToNative!"); + wxASSERT_MSG( (pd->hDevMode), _T("hDevMode must be non-NULL in ConvertToNative!")); pd->hDC = (HDC) NULL; pd->nFromPage = (UINT)m_printFromPage; @@ -956,7 +996,7 @@ void wxPageSetupDialogData::ConvertToNative() m_printData.SetNativeData((void*) NULL); - wxASSERT_MSG( (pd->hDevMode), "hDevMode must be non-NULL in ConvertToNative!"); + wxASSERT_MSG( (pd->hDevMode), _T("hDevMode must be non-NULL in ConvertToNative!")); // pd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, sizeof(DEVMODE)); @@ -1096,8 +1136,8 @@ void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) void wxPageSetupDialogData::CalculateIdFromPaperSize() { wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), - "wxThePrintPaperDatabase should not be NULL. " - "Do not create global print dialog data objects." ); + _T("wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects.") ); wxSize sz = GetPaperSize(); @@ -1112,8 +1152,8 @@ void wxPageSetupDialogData::CalculateIdFromPaperSize() void wxPageSetupDialogData::CalculatePaperSizeFromId() { wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), - "wxThePrintPaperDatabase should not be NULL. " - "Do not create global print dialog data objects." ); + _T("wxThePrintPaperDatabase should not be NULL. " + "Do not create global print dialog data objects.") ); wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId());