/*++ Copyright (C) 1998-1999 Microsoft Corporation Module Name: Logwarnd.cpp Abstract: Implementation of the Log Type mismatch warning dialog. --*/ #include "stdafx.h" #include #include "smlogcfg.h" #include "smtraceq.h" #include "provprop.h" #include "logwarnd.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif static ULONG s_aulHelpIds[] = { IDC_LWARN_CHECK_NO_MORE_LOG_TYPE, IDH_CHECK_NO_MORE, 0,0 }; ///////////////////////////////////////////////////////////////////////////// // CLogwarnd dialog CLogWarnd::CLogWarnd(CWnd* pParent /*=NULL*/) : CDialog(CLogWarnd::IDD, pParent) { //{{AFX_DATA_INIT(CLogWarnd) m_CheckNoMore = FALSE; m_ErrorMsg = 0 ; m_dwLogType = 0L; //}}AFX_DATA_INIT } void CLogWarnd::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLogWarnd) DDX_Check(pDX, IDC_LWARN_CHECK_NO_MORE_LOG_TYPE, m_CheckNoMore); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLogWarnd, CDialog) //{{AFX_MSG_MAP(CLogWarnd) ON_BN_CLICKED(IDC_LWARN_CHECK_NO_MORE_LOG_TYPE,OnCheckNoMoreLogType) ON_WM_HELPINFO() ON_WM_CONTEXTMENU() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLogWarnd message handlers void CLogWarnd::OnOK() { UpdateData(TRUE); if (m_CheckNoMore) { long nErr; HKEY hKey; DWORD dwWarnFlag; DWORD dwDataSize; DWORD dwDisposition; WCHAR RegValName[MAX_PATH]; hKey = m_hKey; dwWarnFlag = m_CheckNoMore; switch (m_dwLogType){ case SLQ_COUNTER_LOG: StringCchPrintf ( RegValName, MAX_PATH,L"NoWarnCounterLog"); break; case SLQ_ALERT: StringCchPrintf ( RegValName, MAX_PATH,L"NoWarnAlertLog"); break; } nErr = RegCreateKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\PerformanceLogsAndAlerts", 0, L"REG_DWORD", REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, NULL, &hKey, &dwDisposition); if( nErr == ERROR_SUCCESS ) { dwDataSize = sizeof(DWORD); nErr = RegSetValueEx(hKey, RegValName, NULL, REG_DWORD, (LPBYTE) &dwWarnFlag, dwDataSize ); if( ERROR_SUCCESS != nErr ) { DisplayError( GetLastError(), L"Close PerfLog User Key failed" ); } RegCloseKey(hKey); } } CDialog::OnOK(); } BOOL CLogWarnd::OnInitDialog() { CString cstrMessage , cstrWrongLog; SetWindowText ( m_strTitle ); switch (m_dwLogType){ case SLQ_COUNTER_LOG: cstrWrongLog.LoadString(IDS_COUNTER_LOG) ; break; case SLQ_ALERT: cstrWrongLog.LoadString(IDS_ALERT_LOG); break; case SMONCTRL_LOG: cstrWrongLog.LoadString( IDS_SMCTRL_LOG ); break; default: cstrWrongLog.Format(L""); break; } switch(m_ErrorMsg){ case ID_ERROR_COUNTER_LOG: cstrMessage.Format(IDS_ERRMSG_COUNTER_LOG,cstrWrongLog ); break; case ID_ERROR_ALERT_LOG: cstrMessage.Format(IDS_ERRMSG_ALERT_LOG,cstrWrongLog); break; case ID_ERROR_TRACE_LOG: cstrMessage.Format(IDS_ERRMSG_TRACE_LOG,cstrWrongLog); break; case ID_ERROR_SMONCTRL_LOG: cstrMessage.Format(IDS_ERRMSG_SMCTRL_LOG,cstrWrongLog); break; } ::SetWindowText((GetDlgItem(IDC_LWARN_MSG_WARN))->m_hWnd, cstrMessage); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } VOID CLogWarnd::OnCheckNoMoreLogType() { } BOOL CLogWarnd::OnHelpInfo(HELPINFO* pHelpInfo) { if ( pHelpInfo->iCtrlId >= IDC_LWARN_FIRST_HELP_CTRL_ID ) { InvokeWinHelp(WM_HELP, NULL, (LPARAM)pHelpInfo, m_strContextHelpFile, s_aulHelpIds); } return TRUE; } void CLogWarnd::OnContextMenu(CWnd* pWnd, CPoint /* point */) { InvokeWinHelp(WM_CONTEXTMENU, (WPARAM)(pWnd->m_hWnd), NULL, m_strContextHelpFile, s_aulHelpIds); return; }