SystemTray.h
上传用户:deligs
上传日期:2007-01-08
资源大小:43k
文件大小:6k
- /////////////////////////////////////////////////////////////////////////////
- // SystemTray.h : header file
- //
- // Written by Chris Maunder (cmaunder@mail.com)
- // Copyright (c) 1998.
- //
- // This code may be used in compiled form in any way you desire. This
- // file may be redistributed unmodified by any means PROVIDING it is
- // not sold for profit without the authors written consent, and
- // providing that this notice and the authors name is included. If
- // the source code in this file is used in any commercial application
- // then acknowledgement must be made to the author of this file
- // (in whatever form you wish).
- //
- // This file is provided "as is" with no expressed or implied warranty.
- //
- // Expect bugs.
- //
- // Please use and enjoy. Please let me know of any bugs/mods/improvements
- // that you have found/implemented and I will fix/incorporate them into this
- // file.
- #ifndef _INCLUDED_SYSTEMTRAY_H_
- #define _INCLUDED_SYSTEMTRAY_H_
- #ifdef NOTIFYICONDATA_V1_SIZE // If NOTIFYICONDATA_V1_SIZE, then we can use fun stuff
- #define SYSTEMTRAY_USEW2K
- #else
- #define NIIF_NONE 0
- #endif
- #define WM_ICON_NOTIFY WM_APP+100
- #ifndef SYSTEMTRAY_USEW2K
- #define NIIF_WARNING 0
- #endif
- // #include <afxwin.h>
- #include <afxtempl.h>
- #include <afxdisp.h> // COleDateTime
- /////////////////////////////////////////////////////////////////////////////
- // CSystemTray window
- class CSystemTray : public CWnd
- {
- // Construction/destruction
- public:
- CSystemTray();
- CSystemTray(CWnd* pWnd, UINT uCallbackMessage, LPCTSTR szTip, HICON icon, UINT uID,
- BOOL bhidden = FALSE,
- LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL,
- DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10);
- virtual ~CSystemTray();
- BOOL m_bMenuItemSuspendEnabled;
- BOOL m_bMenuItemGrayed;
- BOOL m_bMenuItemConfigGrayed;
- DECLARE_DYNAMIC(CSystemTray)
- // Operations
- public:
- BOOL Enabled() { return m_bEnabled; }
- BOOL Visible() { return !m_bHidden; }
- // Create the tray icon
- Create(CWnd* pParent, UINT uCallbackMessage, LPCTSTR szTip, HICON icon, UINT uID,
- BOOL bHidden = FALSE,
- LPCTSTR szBalloonTip = NULL, LPCTSTR szBalloonTitle = NULL,
- DWORD dwBalloonIcon = NIIF_NONE, UINT uBalloonTimeout = 10);
- // Change or retrieve the Tooltip text
- BOOL SetTooltipText(LPCTSTR pszTooltipText);
- BOOL SetTooltipText(UINT nID);
- CString GetTooltipText() const;
- // Change or retrieve the icon displayed
- BOOL SetIcon(HICON hIcon);
- BOOL SetIcon(LPCTSTR lpszIconName);
- BOOL SetIcon(UINT nIDResource);
- BOOL SetStandardIcon(LPCTSTR lpIconName);
- BOOL SetStandardIcon(UINT nIDResource);
- HICON GetIcon() const;
- void SetFocus();
- BOOL HideIcon();
- BOOL ShowIcon();
- BOOL AddIcon();
- BOOL RemoveIcon();
- BOOL MoveToRight();
- BOOL ShowBalloon(LPCTSTR szText, LPCTSTR szTitle = NULL,
- DWORD dwIcon = NIIF_NONE, UINT uTimeout = 10);
- // For icon animation
- BOOL SetIconList(UINT uFirstIconID, UINT uLastIconID);
- BOOL SetIconList(HICON* pHIconList, UINT nNumIcons);
- BOOL Animate(UINT nDelayMilliSeconds, int nNumSeconds = -1);
- BOOL StepAnimation();
- BOOL StopAnimation();
- // Change menu default item
- void GetMenuDefaultItem(UINT& uItem, BOOL& bByPos);
- BOOL SetMenuDefaultItem(UINT uItem, BOOL bByPos);
- // Change or retrieve the window to send notification messages to
- BOOL SetNotificationWnd(CWnd* pNotifyWnd);
- CWnd* GetNotificationWnd() const;
- // Change or retrieve the window to send menu commands to
- BOOL SetTargetWnd(CWnd* pTargetWnd);
- CWnd* GetTargetWnd() const;
- // Change or retrieve notification messages sent to the window
- BOOL SetCallbackMessage(UINT uCallbackMessage);
- UINT GetCallbackMessage() const;
- UINT GetTimerID() const { return m_nTimerID; }
- // Static functions
- public:
- static void MinimiseToTray(CWnd* pWnd);
- static void MaximiseFromTray(CWnd* pWnd);
- public:
- // Default handler for tray notification message
- virtual LRESULT OnTrayNotification(WPARAM uID, LPARAM lEvent);
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CSystemTray)
- protected:
- virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
- //}}AFX_VIRTUAL
- // Implementation
- protected:
- void Initialise();
- void InstallIconPending();
- // Implementation
- protected:
- NOTIFYICONDATA m_tnd;
- BOOL m_bEnabled; // does O/S support tray icon?
- BOOL m_bHidden; // Has the icon been hidden?
- BOOL m_bRemoved; // Has the icon been removed?
- BOOL m_bShowIconPending; // Show the icon once tha taskbar has been created
- BOOL m_bWin2K; // Use new W2K features?
- CWnd* m_pTargetWnd; // Window that menu commands are sent
- CArray<HICON, HICON> m_IconList;
- UINT m_uIDTimer;
- int m_nCurrentIcon;
- COleDateTime m_StartTime;
- int m_nAnimationPeriod;
- HICON m_hSavedIcon;
- UINT m_DefaultMenuItemID;
- BOOL m_DefaultMenuItemByPos;
- UINT m_uCreationFlags;
- // Static data
- protected:
- static BOOL RemoveTaskbarIcon(CWnd* pWnd);
- static const UINT m_nTimerID;
- static UINT m_nMaxTooltipLength;
- static const UINT m_nTaskbarCreatedMsg;
- static CWnd m_wndInvisible;
- static BOOL GetW2K();
- #ifndef _WIN32_WCE
- static CRect GetTrayWndRect();
- #endif
- // Generated message map functions
- protected:
- //{{AFX_MSG(CSystemTray)
- afx_msg void OnTimer(UINT nIDEvent);
- //}}AFX_MSG
- #ifndef _WIN32_WCE
- afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
- #endif
- void OnTaskbarCreated(WPARAM wParam, LPARAM lParam);
- DECLARE_MESSAGE_MAP()
- };
- #endif
- /////////////////////////////////////////////////////////////////////////////