SystemParametersInfo 将墙纸设置为完全黑色(使用 SPI_SETDESKWALLPAPER)
SystemParametersInfo sets wallpaper completly black (using SPI_SETDESKWALLPAPER)
我尝试更换我的桌面墙纸。当我这样使用它时它工作得很好:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\1.jpg", SPIF_SENDCHANGE);
但是我这样用的时候,桌面壁纸全黑了:
std::string s = "C:\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);
我试图通过使用 GetLastError()
获取更多信息,但 return 值仅为 0。我也尝试使用 .png 文件,但这并没有改变任何东西。
知道我做错了什么吗?
试试这个:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);
SystemParametersInfo
函数不接受 std::string
指针作为路径,它接受 null-terminated 字符数组。 std::string
的 c_str()
方法提供了什么。
我尝试更换我的桌面墙纸。当我这样使用它时它工作得很好:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\1.jpg", SPIF_SENDCHANGE);
但是我这样用的时候,桌面壁纸全黑了:
std::string s = "C:\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);
我试图通过使用 GetLastError()
获取更多信息,但 return 值仅为 0。我也尝试使用 .png 文件,但这并没有改变任何东西。
知道我做错了什么吗?
试试这个:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);
SystemParametersInfo
函数不接受 std::string
指针作为路径,它接受 null-terminated 字符数组。 std::string
的 c_str()
方法提供了什么。