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:
Vadim Zeitlin
2001-04-09 01:22:48 +00:00
parent 4658c44ec2
commit 7ba4fbebbc
21 changed files with 436 additions and 301 deletions

View File

@@ -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)