#ifndef MY_NOTIFYICONDATA
#define MY_NOTIFYICONDATA
Tray notification definitions
typedef struct _NOTIFYICONDATAA_M {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
CHAR szTip[128];
DWORD dwState;
DWORD dwStateMask;
CHAR szInfo[256];
union {
UINT uTimeout;
UINT uVersion;
} DUMMYUNIONNAME;
CHAR szInfoTitle[64];
DWORD dwInfoFlags;
GUID guidItem;
} NOTIFYICONDATAA_M, *PNOTIFYICONDATAA_M;
#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA_M, szTip[64])
#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA_M, guidItem)
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
#define NIN_SELECT (WM_USER + 0)
#define NINF_KEY 0x1
#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
#define NIN_BALLOONSHOW (WM_USER + 2)
#define NIN_BALLOONHIDE (WM_USER + 3)
#define NIN_BALLOONTIMEOUT (WM_USER + 4)
#define NIN_BALLOONUSERCLICK (WM_USER + 5)
#define NIM_ADD 0x00000000
#define NIM_MODIFY 0x00000001
#define NIM_DELETE 0x00000002
#define NIM_SETFOCUS 0x00000003
#define NIM_SETVERSION 0x00000004
#define NOTIFYICON_VERSION 3
#define NIF_MESSAGE 0x00000001
#define NIF_ICON 0x00000002
#define NIF_TIP 0x00000004
#define NIF_STATE 0x00000008
#define NIF_INFO 0x00000010
#if (_WIN32_IE >= 0x600)
#define NIF_GUID 0x00000020
#endif
#define NIS_HIDDEN 0x00000001
#define NIS_SHAREDICON 0x00000002
// says this is the source of a shared icon
// Notify Icon Infotip flags
#define NIIF_NONE 0x00000000
// icon flags are mutually exclusive
// and take only the lowest 2 bits
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
#define NIIF_ICON_MASK 0x0000000F
#if (_WIN32_IE >= 0x0501)
#define NIIF_NOSOUND 0x00000010
#endif
#endif
#if 0 //示例代码
int cbSize=0;
if(IsVista || IsWin7)
{
cbSize = sizeof(NOTIFYICONDATAA_M);
}
else if(IsWinXP)
{
cbSize = sizeof(_NOTIFYICONDATAA_M);
}
else if(IsWin2K)
{
cbSize = NOTIFYICONDATA_V2_SIZE;
}
else
{
cbSize = NOTIFYICONDATA_V1_SIZE;
}
NotifyIconData=(NOTIFYICONDATAA*)malloc(cbSize);
ZeroMemory(NotifyIconData, sizeof(*NotifyIconData));
NotifyIconData->cbSize=cbSize;
NotifyIconData->hWnd=this->m_hWnd;
NotifyIconData->hIcon=AfxGetApp( )->LoadIcon(IDI_ICON1);
NotifyIconData->uFlags=NIF_MESSAGE | NIF_ICON | NIF_TIP |NIF_INFO;
NotifyIconData->uID=1000;
((NOTIFYICONDATAA_M*)NotifyIconData)->dwInfoFlags=NIIF_INFO;
((NOTIFYICONDATAA_M*)NotifyIconData)->uTimeout=1000;
// NotifyIconData.uVersion=NOTIFYICON_VERSION;
((NOTIFYICONDATAA_M*)NotifyIconData)->dwState=NIS_SHAREDICON;/
((NOTIFYICONDATAA_M*)NotifyIconData)->dwStateMask=NIS_SHAREDICON;
_tcscpy(NotifyIconData->szTip,szBallomTipTitle);
_tcscpy(((NOTIFYICONDATAA_M*)NotifyIconData)->szInfoTitle,szBallomTipTitle);//,_tcslen(szBallomTipTitle));//szBallomTipTitle
_tcscpy(((NOTIFYICONDATAA_M*)NotifyIconData)->szInfo,szBallomTip);
Shell_NotifyIcon(NIM_ADD,NotifyIconData);
#endif