Вы пробовали буквальное &H0000FF00&
? Следующий код прекрасно работает для меня:
Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN
Конечно, VB 6 автоматически сворачивает это в это, что все еще прекрасно работает, потому что два значения полностью эквивалентны численно:
Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN
Хитрость в том, что значение должно быть объявлено как Long
, а не Integer
. Помещение амперсанда (&
) после того, как числовой литерал завершит это.
Это также объясняет, почему вы видите значение -256 вместо ожидаемого 65280. Значение 65280 слишком длинное, чтобы уместиться в Integer
, и когда оно переполняет этот тип данных, VB 6 снова оборачивает его, выдавая -256.
Стоит также отметить, что шестнадцатеричные литералы в VB 6 не будут эквивалентны тем, с которыми вы, вероятно, знакомы по веб и HTML-программированию. Вместо обозначения RRGGBB, которое вы там найдете, VB 6 использует обозначение BBGGRR, или &H00BBGGRR&
, то же самое, что и собственная структура Win32 COLORREF
, где младший байт красный, а не синий.
Конечно, обратите внимание, что для стандартных значений цвета, таких как показанные здесь, вам, вероятно, лучше использовать литералы VB, такие как vbGreen
:
Me.Label1.BackColor = vbGreen