« 上一篇下一篇 »

C++ TrayIcon类

代码如下:
#pragma once
/*////////////////////////////////////////////////////////////////
 
28/11/2006 william 

/////////////////////////////////////////////////////////////////*/
class ShellIcon
{
BOOL m_bAdd;
private:
NOTIFYICONDATA lpData;

public:
ShellIcon(LPCTSTR szToolTip, HWND hwnd, UINT uCallbackMessage)
{
lpData.cbSize =sizeof(NOTIFYICONDATA);
lpData.hWnd = hwnd;
lpData.uCallbackMessage = uCallbackMessage;
lpData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
lpData.hIcon = AfxGetApp()->LoadIcon (MAKEINTRESOURCE(IDR_MAINFRAME));
_tcscpy(lpData.szTip, szToolTip);
}
~ShellIcon()
{
RemoveIconFromTray();
}
public:
BOOL AddIconToTray();
BOOL RemoveIconFromTray();
BOOL ChangeIcon(HICON hico);
BOOL HideIcon();
BOOL ShowIcon();
BOOL SetToolTip(LPCTSTR lpToolTip);
BOOL IsIconAlreayExist();
};
BOOL ShellIcon::IsIconAlreayExist()
{
return m_bAdd;
}
BOOL ShellIcon::AddIconToTray ()
{
m_bAdd = TRUE;
return Shell_NotifyIcon(NIM_ADD, &lpData);
}
BOOL ShellIcon::RemoveIconFromTray ()
{
m_bAdd = FALSE;
return Shell_NotifyIcon(NIM_DELETE, &lpData);
}
BOOL ShellIcon::HideIcon ()
{
lpData.uFlags = NIF_ICON;
return Shell_NotifyIcon (NIM_DELETE, &lpData);
}
BOOL ShellIcon::ShowIcon ()
{
lpData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
return Shell_NotifyIcon(NIM_ADD, &lpData);
}
BOOL ShellIcon::ChangeIcon (HICON hico)
{
lpData.hIcon = hico;
return Shell_NotifyIcon(NIM_MODIFY, &lpData);
}
BOOL ShellIcon::SetToolTip (LPCTSTR lpToolTip)
{
lpData.uFlags = NIF_TIP;
_tcscpy(lpData.szTip, lpToolTip);
return Shell_NotifyIcon(NIM_MODIFY, &lpData);
}