一、缘由:
很久之前就发现win7的那个自动更改桌面背景图片的功能很好,选一些自己喜欢的图片,然后系统自动的更换。可惜XP下面没有此功能,于是有了下面这些。
二、思路:
第一步,选好自己的图片组(这里采取的是把自己喜欢的图片全部放在一个目录下),程序运行时指定此目录即可;
第二步,设置更改图片时的参数,如更改的间隔时间,显示图片的方式(有居中、平铺、拉伸三种)。若你喜欢,你也可以设置其他你想到的;
第三步,当程序运行之后不能妨碍其他正常工作,所以呢,程序运行之后应该隐藏起来,或者至少托盘。这里导致另外一个问题,当隐藏或者托盘之后应该设置一个全局快捷键,这样子方便我们调出程序(也可以隐藏程序);
第四步,程序应该设置为开机启动。
三、图解:
四、主程序及部分代码:
程序界面
代码:
1、 选取图片所在目录,用“文件目录”— SHBrowseForFolder和BROWSEINFO结构体,参考地址:
http://www.cppblog.com/wrhwww/archive/2009/03/14/76552.html
这里有个问题,将目录只能设置为最小子目录(如果不是最小子目录则不能选择)没有解决,希望有方法的朋友可以共享一下。:)
2、 读取所选目录下面的文件,并且需要将所读取的文件名保存到数据或者链表:
http://www.cnblogs.com/yjm0105/archive/2005/06/22/179353.html
不过这里需要注意,参考资料里面的方法是将该目录下所以的文件,包括系统隐藏文件,所以在读取的过程过滤某些不需要的文件。这里我的办法是过滤文件名的类型,用strstr()函数,比较文件后中“.”后的字符串。
3、 更改桌面背景:
http://hi.baidu.com/vcwalker/blog/item/9dadf79d12fee5056f068cff.html
这里我用了随机数,不过要注意随机函数的使用(随即种子一定要放在循环体外面):
http://hi.baidu.com/%C8%ED%BC%FE%B8%D6%C7%D9%CA%A6/blog/item/5ab7f5f5b8d68b2dbc3109ab.html
4、 定时更改,当然需要定时器,注意程序结束的时候调用KillTimer()函数销毁定时器。
5、 托盘显示和全局快捷键:
http://blog.csdn.net/akof1314/archive/2010/01/02/5121911.aspx
这里没有实现程序隐藏,只是托盘了。全局快捷键也没有实现,希望哪位朋友找到了,共享一下方法。
6、 其他问题:
l 字符UTF-8、ANSI、Unicode之间的转换:
http://www.cnblogs.com/gakusei/articles/1585211.html
和http://www.cnblogs.com/nanshouyong326/archive/2009/08/14/1546090.html
l Ini文件的操作自己去查。 :)
代码我放在这里,要是有什么不对,希望大家指出。http://u.115.com/file/f8b738ee86 。如果到期了给我留言我去续期。