【发布时间】:2021-09-28 15:02:09
【问题描述】:
我用那里的线条来改变Windows的壁纸
const wchar_t *path = L"C:\\Users\\Prince 2 lu\\Desktop\\SDL\\bin\\image\\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void *)path, SPIF_UPDATEINIFILE);
此代码在这里 ^ 完全工作 但是代码
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, "C:\\Users\\Prince 2 lu\\Desktop\\SDL\\bin\\image\\wallpaper.png", SPIF_UPDATEINIFILE);
或
char *buff = "C:\\Users\\Prince 2 lu\\Desktop\\SDL\\bin\\image\\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, buff, SPIF_UPDATEINIFILE);
不起作用,我不知道为什么,如果有人知道为什么...
但我想用一个变量来定义路径
(因为路径文件可以为用户更改)
我想在 char* 中定义路径(壁纸的文件路径)
代码
(如果 buff 只是一个 char 指针)
char *buff = file.path;
wchar_t *path = buff;
不起作用,有人有解决办法吗?
编译器:MingGW64
操作系统:Windows 10 B4 位
【问题讨论】:
-
什么是
buff?你需要它做什么? 如何它不起作用? -
顺便说一句,知道数组(假设
buff是一个数组)会自动衰减为指向其第一个元素的指针可能会很好。如果buff是wchar_t的数组,则不需要path,但可以在对SystemParametersInfoW的调用中直接使用buff。 -
您描述的代码应该可以工作。请显示一些更相关的代码。阅读minimal reproducible example 是什么以及为什么发布它很有用。你检查
SystemParametersInfoW的返回值了吗?如果你这样做了,你是否检查了GetLastError的值?你读过这个:docs.microsoft.com/en-us/windows/win32/api/winuser/…? -
什么是
file.path?它指向哪里?如果path是wchar_t*,为什么char *buff?你没有收到编译器警告吗? -
您根本不需要使用 char*。使用 wchar_t* 和 wchar_t 版本的 snprintf - swprintf。