转载:http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c8115/How-to-Implement-a-Mouse-HoverLeave-Message-on-the-System-Tray.htm
一、托盘图标闪烁
1.准备两张ico图片用来闪烁的时候交换,然后加上一个timer定时器,来控制图片交换的速度.
2.设置一个变量来控制两张图片的显示顺序,最好用bool类型的变量,第一张图片显示后第一张就变为false,第二张则变为true,如此反复交换.
我的项目是使用的是Duilib
代码:
m_uNotfyIconTime = SetTimer(this->GetHWND(),NOTIFYICONTIME,,NULL);
初始化为:m_bIsIcon = false;
void CxxxWnd::Shinrk()
{
if(m_bIsIcon)
{
HICON hicon =LoadIcon(CPaintManagerUI::GetInstance(),MAKEINTRESOURCE(IDI_ICON1));
m_nid.hIcon = hicon;
int m = Shell_NotifyIcon(NIM_MODIFY,&m_nid);//透明
m_bIsIcon = false;
}
else
{
HICON hicon = LoadIcon(CPaintManagerUI::GetInstance(),MAKEINTRESOURCE(IDI_ICON));
m_nid.hIcon = hicon;
int m = Shell_NotifyIcon(NIM_MODIFY,&m_nid);
m_bIsIcon = true;
}
}
case WM_TIMER:
lRes = OnTimer(uMsg,wParam,lParam,bHandled);
case NOTIFYICONTIME:
Shinrk();
break;
悬停托盘显示窗口demo