X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/42e69d6b435a4dd5415caf3750db62cf45b6f373..342751763793b5cdad252d731aac0618d0674e5b:/src/msw/dcprint.cpp diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index 95fe393b28..35c9be54be 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -23,13 +23,14 @@ #ifndef WX_PRECOMP #endif -#include "wx/dcprint.h" +#include "wx/string.h" #include "wx/log.h" -#include "math.h" - +#include "wx/window.h" #include "wx/msw/private.h" +#include "wx/dcprint.h" +#include "math.h" -#if wxUSE_COMMON_DIALOGS +#if wxUSE_COMMON_DIALOGS || defined(__WXWINE__) #include #endif @@ -37,23 +38,21 @@ #include #endif -#if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxPrinterDC, wxDC) -#endif // This form is deprecated wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation) { m_isInteractive = interactive; - - if (!file.IsNull() && file != "") + + if (!file.IsNull() && file != wxT("")) m_printData.SetFilename(file); - + #if wxUSE_COMMON_DIALOGS if (interactive) { PRINTDLG pd; - + pd.lStructSize = sizeof( PRINTDLG ); pd.hwndOwner=(HWND) NULL; pd.hDevMode=(HANDLE)NULL; @@ -65,7 +64,7 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam pd.nMaxPage=0; pd.nCopies=1; pd.hInstance=(HINSTANCE)NULL; - + if ( PrintDlg( &pd ) != 0 ) { m_hDC = (WXHDC) pd.hDC; @@ -76,16 +75,16 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam m_ok = FALSE; return; } - + // m_dontDelete = TRUE; } else #endif - if ((!driver_name.IsNull() && driver_name != "") && - (!device_name.IsNull() && device_name != "") && - (!file.IsNull() && file != "")) + if ((!driver_name.IsNull() && driver_name != wxT("")) && + (!device_name.IsNull() && device_name != wxT("")) && + (!file.IsNull() && file != wxT(""))) { - m_hDC = (WXHDC) CreateDC((char *) (const char *) driver_name, (char *) (const char *) device_name, (char *) (const char *) file, NULL); + m_hDC = (WXHDC) CreateDC(WXSTRINGCAST driver_name, WXSTRINGCAST device_name, WXSTRINGCAST file, NULL); m_ok = m_hDC ? TRUE: FALSE; } else @@ -95,7 +94,7 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam m_hDC = wxGetPrinterDC(printData); m_ok = m_hDC ? TRUE: FALSE; } - + if (m_hDC) { // int width = GetDeviceCaps(m_hDC, VERTRES); @@ -114,10 +113,10 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData) m_hDC = wxGetPrinterDC(printData); m_ok = (m_hDC != 0); - + if (m_hDC) SetMapMode(wxMM_TEXT); - + SetBrush(*wxBLACK_BRUSH); SetPen(*wxBLACK_PEN); } @@ -126,7 +125,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData) wxPrinterDC::wxPrinterDC(WXHDC theDC) { m_isInteractive = FALSE; - + m_hDC = theDC; m_ok = TRUE; if (m_hDC) @@ -147,23 +146,23 @@ bool wxPrinterDC::StartDoc(const wxString& message) { DOCINFO docinfo; docinfo.cbSize = sizeof(DOCINFO); - docinfo.lpszDocName = (const char *)message; + docinfo.lpszDocName = (const wxChar*)message; wxString filename(m_printData.GetFilename()); if (filename.IsEmpty()) docinfo.lpszOutput = NULL; else - docinfo.lpszOutput = (const char *) filename; + docinfo.lpszOutput = (const wxChar *) filename; #if defined(__WIN95__) docinfo.lpszDatatype = NULL; docinfo.fwType = 0; #endif - + if (!m_hDC) return FALSE; - + int ret = #ifndef __WIN32__ ::StartDoc((HDC) m_hDC, &docinfo); @@ -178,15 +177,15 @@ bool wxPrinterDC::StartDoc(const wxString& message) #endif #endif #endif - + #ifndef __WIN16__ if (ret <= 0) { DWORD lastError = GetLastError(); - wxLogDebug("wxDC::StartDoc failed with error: %d\n", lastError); + wxLogDebug(wxT("wxDC::StartDoc failed with error: %d\n"), lastError); } #endif - + return (ret > 0); } @@ -216,7 +215,7 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName) LPSTR lpszDriverName; LPSTR lpszDeviceName; LPSTR lpszPortName; - + PRINTDLG pd; // Cygwin has trouble believing PRINTDLG is 66 bytes - thinks it is 68 @@ -231,37 +230,38 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName) pd.hDevNames = NULL; // Ditto pd.Flags = PD_RETURNDEFAULT; pd.nCopies = 1; - + if (!PrintDlg((LPPRINTDLG)&pd)) { if ( pd.hDevMode ) GlobalFree(pd.hDevMode); if (pd.hDevNames) GlobalFree(pd.hDevNames); - + return FALSE; } - + if (pd.hDevNames) { lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset; lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset; lpszPortName = (LPSTR)lpDevNames + lpDevNames->wOutputOffset; - GlobalUnlock(pd.hDevNames); - GlobalFree(pd.hDevNames); - pd.hDevNames=NULL; deviceName = lpszDeviceName; portName = lpszPortName; + + GlobalUnlock(pd.hDevNames); + GlobalFree(pd.hDevNames); + pd.hDevNames=NULL; } - + if (pd.hDevMode) { GlobalFree(pd.hDevMode); pd.hDevMode=NULL; } - return ( deviceName != "" ); + return ( deviceName != wxT("") ); } #if 0 @@ -275,7 +275,7 @@ WXHDC wxGetPrinterDC(int orientation) LPSTR lpszDriverName; LPSTR lpszDeviceName; LPSTR lpszPortName; - + PRINTDLG pd; // __GNUWIN32__ has trouble believing PRINTDLG is 66 bytes - thinks it is 68 #ifdef __GNUWIN32__ @@ -288,45 +288,45 @@ WXHDC wxGetPrinterDC(int orientation) pd.hDevNames = NULL; // Ditto pd.Flags = PD_RETURNDEFAULT; pd.nCopies = 1; - + if (!PrintDlg((LPPRINTDLG)&pd)) { if ( pd.hDevMode ) GlobalFree(pd.hDevMode); if (pd.hDevNames) GlobalFree(pd.hDevNames); - + return(0); } - + if (!pd.hDevNames) { if ( pd.hDevMode ) GlobalFree(pd.hDevMode); } - + lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset; lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset; lpszPortName = (LPSTR)lpDevNames + lpDevNames->wOutputOffset; GlobalUnlock(pd.hDevNames); - + if ( pd.hDevMode ) { lpDevMode = (DEVMODE*) GlobalLock(pd.hDevMode); lpDevMode->dmOrientation = orientation; lpDevMode->dmFields |= DM_ORIENTATION; } - + #ifdef __WIN32__ hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (DEVMODE *)lpDevMode); #else hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (LPSTR)lpDevMode); #endif - + if (pd.hDevMode && lpDevMode) GlobalUnlock(pd.hDevMode); - + if (pd.hDevNames) { GlobalFree(pd.hDevNames); @@ -346,45 +346,50 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst) { wxPrintData printData = printDataConst; printData.ConvertToNative(); - - char* driverName = (char*) NULL; - + + wxChar* driverName = (wxChar*) NULL; + wxString devNameStr = printData.GetPrinterName(); - char* deviceName; - char* portName = (char*) NULL; // Obsolete in WIN32 - - if (devNameStr == "") - deviceName = (char*) NULL; + wxChar* deviceName; + wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32 + + if (devNameStr == wxT("")) + deviceName = (wxChar*) NULL; else - deviceName = (char*) (const char*) devNameStr; + deviceName = WXSTRINGCAST devNameStr; LPDEVMODE lpDevMode = (LPDEVMODE) NULL; - HGLOBAL hDevMode = (HGLOBAL) printData.GetNativeData(); + HGLOBAL hDevMode = (HGLOBAL)(DWORD) printData.GetNativeData(); if ( hDevMode ) lpDevMode = (DEVMODE*) GlobalLock(hDevMode); - if (devNameStr == "") + if (devNameStr == wxT("")) { // Retrieve the default device name wxString portName; - bool ret = wxGetDefaultDeviceName(devNameStr, portName); +#ifdef __WXDEBUG__ + bool ret = +#else // !Debug + (void) +#endif // Debug/Release + wxGetDefaultDeviceName(devNameStr, portName); - wxASSERT_MSG( ret, "Could not get default device name." ); + wxASSERT_MSG( ret, wxT("Could not get default device name.") ); - deviceName = (char*) (const char*) devNameStr; + deviceName = WXSTRINGCAST devNameStr; } - + #ifdef __WIN32__ HDC hDC = CreateDC(driverName, deviceName, portName, (DEVMODE *) lpDevMode); #else HDC hDC = CreateDC(driverName, deviceName, portName, (LPSTR) lpDevMode); #endif - + if (hDevMode && lpDevMode) GlobalUnlock(hDevMode); - + return (WXHDC) hDC; }