主题:怎样读取系统颜色
singlion
[专家分:690] 发布于 2008-08-09 00:49:00
在Windows中,自带的程序颜色都是统一的,比如我在桌面点右键在主题里边把程序背景色更改为苹果绿(默认是纯白色,很刺眼),那么所有的程序的背景都是这颜色了。我正在模拟Windows记事本,我想做成让它能够使背景色与Windows一致,如何才能做到?
回复列表 (共7个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-08-09 10:46:00
你可以设置文本框的背景色啊(BackColor属性)
板凳
老大徒伤悲 [专家分:29120] 发布于 2008-08-09 10:54:00
你说得很对。做小型程序,一般我们都没有做全局考虑。
windows应该是用了全局变量来表示各种设置。颜色应该也是如此。
这些值都可以使用windows本身的函数取得。
3 楼
joforn [专家分:1460] 发布于 2008-08-09 13:43:00
如果你没有在VB中重新定义窗体背景的话,你的程序就是和Windows中的设置保持一致的啊。
4 楼
jianghongbo1 [专家分:410] 发布于 2008-08-09 14:23:00
也可修改注册表来改变。
先声明
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 楼
一江秋水 [专家分:9680] 发布于 2008-08-10 10:03:00
不需要修改注册表吧,就为了小小的背景颜色?
BackColor属性的颜色表中有一项:系统,这就是“显示属性→外观→高级→项目”中的系统颜色,系统颜色编号从&H80000000—&H80000018,无论你是用API函数获取系统颜色还是打开注册表来获取系统颜色,都是这19个颜色编号,如果你把控件的背景色设置为“窗口背景”,那么,不论用户在“显示属性→外观→高级→项目”中”中如何修改窗口的颜色,你这个控件的背景色都会跟着改变
6 楼
guoyong_cy [专家分:3050] 发布于 2008-08-10 10:43:00
必须用&H80000000—&H80000018编号(不是19个哈!),不要用RGB()色(在属性设置里面是ABGR,和RGB()是反的),系统颜色变化的时候它就跟着变!
7 楼
一江秋水 [专家分:9680] 发布于 2008-08-10 11:22:00
呵呵,确实不止19个,这是16进制的编号,一时糊涂
我来回复