📄 systemtray.h
字号:
#if !defined(AFX_SYSTEMTRAY_H__086B0CB1_89CD_11D2_9E52_52544C303E22__INCLUDED_)
#define AFX_SYSTEMTRAY_H__086B0CB1_89CD_11D2_9E52_52544C303E22__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SystemTray.h : header file
//
#include <afxtempl.h>
//
/////////////////////////////////////////////////////////////////////////////
struct MENUMESSAGE
{
WORD m_wMessage;//激活菜单的消息
UINT m_uMenuID;//菜单资源
int m_nSubMenu;//子菜单项
HMENU m_hMenu;//菜单句柄
HWND m_hMenuWnd;//处理菜单命令的窗口
};
// CSystemTray window
class CSystemTray : public CWnd
{
// Attributes
protected:
//@**#---2004-04-08 20:57:28 (注释: X Vince)---#**@
//typedef struct _NOTIFYICONDATA {
// DWORD cbSize;
// HWND hWnd;
// UINT uID;
// UINT uFlags;
// UINT uCallbackMessage;
// HICON hIcon;
// char szTip[64];
//} NOTIFYICONDATA, *PNOTIFYICONDATA;
NOTIFYICONDATA m_NotifyIconData;//托盘数据结构
UINT m_uMenuIDResource;//菜单资源
int m_nSubMenu;//子菜单项
HMENU m_hMenu;//托盘默认弹出的菜单
HWND m_hMenuWnd;//默认菜单关联的窗口
CArray<MENUMESSAGE,MENUMESSAGE&> m_arrMenuMessages;//菜单及其激活的消息
UINT m_uTimerID;//定时器ID;
UINT m_uInterval;//定时器时间间隔
CImageList* m_pIconList;//按顺序显示的图标(动画图标序列)
// Construction
public:
CSystemTray();
CSystemTray( CWnd* pOwner, UINT uCallbackMessage, HICON hIcon, UINT uID, char* pszTips = NULL );
virtual ~CSystemTray();
public:
void AddIcon();//将托盘图标加入到系统托盘区
void RemoveIcon();//将托盘图标移出系统托盘区
void ModifyIcon();//用新设置的值更新托盘
void SetOwnerWnd( HWND hWnd );//设置处理托盘消息的窗口句柄
HWND GetOwnerWnd()const;//读取处理托盘消息的窗口句柄
void SetTips( char* pszTips );//设置提示字符串,有效长度为64字节
CString GetTips()const;//读取提示字符串
void SetTrayIcon( HICON hIcon );//设置托盘图标
HICON GetTrayIcon()const;//读取托盘图标
void SetCallbackMessage( UINT uCallbackMessage );//设置托盘向拥有托盘的窗口发送的消息(自定义的消息)
UINT GetCallbackMessage()const;//返回托盘向拥有托盘的窗口发送的消息
void SetDefaultMenu( UINT nIDResource, int nSubMenu = 0 );//根据资源创建菜单
void SetSubMenu( int nSubMenu );//资源子菜单
void SetDefaultMenu( HMENU hMenu );//设置默认菜单
HMENU GetDefaultMenu()const;//读取默认菜单
void SetMenuWnd( HWND hWnd );//设置处理默认菜单消息的窗口(默认菜单关联的窗口)
HWND GetMenuWnd()const;//读取处理默认菜单消息的窗口(默认菜单关联的窗口)
void AddMenuMessage( WORD message, UINT uMenuID = 0, int nSubMenu = 0, HMENU hMenu = 0, HWND hMenuWnd = 0 );//添加激活默认菜单的消息
void RemoveMenuMessage( WORD message );//移出激活默认菜单的消息
MENUMESSAGE* GetMenuMessage( WORD message );//检测激活默认菜单的消息
void SetInterval( UINT uInterval);//设置定时器时间间隔
UINT GetInterval()const;//读取定时器时间间隔
BOOL PlayAnimation();//开始动画显示图标
BOOL StopAnimation();//停止动画显示图标
BOOL CreateIconList( CImageList* pIconList );//创建动画显示的图标序列
public:
//新添加的虚函数,创建窗口处理托盘消息
virtual BOOL CreateTray( CWnd* pOwner, UINT uCallbackMessage, HICON hIcon, UINT uID, char* pszTips = NULL );
protected:
//新添加的虚函数,处理指定的通知消息
virtual LRESULT OnTrayNotification( WPARAM uID, LPARAM lEvent );
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSystemTray)
protected:
virtual LRESULT WindowProc(UINT message,WPARAM wParam,LPARAM lParam);
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CSystemTray)
// NOTE - the ClassWizard will add and remove member functions here.
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SYSTEMTRAY_H__086B0CB1_89CD_11D2_9E52_52544C303E22__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -