windows-nt/Source/XPSP1/NT/admin/controls/smonctrl/grphprop.cpp
2020-09-26 16:20:57 +08:00

331 lines
8.3 KiB
C++

/*++
Copyright (C) 1996-1999 Microsoft Corporation
Module Name:
grphprop.cpp
Abstract:
Implementation of the graph property page class.
--*/
#include <assert.h>
#include <stdio.h>
#include "grphprop.h"
#include "utils.h"
#include "strids.h"
#include "unihelpr.h"
#include "winhelpr.h"
CGraphPropPage::CGraphPropPage()
{
m_uIDDialog = IDD_GRAPH_PROPP_DLG;
m_uIDTitle = IDS_GRAPH_PROPP_TITLE;
m_pszYaxisTitle = NULL;
m_pszGraphTitle = NULL;
}
CGraphPropPage::~CGraphPropPage()
{
delete m_pszYaxisTitle;
delete m_pszGraphTitle;
}
BOOL CGraphPropPage::InitControls()
{
HWND hwndItem = NULL;
hwndItem = GetDlgItem(m_hDlg, IDC_VERTICAL_MAX);
if ( NULL != hwndItem ) {
EditSetLimit(hwndItem, MAX_SCALE_DIGITS);
hwndItem = NULL;
}
hwndItem = GetDlgItem(m_hDlg, IDC_VERTICAL_MIN);
if ( NULL != hwndItem ) {
EditSetLimit(hwndItem, MAX_SCALE_DIGITS);
hwndItem = NULL;
}
hwndItem = GetDlgItem(m_hDlg, IDC_GRAPH_TITLE);
if ( NULL != hwndItem ) {
EditSetLimit(hwndItem, MAX_TITLE_CHARS);
hwndItem = NULL;
}
hwndItem = GetDlgItem(m_hDlg, IDC_YAXIS_TITLE);
if ( NULL != hwndItem ) {
EditSetLimit(hwndItem, MAX_TITLE_CHARS);
hwndItem = NULL;
}
return TRUE;
}
/*
* CGraphPropPage::GetProperties
*
*/
BOOL CGraphPropPage::GetProperties(void)
{
TCHAR szBuff[MAX_SCALE_DIGITS+1];
ISystemMonitor *pObj;
BSTR bstrTemp;
LPTSTR pszTemp;
USES_CONVERSION
if (m_cObjects == 0)
return FALSE;
pObj = m_ppISysmon[0];
pObj->get_ShowScaleLabels(&m_bLabels);
CheckDlgButton(m_hDlg, IDC_VERTICAL_LABELS, m_bLabels) ;
pObj->get_ShowVerticalGrid(&m_bVertGrid);
CheckDlgButton(m_hDlg, IDC_VERTICAL_GRID, m_bVertGrid) ;
pObj->get_ShowHorizontalGrid(&m_bHorzGrid);
CheckDlgButton(m_hDlg, IDC_HORIZONTAL_GRID, m_bHorzGrid) ;
pObj->get_MaximumScale(&m_iVertMax);
_stprintf(szBuff, TEXT("%d"), m_iVertMax) ;
SetDlgItemText(m_hDlg, IDC_VERTICAL_MAX, szBuff) ;
pObj->get_MinimumScale(&m_iVertMin);
_stprintf(szBuff, TEXT("%d"), m_iVertMin) ;
SetDlgItemText(m_hDlg, IDC_VERTICAL_MIN, szBuff) ;
pObj->get_YAxisLabel(&bstrTemp);
if (bstrTemp != NULL) {
pszTemp = W2T(bstrTemp);
m_pszYaxisTitle = new TCHAR[lstrlen(pszTemp)+1];
if (m_pszYaxisTitle) {
lstrcpy(m_pszYaxisTitle, pszTemp);
SetDlgItemText(m_hDlg, IDC_YAXIS_TITLE, m_pszYaxisTitle);
}
SysFreeString(bstrTemp);
}
pObj->get_GraphTitle(&bstrTemp);
if (bstrTemp != NULL) {
pszTemp = W2T(bstrTemp);
m_pszGraphTitle = new TCHAR[lstrlen(pszTemp)+1];
if (m_pszGraphTitle) {
lstrcpy(m_pszGraphTitle, pszTemp);
SetDlgItemText(m_hDlg, IDC_GRAPH_TITLE, m_pszGraphTitle);
}
SysFreeString(bstrTemp);
}
// Clear change flags
m_bLabelsChg = FALSE;
m_bVertGridChg = FALSE;
m_bHorzGridChg = FALSE;
m_bVertMinChg = FALSE;
m_bYaxisTitleChg = FALSE;
m_bGraphTitleChg = FALSE;
// Clear error flags
m_iErrVertMax = 0;
m_iErrVertMin = 0;
return TRUE;
}
/*
* CGraphPropPage::SetProperties
*
*/
BOOL CGraphPropPage::SetProperties(void)
{
ISystemMonitor *pObj;
INT iMsgId = 0;
USES_CONVERSION
// Get first object
if (m_cObjects == 0)
return FALSE;
pObj = m_ppISysmon[0];
// Check for invalid data
if (m_iErrVertMax) {
SetFocus(GetDlgItem(m_hDlg, IDC_VERTICAL_MAX));
iMsgId = m_iErrVertMax;
} else if (m_iErrVertMin) {
SetFocus(GetDlgItem(m_hDlg, IDC_VERTICAL_MIN));
iMsgId = m_iErrVertMin;
} else if (m_iVertMax <= m_iVertMin) {
SetFocus(GetDlgItem(m_hDlg, IDC_VERTICAL_MAX));
iMsgId = IDS_SCALE_ERR;
}
// on error, alert user and exit
if (iMsgId) {
MessageBox(m_hDlg, ResourceString(iMsgId), ResourceString(IDS_APP_NAME), MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}
// Set all changed properties
if (m_bLabelsChg)
pObj->put_ShowScaleLabels(m_bLabels);
if (m_bVertGridChg)
pObj->put_ShowVerticalGrid(m_bVertGrid);
if (m_bHorzGridChg)
pObj->put_ShowHorizontalGrid(m_bHorzGrid);
if (m_bVertMaxChg)
pObj->put_MaximumScale(m_iVertMax);
if (m_bVertMinChg)
pObj->put_MinimumScale(m_iVertMin);
if (m_bYaxisTitleChg)
pObj->put_YAxisLabel(T2W(m_pszYaxisTitle));
if (m_bGraphTitleChg)
pObj->put_GraphTitle(T2W(m_pszGraphTitle));
// Clear change flags
m_bLabelsChg = FALSE;
m_bVertGridChg = FALSE;
m_bHorzGridChg = FALSE;
m_bVertMinChg = FALSE;
m_bYaxisTitleChg = FALSE;
m_bGraphTitleChg = FALSE;
return TRUE;
}
void CGraphPropPage::DialogItemChange(WORD wID, WORD wMsg)
{
TCHAR szTitleBuf[MAX_TITLE_CHARS+1];
INT iTitleLen;
LPTSTR pszTemp;
BOOL fChange = FALSE;
BOOL fResult;
switch(wID) {
case IDC_VERTICAL_MAX:
if (wMsg == EN_CHANGE) {
fChange = TRUE;
m_bVertMaxChg = TRUE;
} else if ((wMsg == EN_KILLFOCUS) && m_bVertMaxChg) {
m_iVertMax = GetDlgItemInt(m_hDlg, IDC_VERTICAL_MAX, &fResult, FALSE);
if (!fResult) {
m_iErrVertMax = IDS_VERTMAX_ERR;
} else {
m_iErrVertMax = 0;
}
}
break ;
case IDC_VERTICAL_MIN:
if (wMsg == EN_CHANGE) {
fChange = TRUE;
m_bVertMinChg = TRUE;
} else if ((wMsg == EN_KILLFOCUS) && m_bVertMinChg) {
m_iVertMin = GetDlgItemInt(m_hDlg, IDC_VERTICAL_MIN, &fResult, FALSE);
if (!fResult) {
m_iErrVertMin = IDS_VERTMIN_ERR;
} else {
m_iErrVertMin = 0;
}
}
break ;
case IDC_VERTICAL_LABELS:
if (wMsg == BN_CLICKED)
{
m_bLabels = !m_bLabels;
m_bLabelsChg = TRUE;
fChange = TRUE;
}
break ;
case IDC_VERTICAL_GRID:
if (wMsg == BN_CLICKED)
{
m_bVertGrid = !m_bVertGrid;
m_bVertGridChg = TRUE;
fChange = TRUE;
}
break ;
case IDC_HORIZONTAL_GRID:
if (wMsg == BN_CLICKED)
{
m_bHorzGrid = !m_bHorzGrid;
m_bHorzGridChg = TRUE;
fChange = TRUE;
}
break ;
case IDC_YAXIS_TITLE:
if (wMsg == EN_CHANGE) {
fChange = TRUE;
m_bYaxisTitleChg = TRUE;
}
else if ((wMsg == EN_KILLFOCUS) && m_bYaxisTitleChg) {
iTitleLen = DialogText(m_hDlg, IDC_YAXIS_TITLE, szTitleBuf);
if (iTitleLen == 0) {
delete m_pszYaxisTitle;
m_pszYaxisTitle = NULL;
}
else {
pszTemp = new TCHAR[iTitleLen+1];
if (pszTemp) {
delete m_pszYaxisTitle;
m_pszYaxisTitle = pszTemp;
lstrcpy(m_pszYaxisTitle, szTitleBuf);
}
}
}
break ;
case IDC_GRAPH_TITLE:
if (wMsg == EN_CHANGE) {
fChange = TRUE;
m_bGraphTitleChg = TRUE;
}
else if ((wMsg == EN_KILLFOCUS) && m_bGraphTitleChg) {
iTitleLen = DialogText(m_hDlg, IDC_GRAPH_TITLE, szTitleBuf);
if (iTitleLen == 0) {
delete m_pszGraphTitle;
m_pszGraphTitle = NULL;
}
else {
pszTemp = new TCHAR[iTitleLen+1];
if (pszTemp) {
delete m_pszGraphTitle;
m_pszGraphTitle = pszTemp;
lstrcpy(m_pszGraphTitle, szTitleBuf);
}
}
}
break ;
}
if (fChange)
SetChange();
}