使用 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 位字符)。