SystemParametersInfo устанавливает обои полностью черными (используя SPI_SETDESKWALLPAPER)

Я пытаюсь изменить обои для рабочего стола. Это работает просто отлично, когда я использую это так:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\1.jpg", SPIF_SENDCHANGE);

Но когда я использую это так, обои рабочего стола устанавливаются полностью черными:

std::string s = "C:\\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);

Я пытался получить больше информации с помощью GetLastError(), но возвращаемое значение равно 0. Я также пытался использовать .png-файлы, но это ничего не меняет.

Есть идеи, что я делаю не так?

1

Решение

Попробуй это:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);

SystemParametersInfo функция не принимает std::string указатель в виде пути, он принимает массив символов с нулевым символом в конце. Что есть то, что c_str() метод std::string обеспечивает.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]