windows-nt/Source/XPSP1/NT/admin/pchealth/helpctr/rc/safincitrac/safchannelnotifyincident.cpp
2020-09-26 16:20:57 +08:00

65 lines
1.7 KiB
C++

// SAFChannelNotifyIncident.cpp : Implementation of CSAFChannelNotifyIncident
#include "stdafx.h"
#include "obj\i386\SAFInciTrac.h"
#include "SAFChannelNotifyIncident.h"
/////////////////////////////////////////////////////////////////////////////
// CSAFChannelNotifyIncident
UINT CSAFChannelNotifyIncident::m_nRefCount = 0;
CSAFInciTrayIcon CSAFChannelNotifyIncident::m_TrayIcon(CSAFChannelNotifyIncident::m_nRefCount);
STDMETHODIMP CSAFChannelNotifyIncident::onIncidentAdded(ISAFChannel *ch, ISAFIncidentItem *inc, long n)
{
::MessageBox(NULL,L"In Added",NULL,MB_OK);
m_nRefCount++;
if (CSAFInciTrayIcon::dwThreadId == 0)
{
HANDLE hnd = CreateThread(NULL,0,CSAFInciTrayIcon::SAFInciTrayIconThreadFn,&m_TrayIcon,0,&CSAFInciTrayIcon::dwThreadId);
if (hnd)
CloseHandle(hnd);
}
else
{
m_TrayIcon.ChangeToolTip();
}
return S_OK;
}
STDMETHODIMP CSAFChannelNotifyIncident::onIncidentRemoved(ISAFChannel *ch, ISAFIncidentItem *inc, long n)
{
::MessageBox(NULL,L"In Remove",NULL,MB_OK);
if (m_nRefCount)
{
m_nRefCount--;
m_TrayIcon.ChangeToolTip();
if (m_nRefCount == 0)
{
m_TrayIcon.RemoveTrayIcon();
if (!PostThreadMessage(CSAFInciTrayIcon::dwThreadId,WM_QUIT,0,0))
{
DWORD dwError = GetLastError();
TCHAR strBuf[100];
wsprintf(strBuf,_T("The error is %d"),dwError);
::MessageBox(NULL,strBuf,NULL,MB_OK);
}
CSAFInciTrayIcon::dwThreadId = 0;
}
}
return S_OK;
}
STDMETHODIMP CSAFChannelNotifyIncident::onIncidentUpdated(ISAFChannel *ch, ISAFIncidentItem *inc, long n)
{
m_TrayIcon.m_wIconId = IDI_ALERTINCIDENT;
m_TrayIcon.ModifyIcon();
return S_OK;
}
STDMETHODIMP CSAFChannelNotifyIncident::onChannelUpdated(ISAFChannel *ch, long dwCode, long n)
{
// m_TrayIcon.ChangeIcon(IDI_NORMALINCIDENT);
return S_OK;
}