Включить режим высокой контрастности в C/C++

Я пытаюсь создать файл .exe в Visual, который включает режим высокой контрастности. Я читаю

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-systemparametersinfoa и

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ns-winuser-taghighcontrasta

вверх и вниз, но я не могу найти полный ответ. Что входит в uiParam и pvParam? Скажите, пожалуйста, где вы нашли ответ!

SystemParametersInfo(SPI_SETHIGHCONTRAST, , , SPIF_SENDCHANGE)


person Dubstep    schedule 03.03.2019    source источник


Ответы (1)


uiParam

Тип: УИНТ

Параметр, использование и формат которого зависят от запрашиваемого или устанавливаемого системного параметра. Дополнительные сведения об общесистемных параметрах см. в описании параметра uiAction. Если не указано иное, для этого параметра необходимо указать ноль.

Вы будете использовать 0 для этого.

pvParam

Тип: ПВОИД

Задает параметры функции доступности HighContrast. Параметр pvParam должен указывать на структуру HIGHCONTRAST, содержащую новые параметры.

Вам понадобится структура HIGHCONTRAST для этого параметра с данными, которые вы хотите передать.

Это означает, что вы будете делать:

HIGHCONTRAST hc;
ZeroMemory(&hc, sizeof(HIGHCONTRAST));
hc.cbSize = sizeof(HIGHCONTRAST);
hc.dwFlags = HCF_HIGHCONTRASTON;
SystemParametersInfo(SPI_SETHIGHCONTRAST, 0, &hc, SPIF_SENDCHANGE);

В качестве примечания: вы, вероятно, захотите вернуть среду Windows в то же состояние, в котором она находилась при запуске вашего приложения.

Вы должны вызвать SystemParametersInfo с SPI_GETHIGHCONTRAST, прежде чем изменять его, сохранить эту структуру HIGHCONTRAST на потом, а затем восстановить систему до этой структуры HIGHCONTRAST, когда ваше приложение выйдет.

person Lynn Crumbling    schedule 03.03.2019
comment
Я вроде новичок в C++. Как мне это сделать и что это значит/делает? - person Dubstep; 07.03.2019
comment
Я не уверен, о чем вы спрашиваете. - person Lynn Crumbling; 07.03.2019
comment
Как бы я переключил его обратно? Будет ли это ` HIGHCONTRAST hc; Информация о системных параметрах (SPI_GETHIGHCONTRAST, 0, &hc, SPIF_SENDCHANGE); SystemParametersInfo(SPI_SETHIGHCONTRAST, 0, &hc, SPIF_SENDCHANGE); `? - person Dubstep; 07.03.2019
comment
Ага, сойдет. Спрячьте hc, полученный в результате вызова SPI_GETHIGHCONTRAST, до тех пор, пока вы не будете готовы восстановить его. Возможно, вы захотите назвать его hcOriginal, чтобы было понятно, для чего он нужен. - person Lynn Crumbling; 07.03.2019
comment
Могу ли я и как мне сохранить высококонтрастную переменную и сохранить ее в файле на будущее, а затем получить ее? Я ищу, чтобы включать и выключать его с помощью отдельных программ. - person Dubstep; 10.03.2019
comment
@Dubstep Я бы задал это как отдельный вопрос. - person Lynn Crumbling; 11.03.2019