Qt设置windows桌面壁纸

来源:互联网 发布:mac双系统安装win8 编辑:程序博客网 时间:2024/05/01 20:17

使用函数:

SystemParametersInfo,具体参数看已通过百度或谷歌去搜索。

QString src = tr("F:/workspace/DesktopMedia/debug/downloadDir/120323070238652.jpg"); TCHAR *ptch = (TCHAR *)src.toStdWString().c_str(); // 转换成宽字节,很重要,否则显示不了图片SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,ptch, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );


调试程序:

BOOL lres = SystemParametersInfoW(                SPI_SETDESKWALLPAPER,                0,                (PVOID)TEXT("F:/workspace/DesktopMedia/debug/downloadDir/120323070238652.jpg"),                //                (PVOID)ptch,                SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);    LPVOID lpMsgBuf;    FormatMessage(                FORMAT_MESSAGE_ALLOCATE_BUFFER |                FORMAT_MESSAGE_FROM_SYSTEM |                FORMAT_MESSAGE_IGNORE_INSERTS,                NULL,                GetLastError(),                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language                (LPTSTR) &lpMsgBuf,                0,                NULL                );    // Process any inserts in lpMsgBuf.    // ...    // Display the string.    MessageBox(NULL,(LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONINFORMATION );    // Free the buffer.    LocalFree( lpMsgBuf );    if (!lres)    {        MessageBox(NULL,TEXT("ERROR"),TEXT("FAIL"),MB_OK);    }


这里需要说一下,如果不使用TCHAR,可以使用宏TEXT。TEXT只能和常量字符串搭配使用,无法和变量配合。