/*++ Copyright (C) 1996-1999 Microsoft Corporation Module Name: grphprop.cpp Abstract: Implementation of the graph property page class. --*/ #include #include #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(); }