我表单上的黄色对象表现出点击透明度

时间:2017-06-17 10:47:48

标签: vb6

我的应用程序中有多个vb6表单上的“点击”黄色对象存在问题:

Image Example

我唯一可以想到可能影响它的是以下(来自VBForums,我用来使青色元素透明,就像你在图像中看到的那样这应该对vbYellow没有影响。

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
            ByVal hwnd As Long, _
            ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
            ByVal hwnd As Long, _
            ByVal nIndex As Long, _
            ByVal dwNewLong As Long) As Long

Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
            ByVal hwnd As Long, _
            ByVal crKey As Long, _
            ByVal bAlpha As Byte, _
            ByVal dwFlags As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2

Private Sub Form_Load()
Me.BackColor = vbCyan
SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes Me.hwnd, vbCyan, 0&, LWA_COLORKEY
End Sub

我试图用相同颜色的图像替换vbYellow形状。这也有一个点击功能,但结果相同,甚至没有触发任何设置点击功能。

1 个答案:

答案 0 :(得分:0)

我认为问题在于VB6 / Win32有时会使用不同的颜色代码。有时它只是从#RRGGBB(RGB)切换到/从#BBGGRR(BGR)切换。

选择黄色的好颜色是洋红色,#FF00FF,因为无论红色和蓝色成分是否切换,此颜色都会起作用。

然后可以直接使用

vbMagenta而不会出现问题。