2016-06-21 61 views
1

在Windows 10中,高對比度主題是與默認的Windows 10主題在邊界方面行爲不同的唯一主題。如何確定Windows 10中是否啓用了高對比度主題?

我想檢測用戶是否處於Windows 10中的高對比度主題中。

+0

要知道,高對比度模式和高對比度主題是不同的想法。如果您處於高對比度模式,則可能使用了一些高對比度主題。但也可以選擇高對比度的主題,而不需要實際處於高對比度模式。 https://blogs.msdn.microsoft.com/oldnewthing/20081203-00/?p=19983 –

+0

@AdrianMcCarthy - 這是一個很好的觀點,你反對我在我的答案中添加一個註釋來說明這種效果嗎? – theB

+0

我其實需要發現我們是否有高對比度主題,而不是模式。我會編輯我的問題。 編輯:原因是沒有辦法在默認的Windows 10主題中獲得陰影區域的寬度,而Windows 10中的高對比度主題是沒有陰影的唯一主題。 –

回答

1

確定系統當前是否處於高對比度模式的方法是使用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有關什麼其他標誌是可用的信息。

1

我們可以使用AccessibilitySettings類來獲得高對比度的信息。並使用AccessibilitySettings.HighContrast來指示系統高對比度功能是打開還是關閉。

例如:

Windows::UI::ViewManagement::AccessibilitySettings^ accessibilitySettings = ref new Windows::UI::ViewManagement::AccessibilitySettings; 
Boolean ishighcontrast = accessibilitySettings->HighContrast; 
+1

這對我來說看起來不像C++。 – IInspectable

相關問題