使用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