C++让你的任务栏图标动起来

C++让你的任务栏图标动起来,第1张

C++让你的任务栏图标动起来,第2张

在windows下上网时,有没有注意到屏幕右下方的任务栏上有一个动画图标?它闪烁并生动地显示此时网络正在传输数据。关于任务栏图标编程的文章很多,但是如何才能编译出动态图标呢?在C++Builder中很容易实现。

-它的基本编程思想是:通过设置定时器时钟控件,应用程序可以在指定的时间间隔内发送特定的消息,任务栏图标可以不断变化,从而形成动画效果。方法是在应用程序的窗体中加载几个图像控件,让它们加载相应的图片,几个图片依次显示,就形成了一个动画。

详细说明:这里,我们以一个开门和关门的动画为例,在窗体上放置一个定时器控件和两个图像,并分别加载“开门”和“关门”的两张图片。开始添加代码。

-应用程序必须通过发送消息来通知任务栏添加、删除和修改图标。发送消息必须调用Shell_NotifyIcon。它的原型是:

WINSHELLAPI BOLL WINAPI Shell _ NotifyIcon(

DWORD dwMessage,POINTIFYCONDATA pnid);

第一个参数dwMessage是发送消息的标志,可以选择。

NIM_ADD //在任务栏通知区域添加图标

NIM_DELETE //删除任务栏通知区域的图标

NIM_MODIFY //通知任务栏通知区域修改图标

编译消息发送函数TrayMessage。

bool _ _ fast call t form 1::tray message(DWORD dw message)

{

NOTIFYICONDATA tnd

PSTR·普斯蒂普;

PSZ tip = tip text();

tnd . CB size = sizeof(NOTIFYICONDATA);

//结构的大小

tnd . ucallbackmessage = MYWM _ NOTIFY;

//自定义回调消息,在头文件中声明

tnd.hWnd = Handle

//接受回调消息的窗口句柄

tnd.uID = IDC _ MYICON

//图标编号

tnd . u flags = NIF _消息NIF _图标NIF _提示;

//指定以下三个参数中的哪一个包含有效数据

if (dwMessage == NIM_MODIFY)

{

tnd.hIcon =

(HICON)icon handle();//获取图标句柄

if (pszTip)

lstrcpyn(tnd.szTip,pszTip,

sizeof(tnd . SZ tip));

其他

tnd . SZ tip[0]= ' \ 0 ';

}

其他

{

tnd.hIcon = NULL

tnd . SZ tip[0]= ' \ 0 ';

}

return(Shell _ NotifyIcon(dw message,& tnd));

}

获取图标句柄的功能。

HICON _ _ fast call t form 1::icon handle(void)

{

如果(n==1)

{ return (Image1->图片->图标->句柄);

//n是全局变量,1是显示image1,0是Image2。

}

其他

{ return (Image2->图片->图标->句柄);

}

}

编译图标状态转换函数。

void _ _ fast call t form 1::ToggleState(void)

{

If (n==1) //n是图标句柄锁,是一个全局变量,

1显示图像1,0显示图像2。

{

n = n-1;

}

其他

{

n = n+1;

}

tray message(NIM _ MODIFY);

//发送图标更改消息

}

对计时器控件进行编码并设置其间隔。

属性为1000,即定时器每秒响应一次。定时器

键入事件代码:

void _ _ fast call t form 1::timer 1 timer(to object * Sender)

{ ToggleState();

}

-由于篇幅有限,上面只列出了代码的基本部分。其他功能的实现,比如关闭程序,打开窗口,都比较简单,这里就不赘述了。当程序运行时,您会在屏幕右下角的任务栏中看到一个动画图标,上面有一扇门正在打开和关闭。是不是很有意思?编一个你喜欢的。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++让你的任务栏图标动起来

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情