Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

181 lines
5.2 KiB

//+---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000-2001.
//
// File: TemplatePropertySheet.cpp
//
// Contents: Implementation of CTemplatePropertySheet
//
//----------------------------------------------------------------------------
#include "stdafx.h"
#include "TemplatePropertySheet.h"
#include "SecurityPropertyPage.h"
#define WM_ADDSECURITYPAGE WM_APP + 2000
#define WM_SETOKDEFAULT WM_APP + 2001
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTemplatePropertySheet::CTemplatePropertySheet(
LPCTSTR pszCaption,
CCertTemplate& rCertTemplate,
CWnd *pParentWnd,
UINT iSelectPage)
: CPropertySheet (pszCaption, pParentWnd, iSelectPage),
m_rCertTemplate (rCertTemplate),
m_pReleaseMe (0)
{
m_rCertTemplate.AddRef ();
}
CTemplatePropertySheet::~CTemplatePropertySheet()
{
m_rCertTemplate.Release ();
if ( m_pReleaseMe )
m_pReleaseMe->Release ();
}
BEGIN_MESSAGE_MAP(CTemplatePropertySheet, CPropertySheet)
ON_MESSAGE (WM_ADDSECURITYPAGE, OnAddSecurityPage)
ON_MESSAGE(WM_HELP, OnHelp)
ON_MESSAGE (WM_SETOKDEFAULT, OnSetOKDefault)
END_MESSAGE_MAP()
LRESULT CTemplatePropertySheet::OnAddSecurityPage (WPARAM, LPARAM)
{
_TRACE (1, L"Entering CTemplatePropertySheet::OnAddSecurityPage\n");
LPSECURITYINFO pCertTemplateSecurity = NULL;
HRESULT hr = CreateCertTemplateSecurityInfo (&m_rCertTemplate,
&pCertTemplateSecurity);
if ( SUCCEEDED (hr) )
{
HPROPSHEETPAGE hPage = CreateSecurityPage (pCertTemplateSecurity);
if ( hPage )
{
if ( SendMessage (PSM_ADDPAGE, 0, (LPARAM) hPage) )
{
SendMessage (PSM_RECALCPAGESIZES, 0, 0);
}
else
{
DestroyPropertySheetPage (hPage);
pCertTemplateSecurity->Release ();
pCertTemplateSecurity = 0;
}
}
else
{
hr = HRESULT_FROM_WIN32 (GetLastError());
_TRACE (0, L"CreateSecurityPage () failed: 0x%x\n", hr);
pCertTemplateSecurity->Release ();
pCertTemplateSecurity = 0;
}
_ASSERT (SUCCEEDED (hr));
}
m_pReleaseMe = pCertTemplateSecurity;
_TRACE (-1, L"Leaving CTemplatePropertySheet::OnAddSecurityPage\n");
return 0;
}
BOOL CTemplatePropertySheet::OnInitDialog()
{
_TRACE (1, L"Entering CTemplatePropertySheet::OnInitDialog ()\n");
CPropertySheet::OnInitDialog();
LONG dwStyle = GetWindowLong (m_hWnd, GWL_STYLE);
dwStyle |= DS_CONTEXTHELP;
SetWindowLong (m_hWnd, GWL_STYLE, dwStyle);
dwStyle = GetWindowLong (m_hWnd, GWL_EXSTYLE);
dwStyle |= /*WS_EX_DLGMODALFRAME |*/ WS_EX_CONTEXTHELP;
SetWindowLong (m_hWnd, GWL_EXSTYLE, dwStyle);
// Add security page
PostMessage (WM_ADDSECURITYPAGE, 0, 0);
// Make the OK button the default
PostMessage (WM_SETOKDEFAULT, 0, 0);
_TRACE (-1, L"Leaving CTemplatePropertySheet::OnInitDialog ()\n");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
LRESULT CTemplatePropertySheet::OnSetOKDefault (WPARAM, LPARAM)
{
// Make the OK button the default
SendMessage (DM_SETDEFID, MAKEWPARAM (IDOK, 0), 0);
SendDlgItemMessage (IDOK, BM_SETSTYLE, BS_DEFPUSHBUTTON, MAKELPARAM(TRUE, 0));
SendDlgItemMessage (IDCANCEL, BM_SETSTYLE, BS_PUSHBUTTON, MAKELPARAM(TRUE, 0));
return 0;
}
BOOL CTemplatePropertySheet::OnHelp(WPARAM /*wParam*/, LPARAM lParam)
{
_TRACE(1, L"Entering CTemplatePropertySheet::OnHelp\n");
const LPHELPINFO pHelpInfo = (LPHELPINFO)lParam;
if (pHelpInfo && pHelpInfo->iContextType == HELPINFO_WINDOW)
{
DoContextHelp ((HWND) pHelpInfo->hItemHandle);
}
_TRACE(-1, L"Leaving CTemplatePropertySheet::OnHelp\n");
return TRUE;
}
void CTemplatePropertySheet::DoContextHelp (HWND hWndControl)
{
_TRACE(1, L"Entering CTemplatePropertySheet::DoContextHelp\n");
const int IDC_COMM_APPLYNOW = 12321;
const int IDH_COMM_APPLYNOW = 28447;
const DWORD aHelpIDs_PropSheet[]=
{
IDC_COMM_APPLYNOW, IDH_COMM_APPLYNOW,
0, 0
};
PWSTR pszHelpFile = 0;
switch (::GetDlgCtrlID (hWndControl))
{
case IDC_COMM_APPLYNOW:
pszHelpFile = L"windows.hlp";
break;
default:
// Display context help for a control
pszHelpFile = const_cast<PWSTR> (GetContextHelpFile ());
break;
}
if ( !::WinHelp (
hWndControl,
pszHelpFile,
HELP_WM_HELP,
(DWORD_PTR) aHelpIDs_PropSheet) )
{
_TRACE(0, L"WinHelp () failed: 0x%x\n", GetLastError ());
}
_TRACE(-1, L"Leaving CTemplatePropertySheet::DoContextHelp\n");
}