首页
社区
课程
招聘
[求助]托盘图标动态变化(毫无规律)
发表于: 2009-10-9 16:03 3618

[求助]托盘图标动态变化(毫无规律)

2009-10-9 16:03
3618
我想实现托盘图标动态变化
利用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);
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
可不可以考虑单独创建一个线程 处理图标动态变化?或者自己编程实现timer控件呢?
2009-10-9 16:05
0
游客
登录 | 注册 方可回帖
返回
//