2016-06-21 7 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

Мне действительно нужно узнать, есть ли у нас тема с высоким контрастом, а не режим. Я отредактирую свой вопрос. edit: причина в том, что нет способа получить ширину области тени в теме по умолчанию Windows 10, а тема с высоким контрастом в окнах 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