都来看看:竟然无法赋值给控件颜色啦,是什么原因啊?

mfkinfo 2008-11-09 07:03:07
使用OLE_COLOR属性获得的颜色值无法赋给控件,使用syscolor()得到的颜色却可以是何故?
赋值语句如下:
Call SendMessage(hwndTV, TVM_SETTEXTCOLOR, 0, ByVal m_TVForeColor)
查阅资料说得完成从OLE_COLOR到COLORREF的转换
又添加函数修改如下:
call OleTranslateColor(m_TVForeColor, 0&, ToSysColor)
Call SendMessage(hwndTV, TVM_SETTEXTCOLOR, 0, ToSysColor)
运行后发现tosyscolor和m_tvforecolor的值确实不同,但问题没有解决。
快绝望了,只得向诸位求教啦。希望大家能帮助我……
...全文
185 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mfkinfo 2008-11-13
  • 打赏
  • 举报
回复
songyaowu:
感谢你的答复。一门心思捉摸复杂的问题,却忽略了最基本的属性。再次感谢你的答复——这个问题足足困挠了我一周的时间,真是不小的教训——以后得注意控件的基本属性、方法和事件了。
韧恒 2008-11-12
  • 打赏
  • 举报
回复
如果你要设置MSCOMCTL.OCX中TreeView的前景色,那么可以使用Node对象的ForeColor属性。

如:
Dim n As Node

Set n = TreeView1.Nodes.Add(, , , "Item1")
n.ForeColor = RGB(255, 0, 0)

Set n = TreeView1.Nodes.Add(, , , "Item2")
n.ForeColor = RGB(255, 0, 255)

Set n = TreeView1.Nodes.Add(, , , "Item2")
n.ForeColor = RGB(0, 255, 255)

虽然有些麻烦,但功能还是不错的,它允许不同项目有不同的颜色。所谓有得必有失嘛!^_^
韧恒 2008-11-11
  • 打赏
  • 举报
回复
我一直使用OleTranslateColor完成系统色到long颜色值的转换。

对于你的问题你打开“工程->部件...”对话框,看一下你工程中引用的TreeView是COMCTL32.OCX还是MSCOMCTL.OCX,如果是后者,我试了下,COMCTL32.OCX中的TreeView可以改变文本颜色,但MSCOMCTL.OCX用这个方法不行。
mfkinfo 2008-11-11
  • 打赏
  • 举报
回复
昨晚已经发现这一问题。

有没有人知道如何设置VB6.0的treeview的前景色(现在都用到.net实在不想退回到5.0)?
mfkinfo 2008-11-11
  • 打赏
  • 举报
回复
使用ole_color属性与使用VB提供的颜色对话框取得的值有何不同啊,为什么用后者取得的值可以改变树型控件的文本颜色,而前者不行?
mfkinfo 2008-11-11
  • 打赏
  • 举报
回复
另外,我发现oletranslate执行后,返回值为0,一般API在执行失败时才返回0,看来转换并未成功。
强制使用值传递也是如此:
call OleTranslateColor(m_TVForeColor, 0&,byval ToSysColor)
是什么原因啊?
mfkinfo 2008-11-11
  • 打赏
  • 举报
回复
从OLE_COLOR到COLORREF的转换
call OleTranslateColor(m_TVForeColor, 0&, ToSysColor)
执行后ToSysColor值与m_TVForeColor并没有变化。会不会是调色板选错了?
mfkinfo 2008-11-10
  • 打赏
  • 举报
回复
发现一个不错的介绍sendmessage函数的博客,内容罗列了大量常数,不妨看看:
http://ecz.blog.hexun.com/18905362_d.html
韧恒 2008-11-10
  • 打赏
  • 举报
回复
我没有测试你的代码,表面上看来似乎没什么不妥,但是你可能有一个小小的疏忽,最后一个参数应使用值传递,而并非默认的地址传递,你试试吧:

call OleTranslateColor(m_TVForeColor, 0&, ToSysColor)
Call SendMessage(hwndTV, TVM_SETTEXTCOLOR, 0, Byval ToSysColor)
mfkinfo 2008-11-09
  • 打赏
  • 举报
回复
有知道系统调色板hdc的罗列几个,也非常感激。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧