VB 这些颜色值是什么?

&H80000005&
&H80000006&
&H80000008&

这些对应的是系统标准界面颜色,比如
&H80000005& 系统窗口背景色
&H80000006& 系统窗口框架色
&H80000008& 系统窗口文本色

这些颜色是跟桌面主题直接关联的,就是说如果在桌面主题中把窗口背景色改为其他颜色,那么在VB窗口中设为&H80000005&的颜色也会跟着改变颜色,换句话说就是&H80000005&并不表示某个具体的颜色,它具体是什么颜色是由操作系统来决定的。
真实的RGB颜色值是个24位的长整型值,如纯白色是&H00FFFFFF&,蓝色是&H00FF0000&。而&H80000005&则是个32位数(最高位是1),所以它不是一个真实的颜色值,你可以把它理解为一个颜色指针,指向的是系统调色板中的某个颜色。追问

为什么RGB是24位,哪24位呢?
32位数又是哪32位呢?最高位又是哪一位呢?

追答

&H00FFFFFF&转化为2进制数是:
00000000111111111111111111111111
作为RGB值,&H00FFFFFF&已经是最大值了,它只使用了后面的24位,所以说它是个24位的整数;
而&H80000005&转化为2进制数则是:

10000000000000000000000000000101
可以看到它的最高位(32位)为1,所以说它是个32位整数。

换一种说法:一个长整型数由4个字节组成(比如&H12345678&由 12 34 56 78 这四个字节组成)每个字节8位,所以是4*8=32位,而RGB值只使用了其中的后3个字节(如&H00FFFFFF&),所以是3*8=24位。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04
在 VB6.0 中,代表颜色的值是一个长整数,并且只用其低段的3个字节,最高字节总是为0的。
象这些 &H8xxxxxxx 的“颜色”,并不代表实际的颜色值。
它只是“颜色代码”,具体用什么颜色,是由“系统外观”的高级设置参数决定的。

&H80000005  是“窗口背景” 比如你打开记事本,那个编辑框的背景色就是这个。
&H80000006  是“窗口框架” 这是在用传统风格的模式下,窗口最外沿边线的颜色。
&H80000008  是“窗口前景” 就是窗口内的文字用的默认颜色,
        比如你打开记事本,乱输入几个字,这个文字的颜色就是它。追问

低段的3个字节是哪?

追答

VB6.0中,Long类型的数据,是一个4字节的数据块。
我说的“低段的3个字节”,就是指它的内存起始地址开始的、连续的3个字节。
在作为“颜色值”处理时,第4个字节若为非0,就看情况了:
 如果整个Long值是某系统色彩代码,则被转换为对应的色彩(具体值跟系统配色设置相关);
 如果整个Long值不属于“系统代码”,则会报错或忽略第4字节(跟“使用对象”的具体处理有关)。
当Long值的第4字节为0时,自然就是作为24位的RGB色彩处理了。
第1个字节是红色分量,第2个字节是绿色分量,第3个字节是蓝色分量。
  如果你不清楚这些数据在计算机内如何存储、数据如何编码及表示,你又有兴趣知道的话,去看看计算机原理基础知道方面的资料、书籍。我再在这儿讲这些基础知识,没有意义。这些也不是在这儿发表一大篇文字就能给你讲明白的,发表内容的字数有限制呢,并且也没必要。

本回答被提问者采纳
第2个回答  2014-01-15
&H80000005  是“系统设置里窗口的背景颜色,系统设置改了那么颜色也改了”
&H80000006  是“窗口外框的颜色,系统设置改了那么颜色也改了”
&H80000008  是“在窗口里用户输入文字的颜色,系统设置改了那么颜色也改了”
这样好理解吧。
第3个回答  2014-01-14
第一个是白色,
后二个都是黑色
第4个回答  2014-01-31
你自己在VB上试一下不就知道了 白 黑 黑
相似回答