如何实现在任务栏中图标的闪烁 使用vc,如何实现出现在任务栏中的图标可以闪烁,或者换图标,类似qq. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以参考 abstractspoon.com 的ToDoList的源代码中有个CTrayIcon类 //任务栏图标窗口的回调函数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;} 用两个图标,在定时器中交替LoadIcon you can use SetTimer() to create WM_TIMER message and replace currently ico in the OnTimer() .you are welcome..... 急求“通过IP获得目标主机的MAC地址”源代码!不胜感激! 怎样才能通过一个按钮的单击事件来调用一个应用程序? 派生自CMenu类的新类的问题。。。 UDP------------>怎样实现可靠的传输??? 大家快到这个网站来看一看呀,不看一定后悔。 关于CoCreateInstanceEx()函数创建COM+实例时的问题! 如何把资源文件编译进exe中 CHttpFile::SendRequest问题 小问题?绝对给分! 高级技术问题1:线程控制机制的设计 举例说明CString类的Format(...)的用法。 怎样在控制台下使用ClassWizard?
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;
}