使用SystemParametersInfoA接口来更换windows的壁纸,虽然挺好用,但是我想写一个显示GIF壁纸的程序,想法是将GIF的每一个帧连续切换显示,奈何该接口设置壁纸的时间太长,达不到快速切换的效果。
该接口的用法:
#include <windows.h> #include <iostream> #include <string> #include <sstream> ------------------------------------ stringstream imgPath; imgPath<<"path\\img.jpg"; SystemParameteersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)imgPath.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
然后我弄的一个很low的GIF桌面程序:
#include <windows.h>
#include <iostream>
#include <string>
#include <sstream>
#include <thread>
#include <mutex>
#include <ctime>
using namespace std;
void setBackground();
int main()
{
thread th(setBackground);
th.join();
cin.get();
return EXIT_SUCCESS;
}
void setBackground()
{
int i = 0;
stringstream fp0, fp1, fp2, fp3, fp4, fp5, fp6, fp7, fp8, fp9, fp10, fp11, fp12, fp13, fp14, fp15, fp16, fp17, fp18, fp19;
fp0<< "i:\\t\\frame-01.jpg";
fp1<< "i:\\t\\frame-02.jpg";
fp2 << "i:\\t\\frame-03.jpg";
fp3 << "i:\\t\\frame-04.jpg";
fp4 << "i:\\t\\frame-05.jpg";
fp5 << "i:\\t\\frame-06.jpg";
fp6 << "i:\\t\\frame-07.jpg";
fp7 << "i:\\t\\frame-08.jpg";
fp8 << "i:\\t\\frame-09.jpg";
fp9 << "i:\\t\\frame-10.jpg";
fp10 << "i:\\t\\frame-11.jpg";
fp11 << "i:\\t\\frame-12.jpg";
fp12 << "i:\\t\\frame-13.jpg";
fp13 << "i:\\t\\frame-14.jpg";
fp14 << "i:\\t\\frame-15.jpg";
fp15 << "i:\\t\\frame-16.jpg";
fp16 << "i:\\t\\frame-17.jpg";
fp17 << "i:\\t\\frame-18.jpg";
fp18 << "i:\\t\\frame-19.jpg";
fp19 << "i:\\t\\frame-20.jpg";
while (1)
{
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp0.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp1.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp2.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp3.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp4.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp5.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp6.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp7.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp8.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp9.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp10.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp11.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp12.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp13.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp14.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp15.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp16.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp17.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp18.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)fp19.str().c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
}
}
原文:http://www.cnblogs.com/whlook/p/6485967.html