windows-nt/Source/XPSP1/NT/inetsrv/iis/ui/admin/comprop/wizard.h
2020-09-26 16:20:57 +08:00

556 lines
13 KiB
C++

/*++
Copyright (c) 1994-1998 Microsoft Corporation
Module Name :
wizard.h
Abstract:
Enhanced dialog and IIS MMC Wizards definitions
Author:
Ronald Meijer (ronaldm)
Project:
Internet Services Manager
Revision History:
--*/
#ifndef __IISUI_WIZARD_H__
#define __IISUI_WIZARD_H__
//
// CIISWizardPage parameters
//
#define HEADER_PAGE (TRUE)
#define WELCOME_PAGE (FALSE)
#if (_WIN32_IE < 0x0400)
//
// Defined in comctrl.h. Defined here because NT 5 MFC42.dll are
// defined with _WIN32_IE 0x300
//
#pragma message("Warning: privately defining _WIN32_IE definitions")
#define PSH_WIZARD97 0x00002000
#define ICC_INTERNET_CLASSES 0x00000800
#define PSP_HIDEHEADER 0x00000800
#define PSP_USEHEADERTITLE 0x00001000
#define PSP_USEHEADERSUBTITLE 0x00002000
#define PSH_WIZARD_LITE 0x00400000
#endif // _WIN32_IE
//
// Using dialog font as a basis, create a new special effects font
//
COMDLL BOOL
CreateSpecialDialogFont(
IN CWnd * pdlg, // Source dialog
IN OUT CFont * pfontSpecial, // Font to be used must be allocated already
IN LONG lfOffsetWeight = +300, // Assuming boldification
IN LONG lfOffsetHeight = +0, // Assuming no change in height
IN LONG lfOffsetWidth = +0, // Assuming no change in width (or true type)
IN BOOL fItalic = FALSE, // Do not invert italic state
IN BOOL fUnderline = FALSE // Do not invert underline state
);
//
// Apply fonts to child controls of a dialog
//
COMDLL void
ApplyFontToControls(
IN CWnd * pdlg, // Parent dialog
IN CFont * pfont, // Font to be applied
IN UINT nFirst, // First control ID in the series
IN UINT nLast // Last control ID in the series
);
class COMDLL CEmphasizedDialog : public CDialog
/*++
Class Description:
A standard CDialog that allows use of emphasized fonts as follows:
control ID Meaning
--------------------------------------------------------------------------
IDC_ED_BOLD1 Dialog font, bold-faced.
IDC_ED_BOLD2 Dialog font, bold-faced.
IDC_ED_BOLD3 Dialog font, bold-faced.
IDC_ED_BOLD4 Dialog font, bold-faced.
IDC_ED_BOLD5 Dialog font, bold-faced.
Note: others might be added as needed.
Public Interface:
CEmphasizedDialog : Constructor
--*/
{
DECLARE_DYNCREATE(CEmphasizedDialog)
//
// Constructors
//
public:
CEmphasizedDialog(LPCTSTR lpszTemplateName, CWnd * pParentWnd = NULL);
CEmphasizedDialog(UINT nIDTemplate, CWnd * pParentWnd = NULL);
CEmphasizedDialog();
protected:
virtual BOOL OnInitDialog();
afx_msg void OnDestroy();
DECLARE_MESSAGE_MAP()
private:
CFont m_fontBold;
};
class COMDLL CIISWizardSheet : public CPropertySheet
/*++
Class Description:
IIS Wizard sheet base class
Public Interface:
CIISWizardSheet : Constructor
IsWizard97 : TRUE if the wizard is in '97 mode
GetSpecialFont : Get pointer to special font
GetBitmapMemDC : Get memory DC where bitmap resides.
GetBackgroundBrush : Get background brush
QueryBitmapWidth : Get bitmap width
QueryBitmapHeight : Get bitmap height
Notes:
The sheets will be shown in wizard '97 format
if a welcome bitmap ID is specified. In that
case, a header bitmap ID must also be specified.
Additionally, the same control IDs as used in CEmphasizedDialog
above have special meaning.
--*/
{
DECLARE_DYNCREATE(CIISWizardSheet)
//
// Construction
//
public:
//
// Specifying a welcome bitmap make the wizard
// wizard '97, otherwise it's a plain-old wizard
// page.
//
CIISWizardSheet(
IN UINT nWelcomeBitmap = 0,
IN UINT nHeaderBitmap = 0,
IN COLORREF rgbForeColor = RGB(0,0,0), // Black
IN COLORREF rgbBkColor = RGB(255,255,255) // White
);
//
// Access
//
public:
BOOL IsWizard97() const;
CFont * GetSpecialFont(BOOL fHeader);
CFont * GetBoldFont() { return &m_fontTitle; }
CFont * GetBigFont() { return &m_fontWelcome; }
CDC * GetBitmapMemDC(BOOL fHeader);
HBRUSH GetBackgroundBrush() const { return m_brBkgnd; }
CBrush * GetWindowBrush() { return &m_brWindow; }
LONG QueryBitmapWidth(BOOL fHeader) const;
LONG QueryBitmapHeight(BOOL fHeader) const;
COLORREF QueryWindowColor() const { return m_rgbWindow; }
COLORREF QueryWindowTextColor() const { return m_rgbWindowText; }
void EnableButton(int nID, BOOL fEnable = TRUE);
protected:
virtual BOOL OnInitDialog();
virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
afx_msg void OnDestroy();
DECLARE_MESSAGE_MAP()
protected:
static const int s_cnBoldDeltaFont;
static const int s_cnBoldDeltaHeight;
static const int s_cnBoldDeltaWidth;
protected:
COLORREF m_rgbWindow;
COLORREF m_rgbWindowText;
private:
CFont m_fontWelcome;
CFont m_fontTitle;
HBRUSH m_brBkgnd;
CBrush m_brWindow;
CBitmap m_bmpWelcome;
CBitmap m_bmpHeader;
BITMAP m_bmWelcomeInfo;
BITMAP m_bmHeaderInfo;
CDC m_dcMemWelcome;
CDC m_dcMemHeader;
HBITMAP m_hbmpOldWelcome;
HBITMAP m_hbmpOldHeader;
};
class COMDLL CIISWizardPage : public CPropertyPage
/*++
Class Description:
IIS Wizard page base class
Public Interface:
CIISWizardPage : Constructor
ValidateString : DDX/DDV Helper
Notes:
If the sheet is constructed with bitmap IDs, the
pages will be displayed in wizard '97 format.
Wizard '97 pages will be displayed in either welcome
page or header page format. The welcome page will
be displayed on a welcome bitmap background, with
the welcome text (IDC_STATIC_WZ_WELCOME) displayed
in large bold. Header pages (ordinary pages), display
IDC_STATIC_WZ_TITLE in bold, and use the header bitmap
at the top of the page.
Special control IDs:
--------------------
IDC_STATIC_WZ_WELCOME - Welcome text displayed in bold
IDC_STATIC_WZ_TITLE - Title text displayed in bold
IDC_STATIC_WZ_SUBTITLE - Subtitle text
--*/
{
DECLARE_DYNCREATE(CIISWizardPage)
//
// Construction
//
public:
CIISWizardPage(
IN UINT nIDTemplate = 0,
IN UINT nIDCaption = USE_DEFAULT_CAPTION,
IN BOOL fHeaderPage = FALSE,
IN UINT nIDHeaderTitle = USE_DEFAULT_CAPTION,
IN UINT nIDSubHeaderTitle = USE_DEFAULT_CAPTION
);
public:
//
// DDX/DDV Helper
//
BOOL ValidateString(
IN CEdit & edit,
OUT CString & str,
IN int nMin,
IN int nMax
);
//
// Interface
//
protected:
virtual BOOL OnInitDialog();
afx_msg HBRUSH OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor);
afx_msg BOOL OnEraseBkgnd(CDC * pDC);
DECLARE_MESSAGE_MAP()
//
// Sheet Access
//
protected:
CIISWizardSheet * GetSheet() const;
void SetWizardButtons(DWORD dwFlags);
void EnableSheetButton(int nID, BOOL fEnable = TRUE);
BOOL IsWizard97() const;
BOOL IsHeaderPage() const { return m_fUseHeader; }
CFont * GetSpecialFont();
CFont * GetBoldFont();
CFont * GetBigFont();
CDC * GetBitmapMemDC();
HBRUSH GetBackgroundBrush() const;
CBrush * GetWindowBrush();
LONG QueryBitmapWidth() const;
LONG QueryBitmapHeight() const;
COLORREF QueryWindowColor() const;
COLORREF QueryWindowTextColor() const;
protected:
static const int s_cnHeaderOffset;
private:
BOOL m_fUseHeader; // TRUE to use header
CRect m_rcFillArea; // Fill area
CPoint m_ptOrigin; // Bitmap origin
CString m_strTitle; // Title text
CString m_strSubTitle; // Subtitle text
};
class COMDLL CIISWizardBookEnd : public CIISWizardPage
/*++
Class Description:
Welcome / Completion Page
Public Interface:
CIISWizardBookEnd : Constructor
Notes:
The resource template is not required. If not provided,
a default template will be used.
Special control IDs (on the dialog template):
---------------------------------------------
IDC_STATIC_WZ_WELCOME - Welcome text displayed in bold
IDC_STATIC_WZ_BODY - Body text will be placed here
IDC_STATIC_WZ_CLICK - Click instructions.
The click instructions default to something sensible, and body text
will default to the error text on a failure page and to nothing on
success and welcome page. The body text may include the %h/%H
escape sequences for CError on a success/failure page.
--*/
{
DECLARE_DYNCREATE(CIISWizardBookEnd)
public:
//
// Constructor for success/failure completion page
//
CIISWizardBookEnd(
IN HRESULT * phResult,
IN UINT nIDWelcomeTxtSuccess ,
IN UINT nIDWelcomeTxtFailure,
IN UINT nIDCaption = USE_DEFAULT_CAPTION,
IN UINT nIDBodyTxtSuccess = USE_DEFAULT_CAPTION,
IN UINT nIDBodyTxtFailure = USE_DEFAULT_CAPTION,
IN UINT nIDClickTxt = USE_DEFAULT_CAPTION,
IN UINT nIDTemplate = 0
);
//
// Constructor for a welcome page
//
CIISWizardBookEnd(
IN UINT nIDWelcomeTxt = 0,
IN UINT nIDCaption = USE_DEFAULT_CAPTION,
IN UINT nIDBodyTxt = USE_DEFAULT_CAPTION,
IN UINT nIDClickTxt = USE_DEFAULT_CAPTION,
IN UINT nIDTemplate = 0
);
//
// Dialog Data
//
protected:
//{{AFX_DATA(CPWWelcome)
enum { IDD = IDD_WIZARD_BOOKEND };
//}}AFX_DATA
//
// Overrides
//
protected:
//{{AFX_VIRTUAL(CIISWizardBookEnd)
public:
virtual BOOL OnSetActive();
//}}AFX_VIRTUAL
//
// Implementation
//
protected:
// Generated message map functions
//{{AFX_MSG(CPWTemplate)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
BOOL IsWelcomePage() const { return m_phResult == NULL; }
private:
HRESULT * m_phResult;
CString m_strWelcomeSuccess;
CString m_strWelcomeFailure;
CString m_strBodySuccess;
CString m_strBodyFailure;
CString m_strClick;
};
//
// Inline Expansion
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
inline CEmphasizedDialog::CEmphasizedDialog(
IN LPCTSTR lpszTemplateName,
IN CWnd * pParentWnd
)
: CDialog(lpszTemplateName, pParentWnd)
{
}
inline CEmphasizedDialog::CEmphasizedDialog(
IN UINT nIDTemplate,
IN CWnd * pParentWnd
)
: CDialog(nIDTemplate, pParentWnd)
{
}
inline CEmphasizedDialog::CEmphasizedDialog()
: CDialog()
{
}
inline BOOL CIISWizardSheet::IsWizard97() const
{
return ((HBITMAP)m_bmpWelcome != NULL);
}
inline CFont * CIISWizardSheet::GetSpecialFont(BOOL fHeader)
{
return fHeader ? &m_fontTitle : &m_fontWelcome;
}
inline CDC * CIISWizardSheet::GetBitmapMemDC(BOOL fHeader)
{
return fHeader ? &m_dcMemHeader : &m_dcMemWelcome;
}
inline LONG CIISWizardSheet::QueryBitmapWidth(BOOL fHeader) const
{
return fHeader ? m_bmHeaderInfo.bmWidth : m_bmWelcomeInfo.bmWidth;
}
inline LONG CIISWizardSheet::QueryBitmapHeight(BOOL fHeader) const
{
return fHeader ? m_bmHeaderInfo.bmHeight : m_bmWelcomeInfo.bmHeight;
}
inline CIISWizardSheet * CIISWizardPage::GetSheet() const
{
return (CIISWizardSheet *)GetParent();
}
inline void CIISWizardPage::SetWizardButtons(DWORD dwFlags)
{
GetSheet()->SetWizardButtons(dwFlags);
}
inline void CIISWizardPage::EnableSheetButton(int nID, BOOL fEnable)
{
GetSheet()->EnableButton(nID, fEnable);
}
inline BOOL CIISWizardPage::IsWizard97() const
{
return GetSheet()->IsWizard97();
}
inline CFont * CIISWizardPage::GetSpecialFont()
{
ASSERT(IsWizard97());
return GetSheet()->GetSpecialFont(m_fUseHeader);
}
inline CFont * CIISWizardPage::GetBoldFont()
{
ASSERT(IsWizard97());
return GetSheet()->GetBoldFont();
}
inline CFont * CIISWizardPage::GetBigFont()
{
ASSERT(IsWizard97());
return GetSheet()->GetBigFont();
}
inline CDC * CIISWizardPage::GetBitmapMemDC()
{
ASSERT(IsWizard97());
return GetSheet()->GetBitmapMemDC(m_fUseHeader);
}
inline LONG CIISWizardPage::QueryBitmapWidth() const
{
ASSERT(IsWizard97());
return GetSheet()->QueryBitmapWidth(m_fUseHeader);
}
inline LONG CIISWizardPage::QueryBitmapHeight() const
{
ASSERT(IsWizard97());
return GetSheet()->QueryBitmapHeight(m_fUseHeader);
}
inline HBRUSH CIISWizardPage::GetBackgroundBrush() const
{
ASSERT(IsWizard97());
return GetSheet()->GetBackgroundBrush();
}
inline CBrush * CIISWizardPage::GetWindowBrush()
{
ASSERT(IsWizard97());
return GetSheet()->GetWindowBrush();
}
inline COLORREF CIISWizardPage::QueryWindowColor() const
{
ASSERT(IsWizard97());
return GetSheet()->QueryWindowColor();
}
inline COLORREF CIISWizardPage::QueryWindowTextColor() const
{
ASSERT(IsWizard97());
return GetSheet()->QueryWindowTextColor();
}
#endif // __IISUI_WIZARD_H__