X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7bcb11d30764df47144189e164f53d8171ed4a63..c3d15542d6047f49f493dbd5559fab99c06a336e:/src/msw/printdlg.cpp diff --git a/src/msw/printdlg.cpp b/src/msw/printdlg.cpp index 2d0eb79e6c..712b0d374a 100644 --- a/src/msw/printdlg.cpp +++ b/src/msw/printdlg.cpp @@ -6,21 +6,32 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// =========================================================================== +// declarations +// =========================================================================== + +// --------------------------------------------------------------------------- +// headers +// --------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "printdlg.h" + #pragma implementation "printdlg.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif +#if wxUSE_PRINTING_ARCHITECTURE + #ifndef WX_PRECOMP + #include "wx/app.h" #endif #include "wx/printdlg.h" @@ -28,41 +39,55 @@ // Have to emulate page setup dialog for Win16 #if !defined(__WIN95__) -#include "wx/generic/prntdlgg.h" + #include "wx/generic/prntdlgg.h" #endif #include -#include + +#include "wx/msw/private.h" + #include #ifndef __WIN32__ -#include + #include #endif -// Clash with Windows header files -#ifdef StartDoc -#undef StartDoc -#endif +// --------------------------------------------------------------------------- +// wxWin macros +// --------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif + IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) + IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) + +// =========================================================================== +// implementation +// =========================================================================== + +// --------------------------------------------------------------------------- +// wxPrintDialog +// --------------------------------------------------------------------------- -wxPrintDialog::wxPrintDialog(void): -wxDialog() +wxPrintDialog::wxPrintDialog() { m_dialogParent = NULL; m_printerDC = NULL; m_destroyDC = TRUE; } -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data): -wxDialog() +wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data) { Create(p, data); } +wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data) +{ + wxPrintDialogData data2; + if ( data ) + data2 = *data; + + Create(p, &data2); +} + bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data) { m_dialogParent = p; @@ -71,23 +96,34 @@ bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data) if ( data ) m_printDialogData = *data; - + m_printDialogData.SetOwnerWindow(p); return TRUE; } -wxPrintDialog::~wxPrintDialog(void) +wxPrintDialog::~wxPrintDialog() { if (m_destroyDC && m_printerDC) delete m_printerDC; } -int wxPrintDialog::ShowModal(void) +int wxPrintDialog::ShowModal() { m_printDialogData.ConvertToNative(); - - bool ret = (PrintDlg( (PRINTDLG *)m_printDialogData.GetNativeData() ) != 0); + + PRINTDLG* p = (PRINTDLG *)m_printDialogData.GetNativeData() ; + if (m_dialogParent) + p->hwndOwner = (HWND) m_dialogParent->GetHWND(); + else if (wxTheApp->GetTopWindow()) + p->hwndOwner = (HWND) wxTheApp->GetTopWindow()->GetHWND(); + else + p->hwndOwner = 0; + + bool ret = (PrintDlg( p ) != 0); + + p->hwndOwner = 0; + if ( ret != FALSE && ((PRINTDLG *)m_printDialogData.GetNativeData())->hDC) { wxPrinterDC *pdc = new wxPrinterDC((WXHDC) ((PRINTDLG *)m_printDialogData.GetNativeData())->hDC); @@ -97,17 +133,11 @@ int wxPrintDialog::ShowModal(void) } else { - /* - char buf[256]; - DWORD exError = CommDlgExtendedError(); - sprintf(buf, "ret = %d, ex error = %d", (int) ret, (int) exError); - wxMessageBox(buf); - */ return wxID_CANCEL; } } -wxDC *wxPrintDialog::GetPrintDC(void) +wxDC *wxPrintDialog::GetPrintDC() { if (m_printerDC) { @@ -118,18 +148,16 @@ wxDC *wxPrintDialog::GetPrintDC(void) return (wxDC*) NULL; } -/* -* wxPageSetupDialog -*/ +// --------------------------------------------------------------------------- +// wxPageSetupDialog +// --------------------------------------------------------------------------- -wxPageSetupDialog::wxPageSetupDialog(void): -wxDialog() +wxPageSetupDialog::wxPageSetupDialog() { m_dialogParent = NULL; } -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): -wxDialog() +wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data) { Create(p, data); } @@ -137,25 +165,34 @@ wxDialog() bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) { m_dialogParent = p; - + if (data) m_pageSetupData = (*data); - + #if defined(__WIN95__) m_pageSetupData.SetOwnerWindow(p); #endif return TRUE; } -wxPageSetupDialog::~wxPageSetupDialog(void) +wxPageSetupDialog::~wxPageSetupDialog() { } -int wxPageSetupDialog::ShowModal(void) +int wxPageSetupDialog::ShowModal() { #ifdef __WIN95__ m_pageSetupData.ConvertToNative(); - if (PageSetupDlg( (PAGESETUPDLG *)m_pageSetupData.GetNativeData() )) + PAGESETUPDLG *p = (PAGESETUPDLG *)m_pageSetupData.GetNativeData(); + if (m_dialogParent) + p->hwndOwner = (HWND) m_dialogParent->GetHWND(); + else if (wxTheApp->GetTopWindow()) + p->hwndOwner = (HWND) wxTheApp->GetTopWindow()->GetHWND(); + else + p->hwndOwner = 0; + BOOL retVal = PageSetupDlg( p ) ; + p->hwndOwner = 0; + if (retVal) { m_pageSetupData.ConvertFromNative(); return wxID_OK; @@ -171,3 +208,5 @@ int wxPageSetupDialog::ShowModal(void) #endif } +#endif + // wxUSE_PRINTING_ARCHITECTURE