//设置桌布
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,ListBox1->Items->Strings[index].c_str(),
SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
else
{
//设置桌布
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,ListBox1->Items->Strings[index].c_str(),
SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
//重建系统缓存
RebuildIconCache();
index++;
}
就这样,我们就完成了桌布自动更换的功能,是不是很简单,不过由于它受限于BMP位图格式,这一点总是使得桌布的爱好者十分苦恼.我们能不能让它支持其它格式的图形文件呢?当然可以,原理是这样的,在设置桌布之前,现将其它格式的文件转换为位图,在用SystemParametersInfo函数设置桌布即可搞定.
JPEG格式转换为位图:
#include
bool __fastcall TForm1::JPEGToBMP(AnsiString jpegFile,AnsiString bmpFile)
{
//TODO: Add your source code here
TJPEGImage *jpeg = new TJPEGImage();
jpeg->LoadFromFile(jpegFile);
Graphics::TBitmap *bitmap = new Graphics::TBitmap();
try {
bitmap->Assign(jpeg);
bitmap->SaveToFile(bmpFile);
}
__finally {
delete jpeg;
delete bitmap;
}
return true;
}