请问 dkfdtf,控件vista 风格?

LUJUN 2009-09-23 12:27:26
好像.net 下 可以使用 下列代码 使treeview或listview 具有vista Explorer风格
在vfp 怎么不行呢

Declare Integer SetWindowTheme In UxTheme INTEGER , String ,String
SetWindowTheme(thisform.treeview.hWnd , "Explorer", NULL)
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thinclient 2011-03-30
  • 打赏
  • 举报
回复
Good wonderful great
LUJUN 2009-09-24
  • 打赏
  • 举报
回复
非常谢谢, unicode 格式我也试过,忘了加一个chr(0),晕,怎么也不成功 ,呵呵,^-^

那个双缓冲TVS_EX_DOUBLEBUFFER还要加上,否则闪的厉害
同样的方法可以处理Listview
解决了这个问题,界面确实增色不少,虽然vista/windows 7有效果,以后会普及windows 7的。
vfp 做界面比较不容易做漂亮,但是善于用v5,也能增色不少。

佩服dkfdtf,API功力和对windows运行理解方面,确实难以企及。

再次表示非常严重的感谢。




LUJUN 2009-09-24
  • 打赏
  • 举报
回复
问题解决,谢谢!

界面好看多了。
LUJUN 2009-09-23
  • 打赏
  • 举报
回复
环境是vista ,vfp9 sp2

所谓vista Explorer风格就是三角图标代替+-图标,当前行使用蓝色立体的颜色,有动画效果。

效果:
都市夜猫 2009-09-23
  • 打赏
  • 举报
回复
vfp 也可以的,设置时有几点要注意:
1. 只有 v5(Microsoft treeview control, version 5.0 sp2) 版的树控件才可能应用可视效果,v6 版是无法做到的
2. SetWindowTheme 函数中第二个参数需要 unicode 格式
3. 需要启用热跟踪并清除连接线来尽量模仿系统的显示效果

按下列方法可以看到效果(当然必须在 Vista/Win7 环境下,有些破解过的 uxtheme.dll 也许可以)
1. 新建一表单,放一个 v5 版的 treeview 控件
2. 在控件的 Init 事件中写代码:
* 添加几个测试节点
With This
.Nodes.Add( ,, 'R1', '根节点')
.Nodes.Add( 'R1', 4, 'S1', '子节点1')
.Nodes.Add( 'R1', 4, 'S2', '子节点2')
.Nodes.Add( 'R1', 4, 'S3', '子节点3')
.Nodes.Add( 'S1', 4, 'S11', '孙节点11')
.Nodes.Add( 'S1', 4, 'S12', '孙节点12')
.Nodes.Add( 'S2', 4, 'S21', '孙节点21')
.Nodes.Add( 'S2', 4, 'S22', '孙节点22')
.SelectedItem = .Nodes.Item(5)
Endwith

* 下面设置 explore 样式
#Define GWL_STYLE -16
#Define TV_FIRST 0x1100
#Define TVM_SETEXTENDEDSTYLE (TV_FIRST + 44)
#Define TVM_GETEXTENDEDSTYLE (TV_FIRST + 45)
#Define TVS_HASLINES 0x0002
#Define TVS_TRACKSELECT 0x0200
#Define TVS_EX_FADEINOUTEXPANDOS 0x0040

Declare Long GetWindowLong In WIN32API Long, Long
Declare Long SetWindowLong In WIN32API Long, Long, Long
Declare Long SetWindowTheme In uxtheme Long, String, String
Declare Long SendMessage In WIN32API As sendmsg_nn Long, Long, Long, Long

With This
m.lnStyle = GetWindowLong(.HWnd, GWL_STYLE)
m.lnStyle = Bitor(m.lnStyle, TVS_TRACKSELECT) && 启用热跟踪
m.lnStyle = Bitand(m.lnStyle, Bitnot(TVS_HASLINES)) && 不显示连接线
SetWindowLong(.HWnd, GWL_STYLE, m.lnStyle)

SetWindowTheme(.HWnd, Strconv('explorer'+Chr(0),5), Null) && 设置 explore 样式
m.lnExStyle = sendmsg_nn(.HWnd, TVM_GETEXTENDEDSTYLE, 0, 0)
m.lnExStyle = Bitor(m.lnExStyle, TVS_EX_FADEINOUTEXPANDOS) && 启用淡入淡出效果
sendmsg_nn(.HWnd, TVM_SETEXTENDEDSTYLE, 0, m.lnExStyle)
Endwith

LUJUN 2009-09-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/dkfdtf/archive/2008/08/09/2789782.aspx
这篇文章不错。

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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