diff --git a/src/msw/filedlg.cpp b/src/msw/filedlg.cpp
index b3f2a2999b..ed46aa7771 100644
--- a/src/msw/filedlg.cpp
+++ b/src/msw/filedlg.cpp
@@ -126,10 +126,13 @@ wxString wxFileSelector(const wxChar *title,
return wxGetEmptyString();
}
+/*
# if __BORLANDC__
# include
// for MAXPATH etc. ( Borland 3.1 )
# endif
+*/
+/* These numbers are too small.
# ifndef MAXPATH
# define MAXPATH 400
# endif
@@ -145,6 +148,17 @@ wxString wxFileSelector(const wxChar *title,
# ifndef MAXEXT
# define MAXEXT 5
# endif
+*/
+
+#if __WIN32__
+# define wxMAXPATH 4096
+#else
+# define wxMAXPATH 1024
+#endif
+
+# define wxMAXFILE 1024
+
+# define wxMAXEXT 5
wxString wxFileSelectorEx(const wxChar *title,
@@ -206,9 +220,11 @@ int wxFileDialog::ShowModal()
{
HWND hWnd = 0;
if (m_parent) hWnd = (HWND) m_parent->GetHWND();
+ if (!hWnd && wxTheApp->GetTopWindow())
+ hWnd = (HWND) wxTheApp->GetTopWindow()->GetHWND();
- static wxChar fileNameBuffer [ MAXPATH ]; // the file-name
- wxChar titleBuffer [ MAXFILE+1+MAXEXT ]; // the file-name, without path
+ static wxChar fileNameBuffer [ wxMAXPATH ]; // the file-name
+ wxChar titleBuffer [ wxMAXFILE+1+wxMAXEXT ]; // the file-name, without path
*fileNameBuffer = wxT('\0');
*titleBuffer = wxT('\0');
@@ -241,7 +257,7 @@ int wxFileDialog::ShowModal()
of.lpstrFileTitle = titleBuffer;
- of.nMaxFileTitle = MAXFILE + 1 + MAXEXT; // Windows 3.0 and 3.1
+ of.nMaxFileTitle = wxMAXFILE + 1 + wxMAXEXT; // Windows 3.0 and 3.1
// Convert forward slashes to backslashes (file selector doesn't like
// forward slashes)
@@ -298,11 +314,11 @@ int wxFileDialog::ShowModal()
//=== Setting defaultFileName >>=========================================
- wxStrncpy( fileNameBuffer, (const wxChar *)m_fileName, MAXPATH-1 );
- fileNameBuffer[ MAXPATH-1 ] = wxT('\0');
+ wxStrncpy( fileNameBuffer, (const wxChar *)m_fileName, wxMAXPATH-1 );
+ fileNameBuffer[ wxMAXPATH-1 ] = wxT('\0');
of.lpstrFile = fileNameBuffer; // holds returned filename
- of.nMaxFile = MAXPATH;
+ of.nMaxFile = wxMAXPATH;
//== Execute FileDialog >>=================================================
@@ -379,8 +395,8 @@ int wxFileDialog::ShowModal()
m_fileName = wxString(fileNameBuffer) + extension;
int len = wxStrlen( fileNameBuffer );
- wxStrncpy( fileNameBuffer + len, extension, MAXPATH - len );
- fileNameBuffer[ MAXPATH -1 ] = wxT('\0');
+ wxStrncpy( fileNameBuffer + len, extension, wxMAXPATH - len );
+ fileNameBuffer[ wxMAXPATH -1 ] = wxT('\0');
}
}
diff --git a/src/msw/printdlg.cpp b/src/msw/printdlg.cpp
index 08a6b2df3f..7043dde679 100644
--- a/src/msw/printdlg.cpp
+++ b/src/msw/printdlg.cpp
@@ -110,7 +110,18 @@ 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);
@@ -170,7 +181,16 @@ 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;