1. fixes to wxDC deleting logic (should fix ~wxPrinterDC leak), some code
reorganized/removed 2. applied (slightly modified) wxEnhMetaFileSimpleDataObject patch git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -70,68 +70,61 @@ IMPLEMENT_CLASS(wxPrinterDC, wxDC)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This form is deprecated
|
||||
wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation)
|
||||
wxPrinterDC::wxPrinterDC(const wxString& driver_name,
|
||||
const wxString& device_name,
|
||||
const wxString& file,
|
||||
bool interactive,
|
||||
int orientation)
|
||||
{
|
||||
m_isInteractive = interactive;
|
||||
|
||||
if ( !!file )
|
||||
if ( !file.empty() )
|
||||
m_printData.SetFilename(file);
|
||||
|
||||
#if wxUSE_COMMON_DIALOGS
|
||||
if (interactive)
|
||||
if ( interactive )
|
||||
{
|
||||
PRINTDLG pd;
|
||||
|
||||
pd.lStructSize = sizeof( PRINTDLG );
|
||||
pd.hwndOwner=(HWND) NULL;
|
||||
pd.hDevMode=(HANDLE)NULL;
|
||||
pd.hDevNames=(HANDLE)NULL;
|
||||
pd.Flags=PD_RETURNDC | PD_NOSELECTION | PD_NOPAGENUMS;
|
||||
pd.nFromPage=0;
|
||||
pd.nToPage=0;
|
||||
pd.nMinPage=0;
|
||||
pd.nMaxPage=0;
|
||||
pd.nCopies=1;
|
||||
pd.hInstance=(HINSTANCE)NULL;
|
||||
pd.hwndOwner = (HWND) NULL;
|
||||
pd.hDevMode = (HANDLE)NULL;
|
||||
pd.hDevNames = (HANDLE)NULL;
|
||||
pd.Flags = PD_RETURNDC | PD_NOSELECTION | PD_NOPAGENUMS;
|
||||
pd.nFromPage = 0;
|
||||
pd.nToPage = 0;
|
||||
pd.nMinPage = 0;
|
||||
pd.nMaxPage = 0;
|
||||
pd.nCopies = 1;
|
||||
pd.hInstance = (HINSTANCE)NULL;
|
||||
|
||||
if ( PrintDlg( &pd ) != 0 )
|
||||
m_ok = PrintDlg( &pd ) != 0;
|
||||
if ( m_ok )
|
||||
{
|
||||
m_hDC = (WXHDC) pd.hDC;
|
||||
m_ok = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ok = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
// m_dontDelete = TRUE;
|
||||
}
|
||||
else
|
||||
#endif // wxUSE_COMMON_DIALOGS
|
||||
if ((!driver_name.IsNull() && driver_name != wxT("")) &&
|
||||
(!device_name.IsNull() && device_name != wxT("")) &&
|
||||
(!file.IsNull() && file != wxT("")))
|
||||
{
|
||||
if ( !driver_name.empty() && !device_name.empty() && !file.empty() )
|
||||
{
|
||||
m_hDC = (WXHDC) CreateDC(WXSTRINGCAST driver_name, WXSTRINGCAST device_name, WXSTRINGCAST file, NULL);
|
||||
m_ok = m_hDC ? TRUE: FALSE;
|
||||
m_hDC = (WXHDC) CreateDC(driver_name, device_name, file, NULL);
|
||||
}
|
||||
else
|
||||
else // we don't have all parameters, ask the user
|
||||
{
|
||||
wxPrintData printData;
|
||||
printData.SetOrientation(orientation);
|
||||
m_hDC = wxGetPrinterDC(printData);
|
||||
m_ok = m_hDC ? TRUE: FALSE;
|
||||
}
|
||||
|
||||
if (m_hDC)
|
||||
{
|
||||
// int width = GetDeviceCaps(m_hDC, VERTRES);
|
||||
// int height = GetDeviceCaps(m_hDC, HORZRES);
|
||||
SetMapMode(wxMM_TEXT);
|
||||
}
|
||||
SetBrush(*wxBLACK_BRUSH);
|
||||
SetPen(*wxBLACK_PEN);
|
||||
m_ok = m_hDC ? TRUE: FALSE;
|
||||
|
||||
// as we created it, we must delete it as well
|
||||
m_bOwnsDC = TRUE;
|
||||
}
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
|
||||
@@ -141,34 +134,33 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
|
||||
m_isInteractive = FALSE;
|
||||
|
||||
m_hDC = wxGetPrinterDC(printData);
|
||||
m_ok = (m_hDC != 0);
|
||||
m_ok = m_hDC != 0;
|
||||
m_bOwnsDC = TRUE;
|
||||
|
||||
if (m_hDC)
|
||||
SetMapMode(wxMM_TEXT);
|
||||
|
||||
SetBrush(*wxBLACK_BRUSH);
|
||||
SetPen(*wxBLACK_PEN);
|
||||
Init();
|
||||
}
|
||||
|
||||
|
||||
wxPrinterDC::wxPrinterDC(WXHDC theDC)
|
||||
wxPrinterDC::wxPrinterDC(WXHDC dc)
|
||||
{
|
||||
m_isInteractive = FALSE;
|
||||
|
||||
m_hDC = theDC;
|
||||
m_hDC = dc;
|
||||
m_bOwnsDC = TRUE;
|
||||
m_ok = TRUE;
|
||||
if (m_hDC)
|
||||
}
|
||||
|
||||
void wxPrinterDC::Init()
|
||||
{
|
||||
if ( m_hDC )
|
||||
{
|
||||
// int width = GetDeviceCaps(m_hDC, VERTRES);
|
||||
// int height = GetDeviceCaps(m_hDC, HORZRES);
|
||||
SetMapMode(wxMM_TEXT);
|
||||
}
|
||||
SetBrush(*wxBLACK_BRUSH);
|
||||
SetPen(*wxBLACK_PEN);
|
||||
}
|
||||
|
||||
wxPrinterDC::~wxPrinterDC()
|
||||
{
|
||||
SetBrush(*wxBLACK_BRUSH);
|
||||
SetPen(*wxBLACK_PEN);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -229,7 +221,7 @@ void wxPrinterDC::EndPage()
|
||||
// Returns default device and port names
|
||||
static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
|
||||
{
|
||||
deviceName = "";
|
||||
deviceName.clear();
|
||||
|
||||
LPDEVNAMES lpDevNames;
|
||||
LPSTR lpszDriverName;
|
||||
@@ -359,7 +351,7 @@ WXHDC wxGetPrinterDC(int orientation)
|
||||
}
|
||||
return (WXHDC) hDC;
|
||||
}
|
||||
#endif
|
||||
#endif // 0
|
||||
|
||||
// Gets an HDC for the specified printer configuration
|
||||
WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
|
||||
|
Reference in New Issue
Block a user