首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试使用C++将桌面背景更改为图像时,具有SPI_SETDESKWALLPAPER功能的程序仅将桌面背景更改为黑色

问当尝试使用C++将桌面背景更改为图像时,具有SPI_SETDESKWALLPAPER功能的程序仅将桌面背景更改为黑色
EN

Stack Overflow用户
提问于 2019-04-03 05:55:54
回答 1查看 524关注 0票数 0

我正在尝试使用.png文件将桌面背景/墙纸更改为不同的图像。尽管当我运行程序时,背景变成了纯黑色。

我确信我在代码中正确地输入了文件名"ksa.png",这是我想要在背景中显示的图像。当错误发生时,我使用if条件写出文件上的最后一个错误,如果没有错误发生,则使用else条件写出“成功”;但是当我运行程序时,它将“成功”写到文件中。我曾经考虑过使用.jpg文件,认为.png文件可能就是不起作用。当我尝试使用它时,我会给出更新。

代码语言:javascript
复制
#include <windows.h>
#include <fstream>

int main () {
    const wchar_t *filenm = L"ksa.png";
    std::ofstream log;
    if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)filenm, SPIF_UPDATEINIFILE) == FALSE) {
        log.open("log.txt");
        log << "Error: " << GetLastError();
        log.close();
    }
    else {
        log.open("log.txt");
        log << "Success";
        log.close();
    }
    return 0;
}

当我运行这个程序时,桌面背景被设置为图像"ksa.png“。取而代之的是纯黑。任何帮助,使这项工作,感谢您。

更新

好的,我将代码更新到运行.jpg文件的位置,但仍然得到相同的结果。此外,我按照Remy Lebeau的建议将log.open("log.txt")命令行移到了SystemParametersInfo()函数之前,但它仍然将“成功”写到文件中。我仍然有同样的问题。下面是我更新的代码:

代码语言:javascript
复制
#include <windows.h>
#include <fstream>

int main () {
    const wchar_t *filenm = L"3.jpg";
    std::ofstream log;
    log.open("log.txt");
    if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)filenm, SPIF_UPDATEINIFILE) == FALSE) {
        log << "Error: " << GetLastError();
        log.close();
    }
    else {
        log.open("log.txt");
        log << "Success";
        log.close();
    }
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-03 11:20:00

嗯,你的图片路径有问题。我试过你的代码了。除非使用绝对路径,否则无法在相对路径下获取图片。

比如Cody Gray♦的判断。

代码语言:javascript
复制
const wchar_t *filenm = L"C:\\Users\\strives\\Desktop\\timg.bmp";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55484119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档