【问题标题】:Enable High Contrast Mode in C/C++在 C/C++ 中启用高对比度模式
【发布时间】:2019-03-04 03:09:12
【问题描述】:

我正在尝试在 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)

【问题讨论】:

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


    【解决方案1】:

    ui参数

    类型:UINT

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

    您将为此使用 0。

    pv参数

    类型: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 结构。

    【讨论】:

    • 我对 C++ 有点陌生。我该怎么做?这意味着什么/做什么?
    • 我不确定你在问什么。
    • 我该如何切换回来?会不会是 `HIGHCONTRAST hc; SystemParametersInfo(SPI_GETHIGHCONTRAST, 0, &hc, SPIF_SENDCHANGE); SystemParametersInfo(SPI_SETHIGHCONTRAST, 0, &hc, SPIF_SENDCHANGE); `?
    • 是的,可以。存储您从 SPI_GETHIGHCONTRAST 调用中获得的 hc,直到您准备好恢复它。可能想将其称为 hcOriginal 以明确其用途。
    • 可以以及如何存储高对比度变量并将其保存在文件中以供以后检索?我希望通过单独的程序打开和关闭它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多