我正在尝试使用.png文件将桌面背景/墙纸更改为不同的图像。尽管当我运行程序时,背景变成了纯黑色。
我确信我在代码中正确地输入了文件名"ksa.png",这是我想要在背景中显示的图像。当错误发生时,我使用if条件写出文件上的最后一个错误,如果没有错误发生,则使用else条件写出“成功”;但是当我运行程序时,它将“成功”写到文件中。我曾经考虑过使用.jpg文件,认为.png文件可能就是不起作用。当我尝试使用它时,我会给出更新。
#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()函数之前,但它仍然将“成功”写到文件中。我仍然有同样的问题。下面是我更新的代码:
#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;
}发布于 2019-04-03 11:20:00
嗯,你的图片路径有问题。我试过你的代码了。除非使用绝对路径,否则无法在相对路径下获取图片。
比如Cody Gray♦的判断。
const wchar_t *filenm = L"C:\\Users\\strives\\Desktop\\timg.bmp";https://stackoverflow.com/questions/55484119
复制相似问题