如何实现在任务栏中图标的闪烁

sdwalnut1 2004-11-17 01:54:43
使用vc,如何实现出现在任务栏中的图标可以闪烁,或者换图标,类似qq.
...全文
821 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoosang 2004-11-18
  • 打赏
  • 举报
回复
www.vckbase.com里有实例代码
luolovegui 2004-11-17
  • 打赏
  • 举报
回复
you can use SetTimer() to create WM_TIMER message and replace currently ico in the OnTimer() .

you are welcome.....
zhaohuiguang 2004-11-17
  • 打赏
  • 举报
回复
定时替换
oyljerry 2004-11-17
  • 打赏
  • 举报
回复
用两个图标,在定时器中交替LoadIcon
yanw0212 2004-11-17
  • 打赏
  • 举报
回复
//任务栏图标窗口的回调函数
LRESULT CALLBACK myboleProc(
HWND hwnd, // handle to window
UINT useMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(useMsg)
{
case WM_TIMER:

switch(wParam)
{
case 1:
g_iWhichIcon = !g_iWhichIcon;
NOTIFYICONDATA nid;
nid.cbSize = sizeof( NOTIFYICONDATA );
nid.hWnd = hwnd;
nid.uID = IDI_MYICON;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = WM_SYSTEMTRAY;
nid.hIcon = ::LoadIcon(g_hInstance,MAKEINTRESOURCE( g_iWhichIcon ? IDI_MYICON : IDI_MYICON2) );
strcpy((nid.szTip),"AccessControlService收到控制器发给监控管理模块的数据\n请确认监控管理模块是否已经正常运行");
Shell_NotifyIcon(NIM_MODIFY ,&nid);
break;
case 2:
g_iWhichIcon = !g_iWhichIcon;
NOTIFYICONDATA nid4;
nid4.cbSize = sizeof( NOTIFYICONDATA );
nid4.hWnd = hwnd;
nid4.uID = IDI_ICON1;
nid4.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid4.uCallbackMessage = WM_SYSTEMTRAY;
nid4.hIcon = ::LoadIcon(g_hInstance,MAKEINTRESOURCE( g_iWhichIcon ? IDI_ICON1 : IDI_ICON2) );
strcpy((nid4.szTip),"AccessControlService收到控制器发给物业管理模块的数据\n请确认物业管理模块是否已经正常运行");
Shell_NotifyIcon(NIM_MODIFY ,&nid4);
break;
}
break;

// 向任务栏添加图标-监控中心报警
case WM_ADDTRAYICON:
//MessageBox(NULL,"添加图表1的消息","",0 | 0x00200000L);
NOTIFYICONDATA nid2;
nid2.cbSize = sizeof( NOTIFYICONDATA );
nid2.hWnd = hTrayIconDlghWnd;
nid2.uID = IDI_MYICON;
nid2.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid2.uCallbackMessage = WM_SYSTEMTRAY;
nid2.hIcon = ::LoadIcon( g_hInstance,MAKEINTRESOURCE(IDI_MYICON));
strcpy(nid2.szTip,"AccessControlService");
Shell_NotifyIcon(NIM_ADD,&nid2);
SetTimer(hwnd,1,350,NULL);
g_TrayIcon1hascreate = true;
break;

// 向任务栏添加图标2--物业中心报警
case WM_ADDTRAYICON1:
//MessageBox(NULL,"添加图表2的消息","",0 | 0x00200000L);
NOTIFYICONDATA nid3;
nid3.cbSize = sizeof( NOTIFYICONDATA );
nid3.hWnd = hTrayIconDlghWnd;
nid3.uID = IDI_ICON1;
nid3.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid3.uCallbackMessage = WM_SYSTEMTRAY;
nid3.hIcon = ::LoadIcon( g_hInstance,MAKEINTRESOURCE(IDI_ICON1));
strcpy(nid3.szTip,"AccessControlService物业模块");
Shell_NotifyIcon(NIM_ADD,&nid3);
SetTimer(hwnd,2,250,NULL);
g_TrayIcon2hascreate = true;
break;

// 从任务栏删除监控模块图标
case WM_DELTRAYICON1:
// MessageBox(NULL,"收到删除图表1的消息","",0 | 0x00200000L);
NOTIFYICONDATA nid1;
nid1.cbSize = sizeof( NOTIFYICONDATA );
nid1.hWnd = hwnd;
nid1.uID = IDI_MYICON;
nid1.uFlags = 0;
Shell_NotifyIcon(NIM_DELETE,&nid1);
::KillTimer(hwnd,1);
g_TrayIcon1hascreate = false;
break;

// 从任务栏删除物业模块图标
case WM_DELTRAYICON2:
//MessageBox(NULL,"收到删除图表2的消息","",0 | 0x00200000L);
NOTIFYICONDATA nid5;
nid5.cbSize = sizeof( NOTIFYICONDATA );
nid5.hWnd = hwnd;
nid5.uID = IDI_ICON1;
nid5.uFlags = 0;
Shell_NotifyIcon(NIM_DELETE,&nid5);
::KillTimer(hwnd,2);
g_TrayIcon2hascreate = false;
break;

default:
return DefWindowProc(hwnd,useMsg,wParam,lParam);
}
return 0;
}
kugou123 2004-11-17
  • 打赏
  • 举报
回复
准备一个图标,一个看起来颜色为空的图标,在定时器中两个交替使用。
Kudeet 2004-11-17
  • 打赏
  • 举报
回复
定时器
kid5 2004-11-17
  • 打赏
  • 举报
回复
你可以参考 abstractspoon.com 的ToDoList的源代码中有个CTrayIcon类
sdwalnut1 2004-11-17
  • 打赏
  • 举报
回复
我想找一些实现的具体例子
cai12345 2004-11-17
  • 打赏
  • 举报
回复
找个定时器过一段时间换一下不就好了嘛

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧