От: | Аноним | ||
Дата: | 13.04.06 13:03 | ||
Оценка: | 1 (1) |
#ifndef _NOTIFYICON_H_
#define _NOTIFYICON_H_
#ifdef _UNICODE
#define STDSTRING std::wstring
#else
#define STDSTRING std::string
#endif
class CNotifyIcon
{
private:
NOTIFYICONDATA m_Data;
public:
CNotifyIcon()
{
ZeroMemory(&m_Data,sizeof(NOTIFYICONDATA));
m_Data.cbSize=sizeof(NOTIFYICONDATA);
}
CNotifyIcon(const NOTIFYICONDATA& data)
{
ATLASSERT(&m_Data!=&data);
if (&m_Data!=&data)
m_Data=data;
m_Data.cbSize=sizeof(NOTIFYICONDATA);
}
~CNotifyIcon()
{
ShowIcon(NIM_DELETE);
}
void SetWindow(HWND hwnd)
{
ATLASSERT(hwnd!=NULL);
m_Data.hWnd=hwnd;
}
HWND GetWindow()
{
return m_Data.hWnd;
}
void SetIcon(HICON icon)
{
ATLASSERT(icon!=NULL);
m_Data.hIcon=icon;
}
HICON GetIcon()
{
return m_Data.hIcon;
}
void SetHandle(NOTIFYICONDATA data)
{
m_Data=data;
}
NOTIFYICONDATA GetHandle()
{
return m_Data;
}
void SetID(UINT id)
{
m_Data.uID=id;
}
UINT GetID()
{
return m_Data.uID;
}
void SetFlags(UINT flags)
{
m_Data.uFlags=flags;
}
UINT GetFlags()
{
return m_Data.uFlags;
}
void SetCallbackMessage(UINT message)
{
ATLASSERT(message>WM_USER);
m_Data.uCallbackMessage=message;
}
UINT GetCallbackMessage()
{
return m_Data.uCallbackMessage;
}
void SetTip(STDSTRING tip)
{
ATLASSERT(tip.size()>0);
#if (_WIN32_IE < 0x0500)
_tcsncpy(m_Data.szTip, tip.c_str(), 64);
#else
_tcsncpy(m_Data.szTip, tip.c_str(), 128);
#endif
}
STDSTRING GetTip()
{
return m_Data.szTip;
}
BOOL ShowIcon(DWORD message)
{
return Shell_NotifyIcon(message, &m_Data);
}
#if (_WIN32_IE >= 0x0500)
void SetTimeout(UINT timeout)
{
m_Data.uTimeout=timeout;
}
UINT GetTimeout()
{
return m_Data.uTimeout;
}
void SetInfo(STDSTRING info)
{
ATLASSERT(info.size()>0);
_tcsncpy(m_Data.szInfo, info.c_str(), 256);
}
STDSTRING GetInfo()
{
return m_Data.szInfo;
}
void SetInfoFlags(UINT flags)
{
m_Data.dwInfoFlags=flags;
}
UINT GetInfoFlags()
{
return m_Data.dwInfoFlags;
}
void SetInfoTitle(STDSTRING infotitle)
{
ATLASSERT(infotitle.size()>0);
_tcsncpy(m_Data.szInfoTitle, infotitle.c_str(), 64);
}
STDSTRING GetInfoTitle()
{
return m_Data.szInfoTitle;
}
#endif // #if (_WIN32_IE >= 0x0500)
};
#endif // #ifndef _NOTIFYICON_H_
CNotifyIcon m_NotifyIcon;
m_NotifyIcon.SetWindow(m_hWnd);
m_NotifyIcon.SetIcon(AtlLoadIconImage(IDR_MAINFRAME, LR_DEFAULTCOLOR,16,16));
m_NotifyIcon.SetCallbackMessage(WM_USER+1);
m_NotifyIcon.SetTimeout(30);
m_NotifyIcon.SetInfo(__T("Right click here for more info."));
m_NotifyIcon.SetFlags(NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_STATE | NIF_INFO);
m_NotifyIcon.SetInfoTitle(__T("Example Title"));
m_NotifyIcon.SetInfoFlags(NIIF_INFO);
m_NotifyIcon.SetTip(__T("Example"));
m_NotifyIcon.ShowIcon(NIM_ADD);