我在遗留VB6应用程序中有一个MSHFlexgrid,用户想要设置各种颜色。我已经整理了应用用户颜色,但我还需要添加一个重置选项。但是,在尝试以下行时出现溢出错误:
grdUserData.BackColor = vbWindowBackground
相同的代码在我使用过的其他控件上运行正常但MSHFlexGrid出错。 vbWindowBackground
的实际值为&H80000005
或-2147483643
。
我尝试读取另一个控件的BackColor
属性,但它具有相同的基础值,因此也会导致相同的错误。
如何获取用于控件的实际BGR / RGB(或长)值,而不是我假设的预设是运行时查找颜色的一部分?
虽然很容易估计当前Windows主题的某些控件的正确颜色,但无论当前主题是什么,我都需要为当前主题获得正确的颜色。
答案 0 :(得分:1)
这个怎么样?
Private Declare Function GetSysColor Lib "user32" ( _
ByVal nIndex As Long) As Long
Private Function BgrColor(ByVal Color As Long) As Long
If Color >= 0 Then
BgrColor = Color
Else
BgrColor = GetSysColor(Color And &HFFFFFF)
End If
End Function