用C++Builder实现桌布自动更新

出处:Examlink收集整理 作者:唐易龙 日期:2007年06月08日 15时29分
     

  遗憾的是BCB不直接支持如PNG,GIF等格式与位图的转换,希望在BCB6.0以后的版本中会得到支持.如果要进行PNG,GIF格式的转换,我们可以去寻求控件,这是最简单的办法,还有一种就是自己编写图形格式转换的程序,这个比较困难.首先要知道各种图形格式的标准,然后编写格式转换的算法,这是最重要的,最后进行编码.还有一点我也想说一下,如果你足够细心的话,可能已经发现了我在实现Timer1Timer(TObject *Sender)这个函数的时候用到了一个RebuildIconCache()函数,注释说是重建系统缓存,其实是这样的当你改变了桌布的时候,可能系统来不及重新绘制桌布,这时你需要手动地按下F5来进行刷新,但我们的程序总不能去叫用户刷新吧,所以我增加了一个RebuildIconCache()函数来完成此功能,它是这样实现的。
  
  void __fastcall TForm1::RebuildIconCache()
  {
   //TODO: Add your source code here
  
   int IconW;
   IconW= GetSystemMetrics(SM_CXICON);
   TRegIniFile *Reg = new TRegIniFile("Control Panel\\Desktop");
   try
   {
  Reg->WriteString("WindowMetrics", "Shell Icon Size", IntToStr(IconW));
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
   }
   __finally
   {
  delete Reg;
   }
  }
  
  这样只要你改变了桌布设置,再广播WM_SETTINGCHANGE窗口消息,系统就会进行桌布的重新绘制。
  
  提示:如果你想自己体会一下这个程序的功能,你不必通过键盘的输入来达到目的,http://www.zccfamily.com/zqget/ 提供了这个程序的所有源代码,你可以去下载来看一下实际的效果。

最后更新时间:2008-03-28 12:39:15
共4页: 上一页 [1] [2] [3] 4 下一页
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
您可以用以下几种方式找到此文章

考试全流程