windows-nt/Source/XPSP1/NT/ds/security/services/ca/certmmc/chooser.h
2020-09-26 16:20:57 +08:00

168 lines
5 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: chooser.h
//
//--------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////
// Chooser.h
//
// HISTORY
// 13-May-1997 t-danm Creation.
//
/////////////////////////////////////////////////////////////////////
#ifndef __CHOOSER_H_INCLUDED__
#define __CHOOSER_H_INCLUDED__
#include "tfcprop.h"
LPCTSTR PchGetMachineNameOverride();
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
// class CAutoDeletePropPage
//
// This object is the backbone for property page
// that will *destroy* itself when no longer needed.
// The purpose of this object is to maximize code reuse
// among the various pages in the snapin wizards.
//
// INHERITANCE TREE (so far)
// CAutoDeletePropPage - Base object
// CChooseMachinePropPage - Dialog to select a machine name
// CFileMgmtGeneral - Dialog to select "File Services" (snapin\filemgmt\snapmgr.h)
// CMyComputerGeneral - Dialog for the "My Computer" (snapin\mycomput\snapmgr.h)
// CChoosePrototyperPropPage - Dialog to select prototyper demo (NYI)
//
// HISTORY
// 15-May-1997 t-danm Creation. Split of CChooseMachinePropPage
// to allow property pages to have more flexible dialog
// templates.
//
class CAutoDeletePropPage : public PropertyPage
{
public:
// Construction
CAutoDeletePropPage(UINT uIDD);
virtual ~CAutoDeletePropPage();
protected:
// Dialog Data
// Overrides
virtual BOOL OnSetActive();
// Implementation
protected:
void OnHelp(LPHELPINFO lpHelp);
void OnContextHelp(HWND hwnd);
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
// This mechanism deletes the CAutoDeletePropPage object
// when the wizard is finished
struct
{
INT cWizPages; // Number of pages in wizard
LPFNPSPCALLBACK pfnOriginalPropSheetPageProc;
} m_autodeleteStuff;
static UINT CALLBACK S_PropSheetPageProc(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp);
protected:
CString m_strCaption; // Covers for MFC4.2's missing support for Wiz97.
// without this override, CPropertyPage::m_strCaption
// address is miscalculated and GPF ensues.
CString m_strHelpFile; // Name for the .hlp file
const DWORD * m_prgzHelpIDs; // Optional: Pointer to an array of help IDs
public:
/////////////////////////////////////////////////////////////////////
void SetCaption(UINT uStringID);
void SetCaption(LPCTSTR pszCaption);
void SetHelp(LPCTSTR szHelpFile, const DWORD rgzHelpIDs[]);
void EnableDlgItem(INT nIdDlgItem, BOOL fEnable);
}; // CAutoDeletePropPage
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
// class CChooseMachinePropPage
//
// This object is a stand-alone property page used to
// select a computer name.
//
// The object CChooseMachinePropPage can have its dialog
// template replaced to allow a new wizard without any new code.
// The object can also be inherited, allowing easy extentionability.
//
// RESTRICTIONS:
// If the user wishes to provide its own dialog template, here
// are the dialog IDs that must present:
// IDC_CHOOSER_RADIO_LOCAL_MACHINE - Select local machine.
// IDC_CHOOSER_RADIO_SPECIFIC_MACHINE - Select a specific machine.
// IDC_CHOOSER_EDIT_MACHINE_NAME - Edit field to enter the machine name.
// There are also optional IDs:
// IDC_CHOOSER_BUTTON_BROWSE_MACHINENAMES - Browse to select a machine name.
// IDC_CHOOSER_CHECK_OVERRIDE_MACHINE_NAME - Checkbox to allow the machine name to be overriden by command line.
//
class CChooseMachinePropPage : public CAutoDeletePropPage
{
public:
enum { IID_DEFAULT = IDD_CHOOSER_CHOOSE_MACHINE };
public:
// Construction
CChooseMachinePropPage(UINT uIDD = IID_DEFAULT);
virtual ~CChooseMachinePropPage();
protected:
void InitChooserControls();
// MFC replacements
BOOL UpdateData(BOOL fSuckFromDlg = TRUE);
BOOL OnCommand(WPARAM wParam, LPARAM lParam);
// Dialog Data
BOOL m_fIsRadioLocalMachine;
BOOL m_fEnableMachineBrowse;
CString m_strMachineName;
DWORD* m_pdwFlags;
// Overrides
public:
virtual BOOL OnWizardFinish();
protected:
// Implementation
protected:
virtual BOOL OnInitDialog();
void OnRadioLocalMachine();
void OnRadioSpecificMachine();
void OnBrowse();
protected:
CString * m_pstrMachineNameOut; // OUT: Pointer to the CString object to store the machine name
CString * m_pstrMachineNameEffectiveOut; // OUT: Pointer to the CString object to store the effective machine name
public:
void InitMachineName(LPCTSTR pszMachineName);
void SetOutputBuffers(
OUT CString * pstrMachineNamePersist,
OUT OPTIONAL CString * pstrMachineNameEffective,
OUT DWORD* m_pdwFlags);
}; // CChooseMachinePropPage
#endif // ~__CHOOSER_H_INCLUDED__