|
→ PowerBuilder制作IE风格的图标按钮一
|
|
|
www.kepusoft.com 信息之舟电脑软件应用栏目
|
|
|
信息之舟电脑软件应用栏目编者按:
---- 本文介绍在PowerBuilder中实现IE风格的图标按钮的技巧。在C++ Builder开发工具中,有一种图标按钮(SpeedButton),这种按钮可以在鼠标移入按钮后,在图片的周围会出现凸出的边框,鼠标移出按钮后边框消失。而在PowerBuilder中没有提供这种功能的按钮,为了使开发的应用程序界面更丰富,我们使用自定义图形控件(Picture)扩展并实现了此功能,这种方法设计出的程序简洁实用。
---- 一、实现功能
---- 按钮可以显示四种状态图形:
---- 1、Normal状态;
---- 2、Disabled状态;
---- 3、MouseOver状态(鼠标进入按钮区);
---- 4、ClickDown状态(鼠标按下)。
---- 二、关键方法
---- 1、当鼠标进入按钮区域时,控件图片改换成MouseOver状态的图片,并设置状态信号;
---- 2、鼠标滑入按钮区域后用Windows API函数SetCapture来捕获鼠标输入消息,跟踪鼠标位置;
---- 3、当监测到鼠标滑出按钮区域时,用ReleaseCapture函数释放鼠标捕获,恢复按钮图片到Normal状态并设置状态信号;
---- 4、改变控件的图片(PictureName)前,先用ReleaseCapture释放鼠标捕获,然后改变PictureName属性值,接着重新调用SetCapture函数,因为改变图片后PowerBuilder重新建立了控件窗口,窗口的句柄(hWnd)也随之改变了。
---- 三、设计过程
---- 1、新建“User Object” -〉选择Visual的Standard类 -〉选择“Picture”;
---- 2、定义全局的或局部的外部函数:
// ******************************* // Declare External Functions // ******************************* function ulong SetCapture (ulong hwnd) library "user32.dll" function boolean ReleaseCapture (ulong hwnd) library "user32.dll" function boolean DrawEdge(ulong hdc, ref rect qrc, uint edge, uint grfFlags) library "user32.dll" ---- 3、定义结构数据类型
RECT { long left long top long right long bottom } ---- 4、定义控件共享变量:
// ******************************* // Declare Shared Variables // ******************************* boolean sb_SuppressHoverBorder ---- 5、定义控件实例变量:
// ******************************* // Declare Instance Variables // ******************************* Private: boolean ib_MouseCaptured
Public: string is_PicNormal string is_PicDisabled string is_PicMouseOver string is_PicClickDown int in_State ---- 6、定义用户事件:
// ******************************* // Declare User Events // ******************************* Event Name="mousemove", ID="pbm_mousemove" Event Name="lbuttondown", ID="pbm_lbuttondown" Event Name="lbuttonup", ID="pbm_lbuttonup"
 |
|
www.kepusoft.com
信息之舟电脑之家收集整理推荐文章
|
|
|
|
|
|
|