回 帖 发 新 帖 刷新版面

主题:怎样读取系统颜色

在Windows中,自带的程序颜色都是统一的,比如我在桌面点右键在主题里边把程序背景色更改为苹果绿(默认是纯白色,很刺眼),那么所有的程序的背景都是这颜色了。我正在模拟Windows记事本,我想做成让它能够使背景色与Windows一致,如何才能做到?

回复列表 (共7个回复)

沙发

你可以设置文本框的背景色啊(BackColor属性)

板凳

你说得很对。做小型程序,一般我们都没有做全局考虑。
windows应该是用了全局变量来表示各种设置。颜色应该也是如此。
这些值都可以使用windows本身的函数取得。

3 楼

如果你没有在VB中重新定义窗体背景的话,你的程序就是和Windows中的设置保持一致的啊。

4 楼

也可修改注册表来改变。
先声明
regcreatekey
regsetvalueex
regclosekey
const hkey-user=&h8000003
const reg-sz=1
form1.backcolor=rgb(x,y,z,)'设置
regcreatkey(hkey-user,".default\control panel\colors",hk)‘打开
regsetvalueex(hk,"background",0,reg-sz,byval(x &""y &""& z),len(x &""y &""& z)’写入
regclose(hk)
这样与windows一致了

5 楼

不需要修改注册表吧,就为了小小的背景颜色?
BackColor属性的颜色表中有一项:系统,这就是“显示属性→外观→高级→项目”中的系统颜色,系统颜色编号从&H80000000—&H80000018,无论你是用API函数获取系统颜色还是打开注册表来获取系统颜色,都是这19个颜色编号,如果你把控件的背景色设置为“窗口背景”,那么,不论用户在“显示属性→外观→高级→项目”中”中如何修改窗口的颜色,你这个控件的背景色都会跟着改变

6 楼

必须用&H80000000—&H80000018编号(不是19个哈!),不要用RGB()色(在属性设置里面是ABGR,和RGB()是反的),系统颜色变化的时候它就跟着变!

7 楼

呵呵,确实不止19个,这是16进制的编号,一时糊涂

我来回复

您尚未登录,请登录后再回复。点此登录或注册