c++ - 使用 SystemParametersInfo 函数设置桌面墙纸时出现问题

标签 c++ visual-studio-2010

我刚刚学习 C++,正在尝试编写一个小程序来更改桌面墙纸。使用文档 here ,我写了这个程序:

#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")

void main(){

    BOOL success = SystemParametersInfo(
    SPI_SETDESKWALLPAPER,   //iuAction
    0,                      //uiParam
    "C:\\test.jpg",         //pvParam
    SPIF_SENDCHANGE         //fWinIni
    );
    if (success){
        printf("Success!\n");
    }else
        printf("Failure =(\n");
}

当我尝试为 pvParam 指定文件路径时,程序总是失败。如果我将 pvParam 设置为“”,它将正确清除墙纸。我做错了什么?

谢谢 -Abhorsen

最佳答案

除了 Dennis 对 JPEG 文件的评论之外,是否使用有效的 UNICODE 进行编译也很重要。如果这样做,则必须将文件指定为 L"C:\test.jpg"。注意字符串前面的 L,这使它成为一个宽字符串。或使用 SystemParametersInfoA(),注意 A(但它是过时的)。

关于c++ - 使用 SystemParametersInfo 函数设置桌面墙纸时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867952/

相关文章:

c++ - 在 C++ 中创建数据驱动结构?

c++ - 捆绑动态库 : keep looking in the usr/local/lib

c++ - C++ 中复杂问题的手动矢量化/SSE

c++ - Visual C++ 代码在 Code::Blocks 中不起作用

c++ - 如何在解决方案中构建多个项目之前执行流程

c# - 为什么 Visual Studio 在调试 UnhandledException 事件时循环

c++ - 排队基本功能(放入)调用(程序崩溃)

visual-studio-2010 - 人们用什么来替换 VS 2010 中缺少的 C++/CLI Intellisense?

c - 在 Visual Studio 2010 中链接不同的 C 源文件

.net - 多线程进程中的 parallel.for 或 task.startnew