我尝试更改桌面壁纸。当我像这样使用它时它工作得很好:
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文件,但这并没有改变任何内容。
任何想法我做错了什么?
答案 0 :(得分:5)
试试这个:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);
SystemParametersInfo
函数不接受std::string
指针作为路径,它接受以null结尾的char数组。这是c_str()
std::string
提供的方法。