If possible, i.e. if none of the features not supported by IFileDialog are needed, prefer to use IFileDialog for wxFileDialog rather than the old common dialog functions. There are no real differences in appearance because the old functions actually already forward to the new IFileDialog-based implementation internally anyhow, if possible, but this provides us with more flexibility and some things that were ignored by the common dialog functions now work, such as setting the initial dialog directory.
78 lines
2.7 KiB
C++
78 lines
2.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/filedlg.h
|
|
// Purpose: wxFileDialog class
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_FILEDLG_H_
|
|
#define _WX_FILEDLG_H_
|
|
|
|
//-------------------------------------------------------------------------
|
|
// wxFileDialog
|
|
//-------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxFileDialog: public wxFileDialogBase
|
|
{
|
|
public:
|
|
wxFileDialog(wxWindow *parent,
|
|
const wxString& message = wxASCII_STR(wxFileSelectorPromptStr),
|
|
const wxString& defaultDir = wxEmptyString,
|
|
const wxString& defaultFile = wxEmptyString,
|
|
const wxString& wildCard = wxASCII_STR(wxFileSelectorDefaultWildcardStr),
|
|
long style = wxFD_DEFAULT_STYLE,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& sz = wxDefaultSize,
|
|
const wxString& name = wxASCII_STR(wxFileDialogNameStr));
|
|
|
|
virtual void GetPaths(wxArrayString& paths) const wxOVERRIDE;
|
|
virtual void GetFilenames(wxArrayString& files) const wxOVERRIDE;
|
|
virtual bool SupportsExtraControl() const wxOVERRIDE { return true; }
|
|
void MSWOnInitDialogHook(WXHWND hwnd);
|
|
|
|
virtual int ShowModal() wxOVERRIDE;
|
|
|
|
// wxMSW-specific implementation from now on
|
|
// -----------------------------------------
|
|
|
|
// called from the hook procedure on CDN_INITDONE reception
|
|
virtual void MSWOnInitDone(WXHWND hDlg);
|
|
|
|
// called from the hook procedure on CDN_SELCHANGE.
|
|
void MSWOnSelChange(WXHWND hDlg);
|
|
|
|
// called from the hook procedure on CDN_TYPECHANGE.
|
|
void MSWOnTypeChange(WXHWND hDlg, int nFilterIndex);
|
|
|
|
protected:
|
|
|
|
virtual void DoMoveWindow(int x, int y, int width, int height) wxOVERRIDE;
|
|
virtual void DoCentre(int dir) wxOVERRIDE;
|
|
virtual void DoGetSize( int *width, int *height ) const wxOVERRIDE;
|
|
virtual void DoGetPosition( int *x, int *y ) const wxOVERRIDE;
|
|
|
|
private:
|
|
// The real implementation of ShowModal() using traditional common dialog
|
|
// functions.
|
|
int ShowCommFileDialog(WXHWND owner);
|
|
|
|
// And another one using IFileDialog.
|
|
int ShowIFileDialog(WXHWND owner);
|
|
|
|
|
|
wxArrayString m_fileNames;
|
|
|
|
// remember if our SetPosition() or Centre() (which requires special
|
|
// treatment) was called
|
|
bool m_bMovedWindow;
|
|
int m_centreDir; // nothing to do if 0
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxFileDialog);
|
|
wxDECLARE_NO_COPY_CLASS(wxFileDialog);
|
|
};
|
|
|
|
#endif // _WX_FILEDLG_H_
|
|
|