-
-
[求助]托盘图标动态变化(毫无规律)
-
发表于:
2009-10-9 16:03
3617
-
我想实现托盘图标动态变化
利用Shell_NotifyIcon函数
通过利用timer控件,每隔一秒发送NIM_MODIFY,然后达到托盘图标动态变化,但是程序托盘图标变化的很不规律,有时可以动态变化,有时有图标不变,请问是什么原因吗?
//修改图标 动态变化
BOOL TForm2::PostTrayMessage(DWORD dwMessage)
{
NOTIFYICONDATA tnd;
tnd.cbSize= sizeof(NOTIFYICONDATA);
//结构的大小
tnd.uCallbackMessage = iconmessage;
//自定义的回调消息
tnd.hWnd= Handle;
//接受回调消息的窗口句柄
tnd.uFlags= NIF_MESSAGE | NIF_ICON | NIF_TIP;
//指定以下三个参数哪个包含有效数据
if( dwMessage == NIM_MODIFY )
{
tnd.hIcon = (HICON)GetIconHandle(); //取得图标句柄
strncpy(tnd.szTip, "动态变化",sizeof(tnd.szTip));
//MessageBox(NULL, "SUCCESS", "Chang", MB_OK);
}
else
{
MessageBox(NULL, "ERROR", "Chang", MB_OK);
tnd.hIcon = NULL;
}
return ( Shell_NotifyIcon(dwMessage, &tnd) );
}
//获取图标句柄
HICON TForm2::GetIconHandle()
{
//n是全局变量,1为显示Image2,0为Image1
if(n1 == 1)
{
//MessageBox(NULL, "1", "Get", MB_OK);
return( Form2->Image2->Picture->Icon->Handle );
}
else
{
//MessageBox(NULL, "0", "Get", MB_OK);
return( Form2->Image1->Picture->Icon->Handle );
}
}
//图标状态转换函数
void TForm2::ChangeIcon()
{
if (n1 == 1) //n1为图标句柄锁,是全局变量,1为显示Image2,0为Image1
{
n1 = n1 - 1;
}
else
{
n1 = n1 + 1;
}
//发送图标变换消息
PostTrayMessage(NIM_MODIFY);
//MessageBox(NULL, "SUCCESS", "Post", MB_OK);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课