1

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

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

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

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

我尝试通过 using 获取更多信息GetLastError(),但返回值仅为 0。我也尝试使用 .png-files,但这并没有改变任何东西。

任何想法我做错了什么?

4

1 回答 1

6

尝试这个:

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

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

于 2016-01-10T20:58:21.167 回答