结论:看起来按钮控制是唯一完全支持暗黑模式风格的控制方式。对于其他所有控制,开发者必须自行设置背景和前方颜色。遗憾的是,OptionButton控制和复选框控制无法实现这一点,因为主动视觉风格不允许更改这些控制的前色。报告模式下列表视图的列头也是一样,但这里你不能更改背景颜色。
窗口标题栏暗黑模式的代码:
Private Declare Function DwmSetWindowAttribute Lib "dwmapi.dll" (ByVal HWND As Long, ByVal dwAttribute As Long, ByRef pvAttribute As Long, ByVal cbAttribute As Long) As Long
Private Const DWMWA_USE_IMMERSIVE_DARK_MODE = 20
Private Sub Form_Load()
Dim bValue As Long
bValue = 1
Call DwmSetWindowAttribute(Me.hWnd, DWMWA_USE_IMMERSIVE_DARK_MODE, bValue, LenB(bValue))
End Sub
控制滚动条暗模式的代码:
Private Declare Function SetWindowTheme Lib "uxtheme" (ByVal hwnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
Private Sub Form_Load()
SetWindowTheme control.hwnd, StrPtr("DarkMode_Explorer"), 0&
End Sub
ListView 列头的暗黑模式可用以下代码激活:
SetWindowTheme ListView1.hWndHeader, StrPtr(“DarkMode_ItemsView”), 0&
SetWindowTheme OptionButtonW1.hWnd, StrPtr("DarkMode_DarkTheme"), 0