//+---------------------------------------------------------------------------- // // File: TrayIcon.h // // Module: CMMON32.EXE // // Synopsis: CTrayIcon class definition, which manages the connection tray icon // // Copyright (c) 1998-1999 Microsoft Corporation // // Author: fengsun Created 02/17/98 // //+---------------------------------------------------------------------------- #ifndef TRAYICON_H #define TRAYICON_H #include "ArrayPtr.h" class CIni; //+--------------------------------------------------------------------------- // // class CTrayIcon // // Description: A class to manage tray icon // // History: fengsun Created 2/17/98 // //---------------------------------------------------------------------------- class CTrayIcon { public: CTrayIcon(); ~CTrayIcon(); void SetIcon(HICON hIcon, HWND hwnd, UINT uMsg, UINT uID, const TCHAR* lpMsg = NULL); // void SetTip(const TCHAR* lpMsg); void RemoveIcon(); void CreateMenu(const CIni* pIniFile, DWORD dwMsgBase); void PopupMenu(int x, int y, HWND hWnd); const TCHAR* GetMenuCommand(int i) const; int GetAdditionalMenuNum() const; protected: HMENU m_hMenu; // the IDM_TARY menu in the resource HMENU m_hSubMenu; // the first sub menu of IDM_TRAY HWND m_hwnd; // the window handle for the tray icon UINT m_uID; // the ID of the tray icon HICON m_hIcon; // the tray icon handle CPtrArray m_CommandArray; // array of LPTSTR menu item command line }; inline void CTrayIcon::PopupMenu(int x, int y, HWND hWnd) { SetMenuDefaultItem(m_hSubMenu, IDMC_TRAY_STATUS, FALSE); MYVERIFY(TrackPopupMenu(m_hSubMenu,TPM_LEFTALIGN|TPM_RIGHTBUTTON,x,y,0,hWnd,NULL)); } inline const TCHAR* CTrayIcon::GetMenuCommand(int i) const { return (const TCHAR*) m_CommandArray[i]; } inline int CTrayIcon::GetAdditionalMenuNum() const { return m_CommandArray.GetSize(); } #endif