//+--------------------------------------------------------------------------- ///////////////////////////////////////////////////////////////////////////////// // // 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) ) { 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 (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"); }