我正在寻找改变在C++使用Windows API的Windows桌面背景壁纸。
我已经阅读了关于这个主题的以下帖子:
- How to change desktop background using VC++
- SystemParametersInfo sets wallpaper completly black (using SPI_SETDESKWALLPAPER)
问题:
当我执行代码时,桌面背景变成了完全黑色,就像上面的帖子一样(是的,我确实尝试了那篇帖子中建议的修复方法。没有运气。)
代码:
#include <windows.h>
int main() {
std::string s = "C:\\picture.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID*)s.c_str(), SPIF_SENDCHANGE);
return 0;
}
我也尝试过只使用(void*)
而不是上面的(PVOID*)
,并在字符串前面使用L
。到目前为止没有任何效果。
解决日期:
将SystemParametersInfo
更改为SystemParametersInfoA
(如评论和回答中所建议的)成功了。
1条答案
按热度按时间zlhcx6iw1#
我认为您应该使用
wchar_t
作为SystemParametersInfo()
的输入,而不是字符串,并且还应该使用SystemParametersInfoW()
。下面的代码对我有用:
如果
SystemParametersInfoW()
改变了背景,它应该返回true,为了在运行应用程序时清晰起见,我将其打印为result
。