C2440: Невозможно преобразовать const char* в PVOID

169
14 января 2022, 16:40

Пишу программу-шутника, который будет менять изображение рабочего стола: В одной из строчек кода возникла ошибка:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "sr2.jpg", SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

В третьем аргументе компилятор ругается на то, что невозможно преобразовать const char* в PVOID. Кажется я где-то что то упустил. В чем может заключаться проблема?

Answer 1

Формально функция SystemParametersInfo может менять данные, на которые указывает третий параметр, раз это не указатель на const.

Так что формально следует поступить так:

char fn[] = "sr2.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, fn, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

Но, откровенно говоря, сомневаюсь, что он такое будет чудить, так что, думаю, на практике можно обойтись приведением типа

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PVOID("sr2.jpg"), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

но этого я вам не говорил! :)

READ ALSO
Как передать двумерный массив в функцию?

Как передать двумерный массив в функцию?

Два массива разного размера передаём в функцию для дальнейшей обработки

73
как сбросить fstream::get?

как сбросить fstream::get?

Понадобилось пройтись по файлу циклом два раза, но во второй раз fstream::get возвращает false, как сделать так, чтоб он снова указывал на начало файла?

180
Rvalue ссылки и шаблоны

Rvalue ссылки и шаблоны

К примеру имеется следующий код:

70
Замена изображения рабочего стола C++

Замена изображения рабочего стола C++

Пишу программу - шутник, меняющую фоновое изображение рабочего столаПроблема в том, что функция ставит вместо заложенного изображения

82