windows-nt/Source/XPSP1/NT/admin/admt/migdrvr/maindlg.cpp
2020-09-26 16:20:57 +08:00

307 lines
8.2 KiB
C++

/*---------------------------------------------------------------------------
File: MainDlg.cpp
Comments: This dialog shows the summary statistics, including
the number of agents successfully dispatched and completed, and the
total number of objects processed for all agents. The number of objects
processed is incremented to include the results for each agent when that
agent finishes and writes back its result file.
(c) Copyright 1999, Mission Critical Software, Inc., All Rights Reserved
Proprietary and confidential to Mission Critical Software, Inc.
REVISION LOG ENTRY
Revision By: Christy Boles
---------------------------------------------------------------------------
*/// MainDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "MainDlg.h"
#include "Monitor.h"
#include "Globals.h"
#include "ResStr.h"
#include "TReg.hpp"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <htmlhelp.h>
#include "helpid.h"
/////////////////////////////////////////////////////////////////////////////
// CMainDlg dialog
CMainDlg::CMainDlg(CWnd* pParent /*=NULL*/)
: CPropertyPage(CMainDlg::IDD)
{
//{{AFX_DATA_INIT(CMainDlg)
m_ErrorCount = _T("0");
m_FinishedCount = _T("0");
m_InstalledCount = _T("0");
m_RunningCount = _T("0");
m_TotalString = _T("");
m_DirectoriesChanged = _T("0");
m_DirectoriesExamined = _T("0");
m_DirectoriesUnchanged = _T("0");
m_FilesChanged = _T("0");
m_FilesExamined = _T("0");
m_FilesUnchanged = _T("0");
m_SharesChanged = _T("0");
m_SharesExamined = _T("0");
m_SharesUnchanged = _T("0");
m_MembersChanged = _T("0");
m_MembersExamined = _T("0");
m_MembersUnchanged = _T("0");
m_RightsChanged = _T("0");
m_RightsExamined = _T("0");
m_RightsUnchanged = _T("0");
//}}AFX_DATA_INIT
}
void CMainDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainDlg)
DDX_Control(pDX, IDC_INSTALL_PROGRESS, m_InstallProgCtrl);
DDX_Control(pDX, IDC_COMPLETE_PROGESS, m_FinishProgCtrl);
DDX_Text(pDX, IDC_ERROR_COUNT, m_ErrorCount);
DDX_Text(pDX, IDC_FINISHED_COUNT, m_FinishedCount);
DDX_Text(pDX, IDC_INSTALLED_COUNT, m_InstalledCount);
DDX_Text(pDX, IDC_RUNNING_COUNT, m_RunningCount);
DDX_Text(pDX, IDC_TOTAL, m_TotalString);
DDX_Text(pDX, IDC_DirsChanged2, m_DirectoriesChanged);
DDX_Text(pDX, IDC_DirsExamined, m_DirectoriesExamined);
DDX_Text(pDX, IDC_DirsU, m_DirectoriesUnchanged);
DDX_Text(pDX, IDC_FilesChanged, m_FilesChanged);
DDX_Text(pDX, IDC_FilesExamined, m_FilesExamined);
DDX_Text(pDX, IDC_FilesU, m_FilesUnchanged);
DDX_Text(pDX, IDC_SharesChanged, m_SharesChanged);
DDX_Text(pDX, IDC_SharesExamined2, m_SharesExamined);
DDX_Text(pDX, IDC_SharesU, m_SharesUnchanged);
DDX_Text(pDX, IDC_MembersChanged, m_MembersChanged);
DDX_Text(pDX, IDC_MembersExamined, m_MembersExamined);
DDX_Text(pDX, IDC_MembersU, m_MembersUnchanged);
DDX_Text(pDX, IDC_RightsChanged, m_RightsChanged);
DDX_Text(pDX, IDC_RightsExamined, m_RightsExamined);
DDX_Text(pDX, IDC_RightsU, m_RightsUnchanged);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMainDlg, CPropertyPage)
//{{AFX_MSG_MAP(CMainDlg)
ON_WM_HELPINFO()
//}}AFX_MSG_MAP
ON_MESSAGE(DCT_UPDATE_COUNTS, OnUpdateCounts)
ON_MESSAGE(DCT_UPDATE_TOTALS, OnUpdateTotals)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainDlg message handlers
BOOL CMainDlg::OnSetActive()
{
BOOL rc = CPropertyPage::OnSetActive();
CancelToClose( );
return rc;
}
BOOL CMainDlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
ComputerStats gStat;
DetailStats dStat;
gData.GetComputerStats(&gStat);
gData.GetDetailStats(&dStat);
// OnUpdateCounts(0,(long)&gStat);
OnUpdateCounts(0, (LPARAM)&gStat);
// OnUpdateTotals(0, (long)&dStat);
OnUpdateTotals(0, (LPARAM)&dStat);
gData.SetSummaryWindow(m_hWnd);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//LRESULT CMainDlg::OnUpdateCounts(UINT nID, long x)
LRESULT CMainDlg::OnUpdateCounts(UINT nID, LPARAM x)
{
UpdateData(TRUE);
ComputerStats * pStat = (ComputerStats *)x;
m_TotalString.FormatMessage(IDS_ServerCountMessage,pStat->total);
m_InstalledCount.Format(L"%ld",pStat->numInstalled);
m_RunningCount.Format(L"%ld",pStat->numRunning);
m_FinishedCount.Format(L"%ld",pStat->numFinished);
m_ErrorCount.Format(L"%ld",pStat->numError);
#if _MFC_VER >= 0x0600
m_InstallProgCtrl.SetRange32(0,pStat->total - pStat->numError);
#else
m_InstallProgCtrl.SetRange(0,pStat->total - pStat->numError);
#endif
// m_InstallProgCtrl.SetRange32(0,pStat->total - pStat->numError);
m_InstallProgCtrl.SetPos(pStat->numInstalled);
#if _MFC_VER >= 0x0600
m_FinishProgCtrl.SetRange32(0,pStat->total - pStat->numError);
#else
m_FinishProgCtrl.SetRange(0,pStat->total - pStat->numError);
#endif
// m_FinishProgCtrl.SetRange32(0,pStat->total - pStat->numError);
m_FinishProgCtrl.SetPos(pStat->numFinished);
UpdateData(FALSE);
return 0;
}
//LRESULT CMainDlg::OnUpdateTotals(UINT nID, long x)
LRESULT CMainDlg::OnUpdateTotals(UINT nID, LPARAM x)
{
UpdateData(TRUE);
DetailStats temp;
DetailStats * pStat = &temp;
gData.GetDetailStats(&temp);
m_FilesChanged.Format(L"%ld",pStat->filesChanged);
m_FilesExamined.Format(L"%ld",pStat->filesExamined);
m_FilesUnchanged.Format(L"%ld",pStat->filesUnchanged);
m_DirectoriesChanged.Format(L"%ld",pStat->directoriesChanged);
m_DirectoriesExamined.Format(L"%ld",pStat->directoriesExamined);
m_DirectoriesUnchanged.Format(L"%ld",pStat->directoriesUnchanged);
m_SharesChanged.Format(L"%ld",pStat->sharesChanged);
m_SharesExamined.Format(L"%ld",pStat->sharesExamined);
m_SharesUnchanged.Format(L"%ld",pStat->sharesUnchanged);
m_MembersChanged.Format(L"%ld",pStat->membersChanged);
m_MembersExamined.Format(L"%ld",pStat->membersExamined);
m_MembersUnchanged.Format(L"%ld",pStat->membersUnchanged);
m_RightsChanged.Format(L"%ld",pStat->rightsChanged);
m_RightsExamined.Format(L"%ld",pStat->rightsExamined);
m_RightsUnchanged.Format(L"%ld",pStat->rightsUnchanged);
UpdateData(FALSE);
return 0;
}
void CMainDlg::OnOK()
{
CPropertyPage::OnOK();
}
void CMainDlg::WinHelp(DWORD dwData, UINT nCmd)
{
// TODO: Add your specialized code here and/or call the base class
CPropertyPage::WinHelp(dwData, nCmd);
}
BOOL CMainDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
LPNMHDR lpnm = (LPNMHDR) lParam;
switch (lpnm->code)
{
case PSN_HELP :
helpWrapper(m_hWnd, IDH_WINDOW_AGENT_SUMMARY);
break;
}
return CPropertyPage::OnNotify(wParam, lParam, pResult);
}
HRESULT GetHelpFileFullPath( BSTR *bstrHelp )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
USES_CONVERSION;
HRESULT hr = S_OK;
try
{
TRegKey key;
// open ADMT registry key
_com_util::CheckError(HRESULT_FROM_WIN32(key.Open(GET_STRING(IDS_DOMAIN_ADMIN_REGKEY), HKEY_LOCAL_MACHINE)));
// query ADMT folder path from registry value
_TCHAR szPath[_MAX_PATH];
_com_util::CheckError(HRESULT_FROM_WIN32(key.ValueGetStr(_T("Directory"), szPath, DIM(szPath))));
// if no path separator concatenate
if (szPath[_tcslen(szPath) - 1] != _T('\\'))
{
_tcscat(szPath, _T("\\"));
}
// concatenate help file name
CComBSTR bstrName;
bstrName.LoadString(IDS_HELPFILE);
_tcscat(szPath, OLE2CT(bstrName));
*bstrHelp = SysAllocString(T2COLE(szPath));
}
catch (_com_error& ce)
{
hr = ce.Error();
}
catch (...)
{
hr = E_FAIL;
}
return hr;
}
void helpWrapper(HWND hwndDlg, int t)
{
CComBSTR bstrTopic;
HRESULT hr = GetHelpFileFullPath( &bstrTopic);
if ( SUCCEEDED(hr) )
{
HWND h = HtmlHelp(hwndDlg, bstrTopic, HH_HELP_CONTEXT, t );
}
else
{
CString r,e;
r.LoadString(IDS_MSG_HELP);
e.LoadString(IDS_MSG_ERROR);
MessageBox(hwndDlg,r,e,MB_OK|MB_ICONSTOP);
}
}
BOOL CMainDlg::OnHelpInfo(HELPINFO* pHelpInfo)
{
helpWrapper(m_hWnd, IDH_WINDOW_AGENT_SUMMARY);
return CPropertyPage::OnHelpInfo(pHelpInfo);
}