事件响应机制
今天接触编程中的事件响应机制,感觉就像给程序赋予了对外界变化做出反应的能力,特别神奇!
按钮点击:程序的积极反馈
先从按钮点击事件入手。这就如同现实中按下开关会有相应动作,在程序里给按钮设定好规则,点击它就能触发特定操作。我写了段代码创建了一个小窗口,里面有个按钮,上面写着“触发惊喜”。当我点击这个按钮时,程序弹出一个消息框,显示“惊喜已触发!”,特别有趣!
[AAuto] 纯文本查看 复制代码 import win.ui;
/*DSG{{*/
var winform = win.form(text="按钮点击乐趣多";right=350;bottom=180)
winform.add(
button={cls="button";text="触发惊喜";left=130;top=70;right=220;bottom=110;z=1}
)
/*}}*/
winform.button.oncommand = function(id,event){
win.msgbox("惊喜已触发!")
}
winform.show()
win.loopMessage()
窗口关闭:确认与保留接着研究窗口关闭事件。以往关闭窗口没多想,现在明白程序在背后其实有处理逻辑。我编写的代码让关闭窗口时弹出确认框,询问“真的要离开这个奇妙窗口吗?”,如果选择“确定”,窗口就会关闭;要是选“取消”,窗口会继续保留,就好像在提醒自己再考虑考虑
[AAuto] 纯文本查看 复制代码 import win.ui;
/*DSG{{*/
var winform = win.form(text="窗口关闭确认体验")
winform.add({
button={cls="button";text="关闭窗口";left=550;top=360;right=680;bottom=400;
};
})
/*}}*/
winform.button.oncommand = function(){
var closed = win.msgboxTest("真的要离开这个奇妙窗口吗?")
if(closed == "确定"){
winform.close();
} else {
win.msgbox("窗口继续陪伴你!")
}
}
winform.show();
win.loopMessage();
鼠标移动:位置追踪
鼠标移动事件也很有意思。我写的代码能让鼠标在窗口内移动时,实时在窗口中的文本框显示鼠标的坐标位置,就像程序在默默地追踪鼠标的动向。
[AAuto] 纯文本查看 复制代码 import win.ui;
/*DSG{{*/
var winform = win.form(text="鼠标位置追踪";right=350;bottom=180)
winform.add(
edit={cls="edit";left=10;top=10;right=300;bottom=170;ah=1;aw=1;edge=1;multiline=1;z=1}
)
/*}}*/
import mouse.hook;
var coordinate = mouse.hook();
coordinate.proc = function(msg,x,y){
winform.edit.print("鼠标此刻坐标:",x,y)
}
winform.show();
win.loopMessage(); 综合练习:功能大集合
最后挑战了综合习题,做了一个带按钮和文本框的窗口。点击“显示内容”按钮能把文本框里的内容显示在消息框中;点击“关闭窗口”会弹出确认框,询问是否真要关闭;点击“获取鼠标位置”,再点击鼠标就能在文本框显示鼠标位置。经过一番尝试,代码成功运行,看着程序按预期做出反应,满满的成就感!看来编程就是不断把小功能组合起来实现更强大的效果,我得继续加油! [AAuto] 纯文本查看 复制代码 import win.ui;
import mouse.hook;
/*DSG{{*/
var winform = win.form(text="综合功能体验";right=350;bottom=180,topmost=1)
winform.add(
button={cls="button";text="显示内容";left=10;top=120;right=100;bottom=160;z=1};
button2={cls="button";text="关闭窗口";left=250;top=120;right=330;bottom=155;z=3};
button3={cls="button";text="获取鼠标位置";left=130;top=120;right=220;bottom=155;z=4};
edit={cls="edit";left=20;top=20;right=300;edge=1;bottom=90;ah=1;aw=1;multiline=1;z=2}
)
/*}}*/
winform.button.oncommand = function(id,event){
var text = winform.edit.text;
win.msgbox("文本框内容是:"+text)
}
winform.button2.oncommand = function(){
var closed = win.msgboxTest("真的要关闭这个窗口吗?")
if(closed == "确定"){
winform.close();
}
}
winform.button3.oncommand = function(id,event){
var coordinate = mouse.hook();
coordinate.proc = function(msg,x,y){
select(msg) {
case 0x201/*_WM*/{
winform.edit.print("鼠标位置:",x,y)
}
}
}
}
winform.show()
win.loopMessage()
|