J'utilise la fonction SystemParametersInfo
pour obtenir le fond d'écran et il est supposé que lors de l'ajout de l'action SPI_GETDESKWALLPAPER
à la fonction renvoie une chaîne.'SystemParametersInfo' fonction renvoie une valeur incorrecte lors de l'obtention du fond d'écran
LPWSTR bgPath;
if(!SystemParametersInfo(SPI_GETDESKWALLPAPER, 0, bgPath, SPIF_UPDATEINIFILE)){
qDebug() << *bgPath;
return;
}
qDebug()<< "an error occurred";
Le problème est que la fonction renvoie une valeur numérique (ex: 50121) au lieu d'une chaîne.
Y a-t-il un problème dans mon code?
Il ne comprend pas pourquoi vous écrire ce code. C'est comme si vous n'aviez pas lu la documentation. Il dit ce qui suit: * Récupère le chemin complet du fichier bitmap pour le fond d'écran. Le paramètre pvParam doit pointer vers un tampon pour recevoir la chaîne de chemin à terminaison nulle. Définissez le paramètre uiParam sur la taille, en caractères, du tampon pvParam. La chaîne renvoyée ne dépassera pas les caractères MAX_PATH. S'il n'y a pas de fond d'écran, la chaîne renvoyée est vide. * –
Vous avez donc les deux paramètres erronés et le paramètre Al du fichier est erroné. En plus de tout le reste, vous gérez mal la valeur de retour. –
Oui, vous êtes censé utiliser un WCHAR [] pour écrire le nom du fichier dans le tampon. Et passez la taille du tableau pour qu'il ne puisse pas écrire trop. Et corrigez l'instruction if(), vous avez déjà remarqué qu'elle est retournée FALSE pour indiquer l'échec. Et utilisez GetLastError() pour découvrir pourquoi il a échoué, toujours important de découvrir pourquoi les appels de fonction winapi ne fonctionnent pas. –