SystemParametersInfo将壁纸设置为黑色(使用SPI_SETDESKWALLPAPER)

时间:2016-01-10 20:57:00

标签: c++ winapi desktop-wallpaper

我尝试更改桌面壁纸。当我像这样使用它时它工作得很好:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\1.jpg", SPIF_SENDCHANGE);

但是当我像这样使用它时,桌面壁纸设置为完全黑色:

std::string s = "C:\\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);

我尝试使用GetLastError()获取更多信息,但返回值仅为0.我还尝试使用.png文件,但这并没有改变任何内容。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:5)

试试这个:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);

SystemParametersInfo函数不接受std::string指针作为路径,它接受以null结尾的char数组。这是c_str() std::string提供的方法。