windows-nt/Source/XPSP1/NT/admin/snapin/certmgr/options.cpp
2020-09-26 16:20:57 +08:00

220 lines
5.9 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1998-2001.
//
// File: options.cpp
//
// Contents: CViewOptionsDlg - snapin-wide view options
//
//----------------------------------------------------------------------------
// options.cpp : implementation file
//
#include "stdafx.h"
#include <gpedit.h>
#include "options.h"
#include "compdata.h"
#ifdef _DEBUG
#ifndef ALPHA
#define new DEBUG_NEW
#endif
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CViewOptionsDlg dialog
CViewOptionsDlg::CViewOptionsDlg(CWnd* pParent, CCertMgrComponentData* pCompData)
: CHelpDialog(CViewOptionsDlg::IDD, pParent),
m_pCompData (pCompData)
{
ASSERT (m_pCompData);
//{{AFX_DATA_INIT(CViewOptionsDlg)
m_bShowPhysicalStores = FALSE;
m_bShowArchivedCerts = FALSE;
//}}AFX_DATA_INIT
}
void CViewOptionsDlg::DoDataExchange(CDataExchange* pDX)
{
CHelpDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CViewOptionsDlg)
DDX_Control(pDX, IDC_SHOW_PHYSICAL, m_showPhysicalButton);
DDX_Control(pDX, IDC_VIEW_BY_STORE, m_viewByStoreBtn);
DDX_Control(pDX, IDC_VIEW_BY_PURPOSE, m_viewByPurposeBtn);
DDX_Check(pDX, IDC_SHOW_PHYSICAL, m_bShowPhysicalStores);
DDX_Check(pDX, IDC_SHOW_ARCHIVED, m_bShowArchivedCerts);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CViewOptionsDlg, CHelpDialog)
//{{AFX_MSG_MAP(CViewOptionsDlg)
ON_BN_CLICKED(IDC_VIEW_BY_PURPOSE, OnViewByPurpose)
ON_BN_CLICKED(IDC_VIEW_BY_STORE, OnViewByStore)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CViewOptionsDlg message handlers
BOOL CViewOptionsDlg::OnInitDialog()
{
CHelpDialog::OnInitDialog();
if ( m_pCompData )
{
BOOL bIsFileView = !m_pCompData->m_szFileName.IsEmpty ();
if ( bIsFileView )
m_showPhysicalButton.ShowWindow (SW_HIDE);
m_bShowArchivedCerts = m_pCompData->m_bShowArchivedCertsPersist;
m_bShowPhysicalStores = m_pCompData->m_bShowPhysicalStoresPersist;
if ( IDM_STORE_VIEW == m_pCompData->m_activeViewPersist )
m_viewByStoreBtn.SetCheck (1);
else
{
m_viewByPurposeBtn.SetCheck (1);
m_showPhysicalButton.EnableWindow (FALSE);
}
UpdateData (FALSE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CViewOptionsDlg::OnOK()
{
UpdateData (TRUE);
if ( m_pCompData )
{
m_pCompData->m_bShowArchivedCertsPersist = m_bShowArchivedCerts;
m_pCompData->m_bShowPhysicalStoresPersist = m_bShowPhysicalStores;
if ( m_viewByStoreBtn.GetCheck () )
m_pCompData->m_activeViewPersist = IDM_STORE_VIEW;
else
m_pCompData->m_activeViewPersist = IDM_USAGE_VIEW;
}
CHelpDialog::OnOK();
}
void CViewOptionsDlg::OnViewByPurpose()
{
if ( m_viewByPurposeBtn.GetCheck () )
m_showPhysicalButton.EnableWindow (FALSE);
else
m_showPhysicalButton.EnableWindow (TRUE);
}
void CViewOptionsDlg::OnViewByStore()
{
if ( m_viewByStoreBtn.GetCheck () )
m_showPhysicalButton.EnableWindow (TRUE);
else
m_showPhysicalButton.EnableWindow (FALSE);
}
void CViewOptionsDlg::DoContextHelp (HWND hWndControl)
{
_TRACE (1, L"Entering CViewOptionsDlg::DoContextHelp\n");
static const DWORD help_map[] =
{
IDC_VIEW_BY_PURPOSE, IDH_OPTIONS_VIEW_BY_PURPOSE,
IDC_VIEW_BY_STORE, IDH_OPTIONS_VIEW_BY_STORE,
IDC_SHOW_PHYSICAL, IDH_OPTIONS_SHOW_PHYSICAL,
IDC_SHOW_ARCHIVED, IDH_OPTIONS_SHOW_ARCHIVED,
0, 0
};
// Display context help for a control
if ( !::WinHelp (
hWndControl,
GetF1HelpFilename(),
HELP_WM_HELP,
(DWORD_PTR) help_map) )
{
_TRACE (0, L"WinHelp () failed: 0x%x\n", GetLastError ());
}
_TRACE (-1, L"Leaving CViewOptionsDlg::DoContextHelp\n");
}
void CViewOptionsDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// point is in screen coordinates
_TRACE (1, L"Entering CViewOptionsDlg::OnContextMenu\n");
if ( pWnd->m_hWnd == GetDlgItem (IDC_VIEW_BY_PURPOSE)->m_hWnd ||
pWnd->m_hWnd == GetDlgItem (IDC_VIEW_BY_STORE)->m_hWnd ||
pWnd->m_hWnd == GetDlgItem (IDC_SHOW_PHYSICAL)->m_hWnd ||
pWnd->m_hWnd == GetDlgItem (IDC_SHOW_ARCHIVED)->m_hWnd )
{
CMenu bar;
if ( bar.LoadMenu(IDR_WHATS_THIS_CONTEXT_MENU1) )
{
CMenu& popup = *bar.GetSubMenu (0);
ASSERT(popup.m_hMenu);
if ( popup.TrackPopupMenu (TPM_RIGHTBUTTON | TPM_LEFTBUTTON,
point.x, // in screen coordinates
point.y, // in screen coordinates
this) ) // route commands through main window
{
m_hWndWhatsThis = 0;
CPoint clPoint (point);
ScreenToClient (&clPoint);
CWnd* pChild = ChildWindowFromPoint (
clPoint, // in client coordinates
CWP_SKIPINVISIBLE | CWP_SKIPTRANSPARENT);
if ( pChild )
{
// Check to see if the window returned is the group box.
// If it is, we want to get the child windows that lie in
// the group box, since we're
// not interested in the group box itself.
CWnd* pGroup = GetDlgItem (IDC_VIEW_MODE_GROUP);
if ( pChild->m_hWnd == pGroup->m_hWnd )
{
CRect rc;
// Try the "Certificate Purpose" control
pChild = GetDlgItem (IDC_VIEW_BY_PURPOSE);
if ( pChild )
{
pChild->GetWindowRect (&rc);
if ( rc.PtInRect (point) )
m_hWndWhatsThis = pChild->m_hWnd;
else
{
// Try the "Logical Certificate Stores" control
pChild = GetDlgItem (IDC_VIEW_BY_STORE);
if ( pChild )
{
pChild->GetWindowRect (&rc);
if ( rc.PtInRect (point) )
m_hWndWhatsThis = pChild->m_hWnd;
}
}
}
}
else
m_hWndWhatsThis = pChild->m_hWnd;
}
}
}
}
_TRACE (-1, L"Leaving CViewOptionsDlg::OnContextMenu\n");
}