首页 > 开发 > 综合 > 正文

浅谈如何利用PB实现树型列表动态半透明提示(一)(原创)

2024-07-21 02:10:10
字体:
来源:转载
供稿:网友

作者:balloonman2002  2004年6月26日

本文拟结合powerbuilder语言,简述如何实现树型列表动态半透明提示,即鼠标移动到树型列表某一项item时会动态提示,且为类似金山词霸的半透明提示效果。

效果图见:

http://blog.csdn.net/images/blog_csdn_net/balloonman2002/17312/r_balloon-1.jpg

本文拟分以下四部分论述分三次完成:

(一)基本思路

(二)如何获取当前鼠标坐标对应node结点信息

(三)半透明效果实现

(四)气泡形状效果实现

一、基本思路

(一)在powerbuilder语言中,treeview控件并不具备如vb等其他语言一样当鼠标未选中node时,直接获取当前鼠标对应x、y坐标下所属node结点的方法,vb中可以直接利用hittest方法来获取对当前鼠标坐标对应的node结点。但可以通过调用api:sendmessage函数来向treeview控件发送一个tvm_hittest消息来间接实现上述效果。

(二)在powerbuilder语言中,并没有直接让控件实现半透明的方法,而目前windows2000/xp操作系统提供了一个api函数:setlayeredwindowattributes,但该api函数不支持windows98操作系统,考虑到系统的全面兼容性,必须同时考虑windows98下面应该如何实现半透明提示效果。因此我们必须放弃采用上述api,而采用模拟半透明的方式,即:处理window的mousemove事件,当鼠标移动到某一位置后将鼠标附近区域用api函数bitblt、alphablend截图下来,并拷贝到气泡提示控件背景设备即可模拟实现半透明效果。

(三)如何实现微软的气泡形状控件?由于powerbuilder对一些控件支持并不好,而且此类控件难以寻找,我们就考虑自己动手编写。主要借助api函数:createrectrgn、createroundrectrgn、createpolygonrgn、combinergn等。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表