使用 wchar_t *buff 变量
Use wchar_t *buff with variable
我用这些线来更换 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
OS: Windows 10 B4 位
问题的标题是use wchar_t *buff with variable,但这正是你所做的而不是。
char *buff = "C:\Users\Prince 2 lu\Desktop\SDL\bin\image\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, buff, SPIF_UPDATEINIFILE);
这是错误的,因为 buff
是指向 char
的指针,但 SystemParametersInfoW(SPI_SETDESKWALLPAPER,...
想要指向 wchar_t
.
的指针
所以要么你使用 SystemParametersInfoA
,要么你需要这个:
wchar_t *buff = L"C:\Users\Prince 2 lu\Desktop\SDL\bin\image\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void*)buff, SPIF_UPDATEINIFILE);
不要混淆 char
(普通 8 位字符)和 wchar_t
(宽 16 位字符)。
我用这些线来更换 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
OS: Windows 10 B4 位
问题的标题是use wchar_t *buff with variable,但这正是你所做的而不是。
char *buff = "C:\Users\Prince 2 lu\Desktop\SDL\bin\image\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, buff, SPIF_UPDATEINIFILE);
这是错误的,因为 buff
是指向 char
的指针,但 SystemParametersInfoW(SPI_SETDESKWALLPAPER,...
想要指向 wchar_t
.
所以要么你使用 SystemParametersInfoA
,要么你需要这个:
wchar_t *buff = L"C:\Users\Prince 2 lu\Desktop\SDL\bin\image\wallpaper.png";
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void*)buff, SPIF_UPDATEINIFILE);
不要混淆 char
(普通 8 位字符)和 wchar_t
(宽 16 位字符)。