在C / C ++中启用高对比度模式

时间:2019-03-03 18:30:38

标签: c++ c windows-10 high-contrast

我正在尝试在Visual中制作一个.exe文件,以启用高对比度模式。我读了

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

上下,但我找不到完整的答案。 uiParampvParam中会发生什么?请告诉我您在哪里找到答案!

SystemParametersInfo(SPI_SETHIGHCONTRAST, , , SPIF_SENDCHANGE)

1 个答案:

答案 0 :(得分:3)

  

uiParam

     

类型:UINT

     

其用法和格式取决于系统参数的参数   被查询或设置。有关系统范围的更多信息   参数,请参见uiAction参数。如果没有其他说明,   您必须为此参数指定零。

为此,您将使用0。

  

pvParam

     

类型:PVOID

     

设置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环境恢复到应用程序启动时的状态。

更改之前,应使用SPI_GETHIGHCONTRAST调用SystemParametersInfo,保存该HIGHCONTRAST结构以供以后使用,然后在应用程序退出时将系统还原到该HIGHCONTRAST结构。