Я пытаюсь использовать функцию SetParametersInfo для изменения обоев. Я хотел бы передать путь к файлу для обоев в качестве переменной, но всякий раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке
Error: no suitable conversion function from "std::string" to "PVOID" exists
Вот код, который у меня есть до сих пор
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
#pragma comment(lib, "user32.lib")
using namespace std;
#define _TEXT(x) L##x
void main(){
string input ="";
cout << "Enter the filepath\n";
getline(cin, input);
BOOL success = SystemParametersInfo(
SPI_SETDESKWALLPAPER, //iuAction
0, //uiParam
input, //pvParam
SPIF_UPDATEINIFILE //fWinIni
);
if (success){
printf("Success!\n");
}else
printf("Failure =(\n");
}
У вас, ребята, есть предложения, что я могу сделать?Я обыскал все, чтобы найти решение, но не смог его найти.Возможно, я не ищу правильные термины.
Дополнительная информация: Я использую Windows 7 и использую Visual Studio 2010 Ultimate.
Редактировать: Я наконец заставил его работать.Мне пришлось изменить настройку «Набор символов» на «Не установлен», тогда она работала нормально.Вот обновленный код:
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
#pragma comment(lib, "user32.lib")
using namespace std;
void main(){
string input ="";
cout << "Enter the filepath\n";
getline(cin, input);
BOOL success = SystemParametersInfo(
SPI_SETDESKWALLPAPER, //iuAction
0, //uiParam
(PVOID) input.c_str(), //pvParam
SPIF_UPDATEINIFILE //fWinIni
);
if (success){
printf("Success!\n");
}else{
printf("Failure =(\n ");
cout << input << "\n";
cout << (PVOID) input.c_str()<< "\n";
}
}