VC++实现在系统托盘来新消息闪烁,鼠标悬停显示窗口

转载: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

代码:

1 m_uNotfyIconTime = SetTimer(this->GetHWND(),NOTIFYICONTIME,500,NULL);
1 初始化为:m_bIsIcon = false; 
 1 void CxxxWnd::Shinrk()
 2 {
 3     if(m_bIsIcon)
 4     {
 5         HICON hicon =LoadIcon(CPaintManagerUI::GetInstance(),MAKEINTRESOURCE(IDI_ICON1));
 6         m_nid.hIcon = hicon;
 7         int m = Shell_NotifyIcon(NIM_MODIFY,&m_nid);//透明
 8         m_bIsIcon = false;
 9     }
10     else
11     {
12         HICON hicon = LoadIcon(CPaintManagerUI::GetInstance(),MAKEINTRESOURCE(IDI_ICON));
13         m_nid.hIcon = hicon;
14         int m = Shell_NotifyIcon(NIM_MODIFY,&m_nid);
15         m_bIsIcon = true;
16     }
17 }
1 case WM_TIMER:
2         lRes = OnTimer(uMsg,wParam,lParam,bHandled);
case NOTIFYICONTIME:
        Shinrk();
        break;

悬停托盘显示窗口demo

原文地址:https://www.cnblogs.com/chechen/p/5826188.html