c ++ GetCurrentThemeName为经典窗口主题返回空值

Zhe*_*den 1 c++ windows winapi

当我打电话GetCurrentThemeName()给Windows 7 Basic风格时,我得到"C:\ windows\resources\Themes\Aero\Aero.msstyles",但是当我将其称为Windows经典风格或Windows高对比度风格时,我得到空洞的刺痛.

这是预期的吗?

如何在C++应用程序中区分Windows经典风格和Windows高对比度风格?

谢谢,振亚

Han*_*ant 5

Windows Classic和High Contrast都将禁用主题,因此完全需要空字符串.

  • 使用GetThemeAppProperties()检查是否启用了主题,检查STAP_ALLOW_CONTROLS
  • 使用带有SPI_GETHIGHCONTRAST的SystemParametersInfo检查是否启用了高对比度.