我使用函数>>=
获取桌面壁纸,并假设在向函数添加动作SystemParametersInfo
时返回一个字符串。
SPI_GETDESKWALLPAPER
问题是该函数返回一个数值(例如:50121)而不是字符串 我的代码有什么问题吗?
答案 0 :(得分:2)
您没有为bgPath
分配任何内存以填充SystemParametersInfo()
。
根据SPI_GETDESKTOPWALLPAPER
文档:
pvParam
参数必须指向缓冲区以接收以null结尾的路径字符串。将uiParam
参数设置为pvParam
缓冲区的大小(以字符为单位)。返回的字符串不会超过MAX_PATH
个字符。
即使您正在分配缓冲区,也要检查SystemParametersInfo()
的返回值是否失败而不是成功。你正在取消引用你的字符串指针,所以最好只输出第一个字符,而不是整个字符串。
请改用:
WCHAR bgPath[MAX_PATH];
if (SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, bgPath, 0))
{
qDebug() << bgPath;
return;
}
qDebug() << "an error occurred";