aardio事件响应

事件响应机制

今天接触编程中的事件响应机制,感觉就像给程序赋予了对外界变化做出反应的能力,特别神奇!

按钮点击:程序的积极反馈

先从按钮点击事件入手。这就如同现实中按下开关会有相应动作,在程序里给按钮设定好规则,点击它就能触发特定操作。我写了段代码创建了一个小窗口,里面有个按钮,上面写着"触发惊喜"。当我点击这个按钮时,程序弹出一个消息框,显示"惊喜已触发!",特别有趣!

css 复制代码
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()

窗口关闭:确认与保留

接着研究窗口关闭事件。以往关闭窗口没多想,现在明白程序在背后其实有处理逻辑。我编写的代码让关闭窗口时弹出确认框,询问"真的要离开这个奇妙窗口吗?",如果选择"确定",窗口就会关闭;要是选"取消",窗口会继续保留,就好像在提醒自己再考虑考虑。

ini 复制代码
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();

鼠标移动:位置追踪

鼠标移动事件也很有意思。我写的代码能让鼠标在窗口内移动时,实时在窗口中的文本框显示鼠标的坐标位置,就像程序在默默地追踪鼠标的动向。

ini 复制代码
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();

综合练习:功能大集合

最后挑战了综合习题,做了一个带按钮和文本框的窗口。点击"显示内容"按钮能把文本框里的内容显示在消息框中;点击"关闭窗口"会弹出确认框,询问是否真要关闭;点击"获取鼠标位置",再点击鼠标就能在文本框显示鼠标位置。经过一番尝试,代码成功运行,看着程序按预期做出反应,满满的成就感!看来编程就是不断把小功能组合起来实现更强大的效果,我得继续加油!

ini 复制代码
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()
相关推荐
liulilittle3 天前
UNIX/macOS路由表查询原理与实现
服务器·开发语言·c++·macos·unix·编程语言
liulilittle3 天前
HTTP简易客户端实现
开发语言·网络·c++·网络协议·http·编程语言
liulilittle4 天前
Unix/Linux 平台通过 IP 地址获取接口名的 C++ 实现
linux·开发语言·c++·tcp/ip·unix·编程语言
hqyjzsb4 天前
2025职场进阶:B端产品经理必备的计算机专业技能精要
大数据·开发语言·人工智能·产品经理·编程语言·caie
科技树支点5 天前
无GC的Java创新设计思路:作用域引用式自动内存管理
java·python·go·web·编程语言·编译器
大熊猫侯佩8 天前
韦爵爷闯荡 Swift 6 江湖:单例秘籍新解(上)
swift·编程语言·apple
一支鱼9 天前
前端使用次数最多的工具封装
前端·typescript·编程语言
Jooolin9 天前
【C++】C++11都有什么新特性?
c++·ai编程·编程语言
秋难降11 天前
深入解析快速排序:原理、波动根源与优化之道
算法·排序算法·编程语言
咕白m62513 天前
Java 开发:用 Spire.PDF 高效压缩 PDF 文件
java·编程语言