用Win API设置壁纸

我想以编程方式设置壁纸。 这是迄今为止唯一的解决scheme:

SystemParametersInfoW(SPI_SETDESKWALLPAPER, 1, (void*)wallpaperImageFilePath.utf16(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); 

我的问题是:如何告诉Windows我想壁纸图像居中(不resize)? 上面的解决scheme总是将图像设置为拉伸模式。 根据MSDN, SPI_SETDESKWALLPAPER没有标志。

没有用于设置壁纸方向的API功能。 您必须直接转到注册表,特别是HKEY_CURRENT_USER\Control Panel\Desktop项的"WallpaperStyle""TileWallpaper"值。 看到这篇文章的例子:

设置桌面壁纸(CppSetDesktopWallpaper)

从Windows 8开始,现在有一个发布的界面用于设置桌面背景。 具体来说就是IDesktopBackground::SetWallpaper方法。 MSDN文档

该界面还有多种获取和设置幻灯片配置的方法,并获得所需的监视器设备路径。