NT4/public/sdk/inc/mfc40/afxdlgs.h
2020-09-30 17:12:29 +02:00

644 lines
18 KiB
C++

// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#ifndef __AFXDLGS_H__
#define __AFXDLGS_H__
#ifndef __AFXWIN_H__
#include <afxwin.h>
#endif
#ifndef _INC_COMMDLG
#include <commdlg.h> // common dialog APIs
#endif
// Avoid mapping GetFileTitle to GetFileTitle[A/W]
#ifdef GetFileTitle
#undef GetFileTitle
inline short APIENTRY GetFileTitle(LPCTSTR lpszFile, LPTSTR lpszTitle, WORD cbBuf)
#ifdef UNICODE
{ return ::GetFileTitleW(lpszFile, lpszTitle, cbBuf); }
#else
{ return ::GetFileTitleA(lpszFile, lpszTitle, cbBuf); }
#endif
#endif
#ifndef _AFX_NO_RICHEDIT_SUPPORT
#ifndef _RICHEDIT_
#include <richedit.h>
#endif
#endif
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, off)
#endif
#ifndef _AFX_FULLTYPEINFO
#pragma component(mintypeinfo, on)
#endif
#ifndef _AFX_NOFORCE_LIBS
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
// Win32 libraries
#else //!_MAC
/////////////////////////////////////////////////////////////////////////////
// Mac libraries
#endif //_MAC
#endif //!_AFX_NOFORCE_LIBS
/////////////////////////////////////////////////////////////////////////////
#ifdef _AFX_PACKING
#pragma pack(push, _AFX_PACKING)
#endif
/////////////////////////////////////////////////////////////////////////////
// AFXDLGS - MFC Standard dialogs
// Classes declared in this file
// CDialog
class CCommonDialog; // implementation base class
// modeless dialogs
class CFindReplaceDialog; // Find/FindReplace dialog
// modal dialogs
class CFileDialog; // FileOpen/FileSaveAs dialogs
class CColorDialog; // Color picker dialog
class CFontDialog; // Font chooser dialog
class CPrintDialog; // Print/PrintSetup dialogs
class CPageSetupDialog; // Page Setup dialog
// CWnd
class CPropertySheet; // implements tabbed dialogs
// CDialog
class CPropertyPage; // Used with CPropertySheet for tabbed dialogs
/////////////////////////////////////////////////////////////////////////////
#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
/////////////////////////////////////////////////////////////////////////////
// CCommonDialog - base class for all common dialogs
class CCommonDialog : public CDialog
{
public:
CCommonDialog(CWnd* pParentWnd);
// Implementation
protected:
virtual void OnOK();
virtual void OnCancel();
};
/////////////////////////////////////////////////////////////////////////////
// CFileDialog - used for FileOpen... or FileSaveAs...
class CFileDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CFileDialog)
public:
// Attributes
OPENFILENAME m_ofn; // open file parameter block
// Constructors
CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
// Operations
virtual int DoModal();
// Helpers for parsing file name after successful return
// or during Overridable callbacks if OFN_EXPLORER is set
CString GetPathName() const; // return full path and filename
CString GetFileName() const; // return only filename
CString GetFileExt() const; // return only ext
CString GetFileTitle() const; // return file title
BOOL GetReadOnlyPref() const; // return TRUE if readonly checked
// Enumerating multiple file selections
POSITION GetStartPosition() const;
CString GetNextPathName(POSITION& pos) const;
// Helpers for custom templates
void SetTemplate(UINT nWin3ID, UINT nWin4ID);
void SetTemplate(LPCTSTR lpWin3ID, LPCTSTR lpWin4ID);
#ifndef _MAC
// Other operations available while the dialog is visible
CString GetFolderPath() const; // return full path
void SetControlText(int nID, LPCSTR lpsz);
void HideControl(int nID);
void SetDefExt(LPCSTR lpsz);
#endif
// Overridable callbacks
protected:
friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
virtual BOOL OnFileNameOK();
virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
// only called back if OFN_EXPLORER is set
virtual void OnInitDone();
virtual void OnFileNameChange();
virtual void OnFolderChange();
virtual void OnTypeChange();
// Implementation
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
CString m_strFilter; // filter string
// separate fields with '|', terminate with '||\0'
TCHAR m_szFileTitle[64]; // contains file title after return
TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
OPENFILENAME* m_pofnTemp;
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
};
/////////////////////////////////////////////////////////////////////////////
// CFontDialog - used to select a font
class CFontDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CFontDialog)
public:
// Attributes
// font choosing parameter block
CHOOSEFONT m_cf;
// Constructors
CFontDialog(LPLOGFONT lplfInitial = NULL,
DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
#ifndef _AFX_NO_RICHEDIT_SUPPORT
CFontDialog(const CHARFORMAT& charformat,
DWORD dwFlags = CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
#endif
// Operations
virtual int DoModal();
// Get the selected font (works during DoModal displayed or after)
void GetCurrentFont(LPLOGFONT lplf);
// Helpers for parsing information after successful return
CString GetFaceName() const; // return the face name of the font
CString GetStyleName() const; // return the style name of the font
int GetSize() const; // return the pt size of the font
COLORREF GetColor() const; // return the color of the font
int GetWeight() const; // return the chosen font weight
BOOL IsStrikeOut() const; // return TRUE if strikeout
BOOL IsUnderline() const; // return TRUE if underline
BOOL IsBold() const; // return TRUE if bold font
BOOL IsItalic() const; // return TRUE if italic font
#ifndef _AFX_NO_RICHEDIT_SUPPORT
void GetCharFormat(CHARFORMAT& cf) const;
#endif
// Implementation
LOGFONT m_lf; // default LOGFONT to store the info
#ifndef _AFX_NO_RICHEDIT_SUPPORT
DWORD FillInLogFont(const CHARFORMAT& cf);
#endif
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
TCHAR m_szStyleName[64]; // contains style name after return
};
/////////////////////////////////////////////////////////////////////////////
// CColorDialog - used to select a color
class CColorDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CColorDialog)
public:
// Attributes
// color chooser parameter block
CHOOSECOLOR m_cc;
// Constructors
CColorDialog(COLORREF clrInit = 0, DWORD dwFlags = 0,
CWnd* pParentWnd = NULL);
// Operations
virtual int DoModal();
// Set the current color while dialog is displayed
void SetCurrentColor(COLORREF clr);
// Helpers for parsing information after successful return
COLORREF GetColor() const;
static COLORREF* PASCAL GetSavedCustomColors();
// Overridable callbacks
protected:
friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
virtual BOOL OnColorOK(); // validate color
// Implementation
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//{{AFX_MSG(CColorDialog)
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// for backward compatibility clrSavedCustom is defined as GetSavedCustomColors
#define clrSavedCustom GetSavedCustomColors()
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
// Page Setup dialog
class CPageSetupDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CPageSetupDialog)
public:
// Attributes
PAGESETUPDLG m_psd;
// Constructors
CPageSetupDialog(DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
CWnd* pParentWnd = NULL);
// Attributes
LPDEVMODE GetDevMode() const; // return DEVMODE
CString GetDriverName() const; // return driver name
CString GetDeviceName() const; // return device name
CString GetPortName() const; // return output port name
HDC CreatePrinterDC();
CSize GetPaperSize() const;
void GetMargins(LPRECT lpRectMargins, LPRECT lpRectMinMargins) const;
// Operations
virtual int DoModal();
// Overridables
virtual UINT PreDrawPage(WORD wPaper, WORD wFlags, LPPAGESETUPDLG pPSD);
virtual UINT OnDrawPage(CDC* pDC, UINT nMessage, LPRECT lpRect);
// Implementation
protected:
static UINT CALLBACK PaintHookProc(HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam);
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
};
#endif //!_MAC
/////////////////////////////////////////////////////////////////////////////
// CPrintDialog - used for Print... and PrintSetup...
class CPrintDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CPrintDialog)
public:
// Attributes
// print dialog parameter block (note this is a reference)
PRINTDLG& m_pd;
// Constructors
CPrintDialog(BOOL bPrintSetupOnly,
// TRUE for Print Setup, FALSE for Print Dialog
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
| PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL);
// Operations
virtual int DoModal();
// GetDefaults will not display a dialog but will get
// device defaults
BOOL GetDefaults();
// Helpers for parsing information after successful return
int GetCopies() const; // num. copies requested
BOOL PrintCollate() const; // TRUE if collate checked
BOOL PrintSelection() const; // TRUE if printing selection
BOOL PrintAll() const; // TRUE if printing all pages
BOOL PrintRange() const; // TRUE if printing page range
int GetFromPage() const; // starting page if valid
int GetToPage() const; // starting page if valid
LPDEVMODE GetDevMode() const; // return DEVMODE
CString GetDriverName() const; // return driver name
CString GetDeviceName() const; // return device name
CString GetPortName() const; // return output port name
HDC GetPrinterDC() const; // return HDC (caller must delete)
// This helper creates a DC based on the DEVNAMES and DEVMODE structures.
// This DC is returned, but also stored in m_pd.hDC as though it had been
// returned by CommDlg. It is assumed that any previously obtained DC
// has been/will be deleted by the user. This may be
// used without ever invoking the print/print setup dialogs.
HDC CreatePrinterDC();
// Implementation
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
private:
PRINTDLG m_pdActual; // the Print/Print Setup need to share this
protected:
// The following handle the case of print setup... from the print dialog
CPrintDialog(PRINTDLG& pdInit);
virtual CPrintDialog* AttachOnSetup();
//{{AFX_MSG(CPrintDialog)
afx_msg void OnPrintSetup();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// Find/FindReplace modeless dialogs
class CFindReplaceDialog : public CCommonDialog
{
DECLARE_DYNAMIC(CFindReplaceDialog)
public:
// Attributes
FINDREPLACE m_fr;
// Constructors
CFindReplaceDialog();
// Note: you must allocate these on the heap.
// If you do not, you must derive and override PostNcDestroy()
BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplace
LPCTSTR lpszFindWhat,
LPCTSTR lpszReplaceWith = NULL,
DWORD dwFlags = FR_DOWN,
CWnd* pParentWnd = NULL);
// find/replace parameter block
static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
// Operations
// Helpers for parsing information after successful return
CString GetReplaceString() const;// get replacement string
CString GetFindString() const; // get find string
BOOL SearchDown() const; // TRUE if search down, FALSE is up
BOOL FindNext() const; // TRUE if command is find next
BOOL MatchCase() const; // TRUE if matching case
BOOL MatchWholeWord() const; // TRUE if matching whole words only
BOOL ReplaceCurrent() const; // TRUE if replacing current string
BOOL ReplaceAll() const; // TRUE if replacing all occurrences
BOOL IsTerminating() const; // TRUE if terminating dialog
// Implementation
protected:
virtual void PostNcDestroy();
#ifdef _DEBUG
public:
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
TCHAR m_szFindWhat[128];
TCHAR m_szReplaceWith[128];
};
////////////////////////////////////////////////////////////////////////////
// CPropertyPage -- one page of a tabbed dialog
class CPropertyPage : public CDialog
{
DECLARE_DYNAMIC(CPropertyPage)
// Construction
public:
CPropertyPage(UINT nIDTemplate, UINT nIDCaption = 0);
CPropertyPage(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
CPropertyPage();
void Construct(UINT nIDTemplate, UINT nIDCaption = 0);
void Construct(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
// Attributes
PROPSHEETPAGE m_psp;
// Operations
void CancelToClose();
void SetModified(BOOL bChanged = TRUE);
LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam);
// Overridables
public:
virtual BOOL OnApply();
virtual void OnReset();
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnSetActive();
virtual BOOL OnKillActive();
virtual BOOL OnQueryCancel();
virtual LRESULT OnWizardBack();
virtual LRESULT OnWizardNext();
virtual BOOL OnWizardFinish();
// Implementation
public:
virtual ~CPropertyPage();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
void EndDialog(int nEndID); // incorrect to call and will assert
#endif
protected:
// private implementation data
CString m_strCaption;
// implementation helpers
void CommonConstruct(LPCTSTR lpszTemplateName, UINT nIDCaption);
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
virtual BOOL PreTranslateMessage(MSG*);
LRESULT MapWizardResult(LRESULT lToMap);
void PreProcessPageTemplate(PROPSHEETPAGE& psp, BOOL bWizard);
#ifndef _AFX_NO_OCC_SUPPORT
void Cleanup();
const DLGTEMPLATE* InitDialogInfo(const DLGTEMPLATE* pTemplate);
#endif
// Generated message map functions
//{{AFX_MSG(CPropertyPage)
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
friend class CPropertySheet;
};
////////////////////////////////////////////////////////////////////////////
// CPropertySheet -- a tabbed "dialog" (really a popup-window)
class CTabCtrl; // forward reference (see afxcmn.h)
class CPropertySheet : public CWnd
{
DECLARE_DYNAMIC(CPropertySheet)
// Construction
public:
CPropertySheet();
CPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
CPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(UINT nIDCaption, CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
// for modeless creation
BOOL Create(CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
// the default style, expressed by passing -1 as dwStyle, is actually:
// WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXT_HELP | WS_VISIBLE
// Attributes
public:
PROPSHEETHEADER m_psh;
int GetPageCount() const;
CPropertyPage* GetActivePage() const;
int GetActiveIndex() const;
CPropertyPage* GetPage(int nPage) const;
int GetPageIndex(CPropertyPage* pPage);
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
void SetTitle(LPCTSTR lpszText, UINT nStyle = 0);
CTabCtrl* GetTabControl() const;
void SetWizardMode();
void SetFinishText(LPCTSTR lpszText);
void SetWizardButtons(DWORD dwFlags);
// Operations
public:
virtual int DoModal();
void AddPage(CPropertyPage* pPage);
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
void EndDialog(int nEndID); // used to terminate a modal dialog
BOOL PressButton(int nButton);
// Implementation
public:
virtual ~CPropertySheet();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
void CommonConstruct(CWnd* pParentWnd, UINT iSelectPage);
void EnableStackedTabs(BOOL bStacked);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void BuildPropPageArray();
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo);
virtual BOOL OnInitDialog();
virtual BOOL ContinueModal();
protected:
CPtrArray m_pages; // array of CPropertyPage pointers
CString m_strCaption; // caption of the pseudo-dialog
CWnd* m_pParentWnd; // parent window of property sheet
BOOL m_bStacked; // EnableStackedTabs sets this
BOOL m_bModeless; // TRUE when Create called instead of DoModal
// Generated message map functions
//{{AFX_MSG(CPropertySheet)
afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg LRESULT OnCommandHelp(WPARAM, LPARAM);
afx_msg void OnClose();
afx_msg void OnSysCommand(UINT nID, LPARAM);
afx_msg LRESULT OnSetDefID(WPARAM, LPARAM);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
friend class CPropertyPage;
};
/////////////////////////////////////////////////////////////////////////////
// Inline function declarations
#ifdef _AFX_PACKING
#pragma pack(pop)
#endif
#ifdef _AFX_ENABLE_INLINES
#define _AFXDLGS_INLINE inline
#include <afxdlgs.inl>
#endif
#undef AFX_DATA
#define AFX_DATA
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, on)
#endif
#ifndef _AFX_FULLTYPEINFO
#pragma component(mintypeinfo, off)
#endif
#endif //__AFXDLGS_H__
/////////////////////////////////////////////////////////////////////////////