SystemTray.h
上传用户:deligs
上传日期:2007-01-08
资源大小:43k
文件大小:6k
源码类别:

网络编程

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // SystemTray.h : header file
  3. //
  4. // Written by Chris Maunder (cmaunder@mail.com)
  5. // Copyright (c) 1998.
  6. //
  7. // This code may be used in compiled form in any way you desire. This
  8. // file may be redistributed unmodified by any means PROVIDING it is 
  9. // not sold for profit without the authors written consent, and 
  10. // providing that this notice and the authors name is included. If 
  11. // the source code in  this file is used in any commercial application 
  12. // then acknowledgement must be made to the author of this file 
  13. // (in whatever form you wish).
  14. //
  15. // This file is provided "as is" with no expressed or implied warranty.
  16. //
  17. // Expect bugs.
  18. // 
  19. // Please use and enjoy. Please let me know of any bugs/mods/improvements 
  20. // that you have found/implemented and I will fix/incorporate them into this
  21. // file. 
  22. #ifndef _INCLUDED_SYSTEMTRAY_H_
  23. #define _INCLUDED_SYSTEMTRAY_H_
  24. #ifdef NOTIFYICONDATA_V1_SIZE   // If NOTIFYICONDATA_V1_SIZE, then we can use fun stuff
  25. #define SYSTEMTRAY_USEW2K
  26. #else
  27. #define NIIF_NONE 0
  28. #endif
  29. #define WM_ICON_NOTIFY WM_APP+100
  30. #ifndef SYSTEMTRAY_USEW2K
  31. #define NIIF_WARNING 0
  32. #endif
  33. // #include <afxwin.h>
  34. #include <afxtempl.h>
  35. #include <afxdisp.h>    // COleDateTime
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CSystemTray window
  38. class CSystemTray : public CWnd
  39. {
  40. // Construction/destruction
  41. public:
  42.     CSystemTray();
  43.     CSystemTray(CWnd* pWnd, UINT uCallbackMessage, LPCTSTR szTip, HICON icon, UINT uID, 
  44.                 BOOL bhidden = FALSE,
  45.                 LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL, 
  46.                 DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10);
  47.     virtual ~CSystemTray();
  48. BOOL m_bMenuItemSuspendEnabled;
  49. BOOL m_bMenuItemGrayed;
  50. BOOL m_bMenuItemConfigGrayed;
  51.     DECLARE_DYNAMIC(CSystemTray)
  52. // Operations
  53. public:
  54.     BOOL Enabled() { return m_bEnabled; }
  55.     BOOL Visible() { return !m_bHidden; }
  56.     // Create the tray icon
  57.     Create(CWnd* pParent, UINT uCallbackMessage, LPCTSTR szTip, HICON icon, UINT uID,
  58.            BOOL bHidden = FALSE,
  59.            LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL, 
  60.            DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10);
  61.     // Change or retrieve the Tooltip text
  62.     BOOL    SetTooltipText(LPCTSTR pszTooltipText);
  63.     BOOL    SetTooltipText(UINT nID);
  64.     CString GetTooltipText() const;
  65.     // Change or retrieve the icon displayed
  66.     BOOL  SetIcon(HICON hIcon);
  67.     BOOL  SetIcon(LPCTSTR lpszIconName);
  68.     BOOL  SetIcon(UINT nIDResource);
  69.     BOOL  SetStandardIcon(LPCTSTR lpIconName);
  70.     BOOL  SetStandardIcon(UINT nIDResource);
  71.     HICON GetIcon() const;
  72.     void  SetFocus();
  73.     BOOL  HideIcon();
  74.     BOOL  ShowIcon();
  75.     BOOL  AddIcon();
  76.     BOOL  RemoveIcon();
  77.     BOOL  MoveToRight();
  78.     BOOL ShowBalloon(LPCTSTR szText, LPCTSTR szTitle = NULL,
  79.                      DWORD dwIcon = NIIF_NONE, UINT uTimeout = 10);
  80.     // For icon animation
  81.     BOOL  SetIconList(UINT uFirstIconID, UINT uLastIconID); 
  82.     BOOL  SetIconList(HICON* pHIconList, UINT nNumIcons); 
  83.     BOOL  Animate(UINT nDelayMilliSeconds, int nNumSeconds = -1);
  84.     BOOL  StepAnimation();
  85.     BOOL  StopAnimation();
  86.     // Change menu default item
  87.     void GetMenuDefaultItem(UINT& uItem, BOOL& bByPos);
  88.     BOOL SetMenuDefaultItem(UINT uItem, BOOL bByPos);
  89.     // Change or retrieve the window to send notification messages to
  90.     BOOL  SetNotificationWnd(CWnd* pNotifyWnd);
  91.     CWnd* GetNotificationWnd() const;
  92.     // Change or retrieve the window to send menu commands to
  93.     BOOL  SetTargetWnd(CWnd* pTargetWnd);
  94.     CWnd* GetTargetWnd() const;
  95.     // Change or retrieve  notification messages sent to the window
  96.     BOOL  SetCallbackMessage(UINT uCallbackMessage);
  97.     UINT  GetCallbackMessage() const;
  98.     UINT  GetTimerID() const   { return m_nTimerID; }
  99. // Static functions
  100. public:
  101.     static void MinimiseToTray(CWnd* pWnd);
  102.     static void MaximiseFromTray(CWnd* pWnd);
  103. public:
  104.     // Default handler for tray notification message
  105.     virtual LRESULT OnTrayNotification(WPARAM uID, LPARAM lEvent);
  106. // Overrides
  107.     // ClassWizard generated virtual function overrides
  108.     //{{AFX_VIRTUAL(CSystemTray)
  109. protected:
  110. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  111. //}}AFX_VIRTUAL
  112. // Implementation
  113. protected:
  114.     void Initialise();
  115.     void InstallIconPending();
  116. // Implementation
  117. protected:
  118.     NOTIFYICONDATA  m_tnd;
  119.     BOOL            m_bEnabled;         // does O/S support tray icon?
  120.     BOOL            m_bHidden;          // Has the icon been hidden?
  121.     BOOL            m_bRemoved;         // Has the icon been removed?
  122.     BOOL            m_bShowIconPending; // Show the icon once tha taskbar has been created
  123.     BOOL            m_bWin2K;           // Use new W2K features?
  124. CWnd*           m_pTargetWnd;       // Window that menu commands are sent
  125.     CArray<HICON, HICON> m_IconList;
  126.     UINT         m_uIDTimer;
  127.     int          m_nCurrentIcon;
  128.     COleDateTime m_StartTime;
  129.     int          m_nAnimationPeriod;
  130.     HICON        m_hSavedIcon;
  131.     UINT         m_DefaultMenuItemID;
  132.     BOOL         m_DefaultMenuItemByPos;
  133. UINT         m_uCreationFlags;
  134. // Static data
  135. protected:
  136.     static BOOL RemoveTaskbarIcon(CWnd* pWnd);
  137.     static const UINT m_nTimerID;
  138.     static UINT  m_nMaxTooltipLength;
  139.     static const UINT m_nTaskbarCreatedMsg;
  140.     static CWnd  m_wndInvisible;
  141.     static BOOL GetW2K();
  142. #ifndef _WIN32_WCE
  143.     static CRect GetTrayWndRect();
  144. #endif
  145. // Generated message map functions
  146. protected:
  147. //{{AFX_MSG(CSystemTray)
  148. afx_msg void OnTimer(UINT nIDEvent);
  149. //}}AFX_MSG
  150. #ifndef _WIN32_WCE
  151. afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
  152. #endif
  153.     void OnTaskbarCreated(WPARAM wParam, LPARAM lParam);
  154.     DECLARE_MESSAGE_MAP()
  155. };
  156. #endif
  157. /////////////////////////////////////////////////////////////////////////////