在Windows 10中,高對比度主題是與默認的Windows 10主題在邊界方面行爲不同的唯一主題。如何確定Windows 10中是否啓用了高對比度主題?
我想檢測用戶是否處於Windows 10中的高對比度主題中。
在Windows 10中,高對比度主題是與默認的Windows 10主題在邊界方面行爲不同的唯一主題。如何確定Windows 10中是否啓用了高對比度主題?
我想檢測用戶是否處於Windows 10中的高對比度主題中。
確定系統當前是否處於高對比度模式的方法是使用SystemParametersInfo
來獲取HIGHCONTRAST
結構,該結構包含您需要的所有信息。
一個簡單的例子:
HIGHCONTRAST info = { 0 };
info.cbSize = sizeof(HIGHCONTRAST);
BOOL ok = SystemParametersInfoW(SPI_GETHIGHCONTRAST, 0, &info, 0);
if (ok)
{
if (info.dwFlags & HCF_HIGHCONTRASTON)
{
wcout << L"High Contrast On" << endl;
}
else
{
wcout << L"High Contrast Off" << endl;
}
}
查看文檔HIGHCONTRAST
有關什麼其他標誌是可用的信息。
我們可以使用AccessibilitySettings類來獲得高對比度的信息。並使用AccessibilitySettings.HighContrast來指示系統高對比度功能是打開還是關閉。
例如:
Windows::UI::ViewManagement::AccessibilitySettings^ accessibilitySettings = ref new Windows::UI::ViewManagement::AccessibilitySettings;
Boolean ishighcontrast = accessibilitySettings->HighContrast;
這對我來說看起來不像C++。 – IInspectable
要知道,高對比度模式和高對比度主題是不同的想法。如果您處於高對比度模式,則可能使用了一些高對比度主題。但也可以選擇高對比度的主題,而不需要實際處於高對比度模式。 https://blogs.msdn.microsoft.com/oldnewthing/20081203-00/?p=19983 –
@AdrianMcCarthy - 這是一個很好的觀點,你反對我在我的答案中添加一個註釋來說明這種效果嗎? – theB
我其實需要發現我們是否有高對比度主題,而不是模式。我會編輯我的問題。 編輯:原因是沒有辦法在默認的Windows 10主題中獲得陰影區域的寬度,而Windows 10中的高對比度主題是沒有陰影的唯一主題。 –