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

发表于:2007-05-25来源:作者:点击数: 标签:
MI LY: 仿宋_GB2312; LETTER-SPACING: 0.2pt>作者: BALLOONMAN2002 2004年6月26日 本文拟结合 POWERBUILDER语言,简述如何实现树型列表动态半透明提示,即鼠标移动到树型列表某一项ITEM时会动态提示,且为类似金山词霸的半透明提示效果。 效果图见: http:/

MILY: 仿宋_GB2312; LETTER-SPACING: 0.2pt">作者: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等。

原文转自:http://www.ltesting.net