]> git.saurik.com Git - wxWidgets.git/blame - src/msw/printdlg.cpp
Various small fixes
[wxWidgets.git] / src / msw / printdlg.cpp
CommitLineData
2bda0e17
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: printdlg.cpp
3// Purpose: wxPrintDialog, wxPageSetupDialog
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart and Markus Holzem
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "printdlg.h"
14#endif
15
16// For compilers that support precompilation, includes "wx.h".
2bda0e17
KB
17#include "wx/wxprec.h"
18
a3b46648 19#ifdef __BORLANDC__
2bda0e17
KB
20#pragma hdrstop
21#endif
22
23#ifndef WX_PRECOMP
24#endif
25
26#include "wx/printdlg.h"
27#include "wx/dcprint.h"
28
29// Have to emulate page setup dialog for Win16
30#if !defined(__WIN95__)
31#include "wx/generic/prntdlgg.h"
32#endif
33
34#include <stdlib.h>
35#include <windows.h>
36#include <commdlg.h>
37
38#ifndef __WIN32__
39#include <print.h>
40#endif
41
42// Clash with Windows header files
43#ifdef StartDoc
44#undef StartDoc
45#endif
46
47#if !USE_SHARED_LIBRARY
48IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
49IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
50#endif
51
52wxPrintDialog::wxPrintDialog(void):
53 wxDialog()
54{
55 dialogParent = NULL;
56 printerDC = NULL;
57 destroyDC = TRUE;
58 deviceName = NULL;
59 driverName = NULL;
60 portName = NULL;
61}
62
63wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data):
64 wxDialog()
65{
66 Create(p, data);
67}
68
69bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data)
70{
71 dialogParent = p;
72 printerDC = NULL;
73 destroyDC = TRUE;
74 deviceName = NULL;
75 driverName = NULL;
76 portName = NULL;
77
78 if ( data )
79 printData = *data;
80
2049ba38 81#ifdef __WXMSW__
2bda0e17
KB
82 printData.SetOwnerWindow(p);
83#endif
84
85 return TRUE;
86}
87
88wxPrintDialog::~wxPrintDialog(void)
89{
90 if (destroyDC && printerDC)
91 delete printerDC;
92 if (deviceName) delete[] deviceName;
93 if (driverName) delete[] driverName;
94 if (portName) delete[] portName;
95}
96
97int wxPrintDialog::ShowModal(void)
98{
99 printData.ConvertToNative();
100
101 bool ret = (PrintDlg( (PRINTDLG *)printData.printData ) != 0);
102 if ( ret != FALSE && ((PRINTDLG *)printData.printData)->hDC)
103 {
104 wxPrinterDC *pdc = new wxPrinterDC((WXHDC) ((PRINTDLG *)printData.printData)->hDC);
105 printerDC = pdc;
106 printData.ConvertFromNative();
107 return wxID_OK;
108 }
109 else
110 {
111/*
112 char buf[256];
113 DWORD exError = CommDlgExtendedError();
114 sprintf(buf, "ret = %d, ex error = %d", (int) ret, (int) exError);
115 wxMessageBox(buf);
116*/
117 return wxID_CANCEL;
118 }
119}
120
121wxDC *wxPrintDialog::GetPrintDC(void)
122{
123 if (printerDC)
124 {
125 destroyDC = FALSE;
126 return printerDC;
127 }
128 else
129 return NULL;
130}
131
132/*
133 * wxPageSetupDialog
134 */
135
136wxPageSetupDialog::wxPageSetupDialog(void):
137 wxDialog()
138{
139 m_dialogParent = NULL;
140}
141
142wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data):
143 wxDialog()
144{
145 Create(p, data);
146}
147
148bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data)
149{
150 m_dialogParent = p;
151
152 if (data)
153 m_pageSetupData = (*data);
154
155#if defined(__WIN95__)
156 m_pageSetupData.SetOwnerWindow(p);
157#endif
158 return TRUE;
159}
160
161wxPageSetupDialog::~wxPageSetupDialog(void)
162{
163}
164
165int wxPageSetupDialog::ShowModal(void)
166{
167#ifdef __WIN95__
168 m_pageSetupData.ConvertToNative();
169 if (PageSetupDlg( (PAGESETUPDLG *)m_pageSetupData.GetNativeData() ))
170 {
171 m_pageSetupData.ConvertFromNative();
172 return wxID_OK;
173 }
174 else
175 return wxID_CANCEL;
176#else
177 wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData);
178 int ret = genericPageSetupDialog->ShowModal();
179 m_pageSetupData = genericPageSetupDialog->GetPageSetupData();
180 genericPageSetupDialog->Close(TRUE);
181 return ret;
182#endif
183}
184