A25:捕获鼠标与按键事件

一、鼠标的按键事件

  • 普通控件需要调用 win.ui.tracker 以监听
    onMouse...,onKey...,onSysKey... 前缀的鼠标与按键事件以及 onFocusGot,onFocusLost 事件。
    并且所有状态切换都会触发 onStateChange 事件。

二、plus 控件

  • plus 控件已默认调用了 win.ui.tracker,支持 win.ui.tracker 对象的所有事件

-鼠标事件

  • 鼠标移入 onMouseEnter
  • 鼠标移出 onMouseLeave
  • 鼠标拖拽 onMouseDrag
  • 鼠标单击 onMouseClick
  • 鼠标双击 onMouseDoubleClick
  • 鼠标右键按下 onRightMouseDown
  • 鼠标滚轮事件 onMouseWheel

三、程序

复制代码
//捕获鼠标与按键事件
import win.ui;
/*DSG{{*/
var winform = win.form(text="捕获鼠标与按键事件";right=481;bottom=355)
winform.add(
button={cls="button";text="普通控件";left=57;top=154;right=255;bottom=206;z=2};
plus={cls="plus";text="plus 控件";left=57;top=63;right=256;bottom=103;bgcolor=0xF0CAA6;color=0x800000;font=LOGFONT(h=-13);textPadding={left=5};z=1}
)
/*}}*/

winform.plus.skin({
	color={
		active=0xFF002200;
		default=0xFF000080;
		disabled=0xFF6D6D6D;
		hover=0xFFFF0000		
	}
})

import win.ui.tracker;

/*
普通控件需要调用 win.ui.tracker 以监听
onMouse...,onKey...,onSysKey... 前缀的鼠标与按键事件以及 onFocusGot,onFocusLost 事件。
并且所有状态切换都会触发 onStateChange 事件。
*/
var tracker = win.ui.tracker(winform.button);//返回的 tracker 实际上等于控件自身,但可以获得 win.ui.tracker 的智能提示支持。

tracker.onMouseEnter = function(wParam,lParam){
	owner.text = "鼠标移入"	
}

tracker.onMouseLeave = function(wParam,lParam){
	owner.text = "鼠标移出"	
}

//plus 控件已默认调用了 win.ui.tracker,支持 win.ui.tracker 对象的所有事件
winform.plus.onMouseEnter = function(wParam,lParam){
	owner.text = "鼠标移入"
}

winform.plus.onMouseLeave = function(wParam,lParam){
	owner.text = "鼠标移出"	
}

winform.plus.onMouseDrag = function(wParam,lParam){ 
    var x,y = win.getMessagePos(lParam);
	owner.text = "鼠标拖拽"		 
}

winform.plus.onMouseClick = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	owner.text = "鼠标单击"		
}

winform.plus.onMouseDoubleClick = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	owner.text = "鼠标双击"		
}

winform.plus.onMouseDown = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	owner.text = "鼠标按下"	
}

winform.plus.onRightMouseDown = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	owner.text = "鼠标右键按下"		
}

winform.plus.onMouseWheel = function(flags,delta,lParam){
    delta = delta/(120/3); 
	owner.text = "鼠标滚轮事件 delta=" + delta;		
}

winform.show();
win.loopMessage();

四、界面

相关推荐
Li_RuiQi16 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
Li_RuiQi20 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu20 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇20 小时前
turtle 入门教程笔记
笔记
跨知易知识产权21 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理21 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生21 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈11111 天前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈11111 天前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡1 天前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节