如何重置 Microsoft Heirarchical FlexGrid 的颜色属性?
How to reset color properties of Microsoft Heirarchical FlexGrid?
我在遗留 VB6 应用程序中有一个 MSHFlexgrid,用户想要在其中设置各种颜色。我已经解决了应用用户颜色的问题,但我还需要添加一个重置选项。但是,在尝试以下行时出现溢出错误:
grdUserData.BackColor = vbWindowBackground
相同的代码在我使用过的其他控件上工作正常,但在 MSHFlexGrid 上出错。 vbWindowBackground
的实际值为&H80000005
或-2147483643
.
我尝试读取另一个控件的 BackColor
属性,但它具有相同的基础值,因此也会导致相同的错误。
如何获得用于控件的实际 BGR/RGB(或长)值,而不是我假设的预设是运行时查找颜色的一部分?
虽然很容易估计当前 Windows 主题的某些控件的正确颜色是什么,但我需要为当前主题获取正确的颜色,而不管当前主题是什么。
这个怎么样?
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
我在遗留 VB6 应用程序中有一个 MSHFlexgrid,用户想要在其中设置各种颜色。我已经解决了应用用户颜色的问题,但我还需要添加一个重置选项。但是,在尝试以下行时出现溢出错误:
grdUserData.BackColor = vbWindowBackground
相同的代码在我使用过的其他控件上工作正常,但在 MSHFlexGrid 上出错。 vbWindowBackground
的实际值为&H80000005
或-2147483643
.
我尝试读取另一个控件的 BackColor
属性,但它具有相同的基础值,因此也会导致相同的错误。
如何获得用于控件的实际 BGR/RGB(或长)值,而不是我假设的预设是运行时查找颜色的一部分?
虽然很容易估计当前 Windows 主题的某些控件的正确颜色是什么,但我需要为当前主题获取正确的颜色,而不管当前主题是什么。
这个怎么样?
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