//跟踪超链接
import win.ui;
/*DSG{{*/
var winform = win.form(text="提示控件 / 跟踪模式 / 启用超链接";right=759;bottom=469)
winform.add(
button={cls="button";text="点这里显示提示控件";left=176;top=155;right=404;bottom=226;z=1}
)
/*}}*/
// 导入提示控件库
import win.ui.tooltip;
// 创建一个跟踪模式的提示控件,并将其关联到窗口
var tooltipCtrl = win.ui.tooltip.tracking(winform);
// 设置提示控件的标题,启用关闭按钮
tooltipCtrl.setInfo("提示标题");
// 创建一个跟踪工具,用于跟踪按钮的提示信息
var toolInfo = tooltipCtrl.addTrackingTool(winform.button);
// 为按钮添加点击事件处理函数
winform.button.oncommand = function(id, event){
// 获取按钮的位置信息 : 坐标[x,y] ,宽,高
var x, y, cx, cy = winform.button.getPos(true);
// 设置提示信息(信息里面包含一个超链接),并弹出显示(设置显示位置坐标)
toolInfo.setText(`点链接试试:<a href="https://www.aardio.com">aardio.com</a>`).trackPopup(true, x+20, y+cy);
// 设置提示控件捕获鼠标事件,以便点击提示中的链接时,可以响应点击事件
tooltipCtrl.capture = true; // 捕获鼠标事件
};
// 处理鼠标点击事件,关闭提示控件
tooltipCtrl.wndproc = function(hwnd, message, wParam, lParam){
// 检查消息类型是否为鼠标左键按下消息
if(message == 0x201 /*_WM_LBUTTONDOWN*/){
// 判断鼠标点击位置是否在提示控件的客户区内
if(!tooltipCtrl.ptInClientRect(lParam)){
// 如果不在,则关闭提示控件
tooltipCtrl.popup(false); // 关闭提示控件
}
}
};
// 导入进程库,用于打开超链接
import process;
// 设置跟踪工具里面的超链接点击事件的处理函数
tooltipCtrl.onHyperlinkClick = function(href, title){
// 使用进程库的 openUrl 函数打开超链接
process.openUrl(href); // 打开超链接
};
// 显示窗口并启动消息循环
winform.show();
win.loopMessage();