X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6776a0b25c1122df4e2a29655ed9de2fcde1735f..7b9da2077d0975db6c965a85c91d5aca671ab5e3:/src/msw/dcprint.cpp diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index 96a461eaaf..4344e59772 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 "wx/window.h" +#include "wx/msw/private.h" +#include "wx/dcprint.h" #include "math.h" -#include - -#if wxUSE_COMMON_DIALOGS +#if wxUSE_COMMON_DIALOGS || defined(__WXWINE__) #include #endif @@ -37,18 +38,6 @@ #include #endif -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - #if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxPrinterDC, wxDC) #endif @@ -57,15 +46,15 @@ IMPLEMENT_CLASS(wxPrinterDC, wxDC) 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; @@ -77,7 +66,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; @@ -88,16 +77,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 @@ -107,7 +96,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); @@ -126,10 +115,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); } @@ -138,7 +127,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData) wxPrinterDC::wxPrinterDC(WXHDC theDC) { m_isInteractive = FALSE; - + m_hDC = theDC; m_ok = TRUE; if (m_hDC) @@ -159,23 +148,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); @@ -190,15 +179,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); } @@ -228,7 +217,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 @@ -243,17 +232,17 @@ 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); @@ -267,13 +256,13 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName) deviceName = lpszDeviceName; portName = lpszPortName; } - + if (pd.hDevMode) { GlobalFree(pd.hDevMode); pd.hDevMode=NULL; } - return ( deviceName != "" ); + return ( deviceName != wxT("") ); } #if 0 @@ -287,7 +276,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__ @@ -300,45 +289,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); @@ -358,45 +347,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; }