一、实现功能
按钮可以显示四种状态图形:
1、normal状态;
2、disabled状态;
3、mouseover状态(鼠标进入按钮区);
4、clickdown状态(鼠标按下)。
二、关键方法
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