SystemTray.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:7k
源码类别:

P2P编程

开发平台:

Visual C++

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