c++ - SystemParametersInfo 将壁纸设置为完全黑色(使用 SPI_SETDESKWALLPAPER)

标签 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 文件,但这并没有改变任何东西。

知道我做错了什么吗?

最佳答案

试试这个:

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

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

关于c++ - SystemParametersInfo 将壁纸设置为完全黑色(使用 SPI_SETDESKWALLPAPER),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710677/

相关文章:

windows - 使用 WinAPI 进行全屏管理

c++ - 什么会导致 PrintDlgEx 因特定打印机选择而崩溃?

c - 如何为 Mac OS X Lion 编写交互式壁纸

python - Windows 中的多显示器设置的每个屏幕都有不同的墙纸

javascript - 在 JavaScript Windows 8 应用程序中设置桌面壁纸

c++ - 如何找到某个变量旁边存储的内容

c++ - OpenGL GL_LINE_STRIP 在 glEnd 之后给出错误 1281(无效值)

c++ - 如果最初发出 IO 的线程在 Windows 8 下的 ReadFile 中阻塞,则 GetQueuedCompletionStatus 无法从 IOCP 出列 IO

c++ - 在特定内存地址创建堆,用于动态内存分配

c++ - ENABLE_VIRTUAL_TERMINAL_PROCESSING 和 DISABLE_NEWLINE_AUTO_RETURN 失败