文档介绍:SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(void *)"C:\\",0);
但注意重启后会恢复成原来的桌面,想重启后还保留你设的桌面就要修改注册表中
HKEY_CURRENT_USER\Control Panel\desktop中的Wallpaper子键。
在vc中设置桌面墙纸
作者:lixiaosan
日期:09/21/2006
前言:
今天,csdn上一网友发贴问怎么实现设置桌面墙纸,并且使用的是jpg文件。
虽然在下知道可以用API函数SystemParametersInfo可以设置bmp文件为墙纸
也知道可以用IActiveDesktop来设置其他格式的图片文件作为墙纸,但是工作中一直没有使用到该功能,所以也就一直没实现。今天不是太忙,也就写写吧。顺便赚点分。(嘿嘿!嗜财如命的家伙!)
很简单,一句话搞定:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C://", SPIF_SENDWININICHANGE| SPIF_UPDATEINIFILE);
but, 这玩意儿只能用bmp文件,不能用其他文件,MS也不把函数功能扩展一下,BS一下MS。
再but,这玩意儿也不能设置墙纸的样式,比如平铺,拉伸什么的,虽然可通过修改注册表修改,但是据那位网友说,需要重启才能生效什么的,我没有试,因为这篇文章的主要目的是讨论用IActiveDesktop设置墙纸。
<br****惯上用任何不太熟悉的函数或接口前,查msdn。
通过msdn,了解到:
IActiveDesktop是个windows shell interface
Header
Minimum operating systems Windows 2000, Windows NT with Explorer , Windows 98, Windows 95 with Explorer
同时,在msdn还有一篇文章
Using the Active Desktop Object
./en-us/library/#accessing_the_active_desktop
其实,看了这篇文章你就应该学会如何使用Active Desktop Object了。
(1)使用IActiveDesktop需要包含的一些头文件,以及进行初始化
#include <>
#include <.h> //添加这个。注意顺序,顺序乱了也编译不过
#include <>
...
的东西,要进行初始化,不用说了吧。
在CXXXApp::Initinstance中添加AfxOleInit();
使用IActiveDesktop的cpp中
#include <>
(2) 现在开始写实现函数了
还是我的老的测试工程CTest6Dlg..呵呵
BOOL CTest6D