Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
2.9 KiB

//----------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997
//
// File: trayagnt.h
//
// Contents: tray notification agent
//
// Classes:
//
// Functions:
//
// History: 01-14-1997 rayen (Raymond Endres) Created
//
//----------------------------------------------------------------------------
#ifndef TRAYAGNT_H_
#define TRAYAGNT_H_
//----------------------------------------------------------------------------
// Tray Agent object
//----------------------------------------------------------------------------
class CTrayAgent : public INotificationSink
{
protected:
ULONG m_cRef; // OLE ref count
#ifdef DEBUG
DWORD m_AptThreadId; //
#endif
private:
~CTrayAgent(void);
public:
CTrayAgent(void);
// IUnknown members
STDMETHODIMP QueryInterface(REFIID riid, void **punk);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
//
// INotificationSink member(s)
//
STDMETHODIMP OnNotification(
LPNOTIFICATION pNotification,
LPNOTIFICATIONREPORT pNotificationReport,
DWORD dwReserved
);
};
//----------------------------------------------------------------------------
// TrayUI object (not COM object)
//----------------------------------------------------------------------------
#define TRAYUI_CLOGS 128
typedef struct LogEntryType {
FILETIME ftLog;
CLSID clsidAgent;
CLSID startCookie;
BSTR bstrStatus;
} * PLogEntry;
class CTrayUI
{
private:
HWND m_hwnd; // hidden window
DWORD m_fUpdatingTrayIcon;// Is updating?
#if WANT_REGISTRY_LOG
int m_cLogs; // count of valid logs;
int m_cLogPtr; // pointer to the replacing candidate.
// Round Robin Algorithm;
LogEntryType m_aLogEntry[TRAYUI_CLOGS];
#endif
LONG m_cUpdates; // count of ongoing updates
#ifdef DEBUG
DWORD m_AptThreadId; //
#endif
private:
STDMETHODIMP SetTrayIcon(DWORD fUpdating);
STDMETHODIMP SyncLogWithReg(int, BOOL);
public:
CTrayUI(void);
~CTrayUI(void);
STDMETHODIMP InitTrayUI(void);
STDMETHODIMP DestroyTrayUI(void);
STDMETHODIMP OpenSubscriptionFolder(void);
STDMETHODIMP OpenContextMenu(POINT *);
STDMETHODIMP UpdateNow(INotification *);
STDMETHODIMP ConfigChanged(void);
STDMETHODIMP OnBeginReport(INotification *);
STDMETHODIMP OnEndReport(INotification *);
#if WANT_REGISTRY_LOG
STDMETHODIMP AddToLog(BSTR bstrLog, CLSID clsidAgent, CLSID startCookie);
STDMETHODIMP LoadLogFromReg(void);
STDMETHODIMP SaveLogToReg(void);
#endif
};
#endif TRAYAGNT_H_