Aardio消息窗口

本文介绍了Aardio编程中使用win.msgbox创建消息窗口的方法,并提供了msgboxErr和msgboxTest两个示例函数。通过设置不同标志,可以自定义窗口图标、默认按钮和对话框形态。此外,还提及了MessageBox函数的返回值类型。

Aardio消息窗口

import win;

var id = win.msgbox("三个按钮","标题",0x3/*_MB_YESNOCANCEL*/)

参考标准库函数:

namespace win {

    msgboxErr = 
function(str,title = "错误" ,hwndOwner=0 ){
        
return  msgbox( str,title,0x10/*_MB_ICONHAND*/);
    }
    msgboxTest = 
function(str,title ,hwndOwner=0){
        
return msgbox(str,title,0x1 | 0x20 /*_MB_OKCANCEL|_MB_ICONQUESTION*/ 

                ,hwndOwner ) == 1;

    }
}


win.msgbox 实际上调用的是 MessageBox, 其他可选的参数:

标志

含义

MB_ABORTRETRYIGNORE

消息框含有三个按钮:AbortRetryIgnore

MB_OK

消息框含有一个按钮:OK。这是缺省值

### aardio中多窗口程序之间的数据共享方法 在aardio中,实现多窗口程序之间的数据共享可以通过多种方式完成。以下是几种常见的方法及其示例代码。 #### 方法一:使用全局变量 全局变量是一种简单直接的方法,适用于小型项目或简单的数据共享需求。通过定义全局变量,多个窗口可以访问和修改这些变量的值。 ```aardio // 定义全局变量 globalData = { name = "oymn"; age = 20; }; // 窗口1 form1 = ui.form(...); form1.onShow = function(){ console.log("窗口1读取数据:", globalData.name, globalData.age); }; // 窗口2 form2 = ui.form(...); form2.onShow = function(){ globalData.name = "newName"; // 修改全局变量 console.log("窗口2修改数据:", globalData.name, globalData.age); }; ``` 这种方法简单易用,但不适合复杂的应用场景[^2]。 #### 方法二:使用事件机制 通过事件机制可以在不同窗口之间传递数据。一个窗口触发事件,另一个窗口监听并处理该事件。 ```aardio // 窗口1 form1 = ui.form(...); form1.onDataChanged = function(data){ console.log("窗口1接收到数据:", data); }; // 窗口2 form2 = ui.form(...); form2.onShow = function(){ form1.trigger("onDataChanged", {name:"oymn", age:20}); // 触发事件 }; ``` 这种方法适合需要实时通信的场景[^3]。 #### 方法三:使用配置文件 类似于`SharedPreferences`的功能,aardio可以通过配置文件实现持久化存储,并在多个窗口间共享数据。 ```aardio // 写入配置文件 import iniFile; ini = iniFile.open("config.ini"); ini.setString("User", "name", "oymn"); ini.setInt("User", "age", 20); ini.save(); // 读取配置文件 ini = iniFile.open("config.ini"); name = ini.getString("User", "name"); age = ini.getInt("User", "age"); console.log("从配置文件读取数据:", name, age); ``` 这种方法适合需要保存用户偏好或状态的应用[^4]。 #### 方法四:使用数据库 对于更复杂的数据共享需求,可以使用嵌入式数据库(如SQLite)。多个窗口可以通过查询和更新数据库来共享数据。 ```aardio // 打开数据库 import sqlite; db = sqlite.open("data.db"); // 创建表 db.exec("CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)"); // 插入数据 db.exec("INSERT INTO users (name, age) VALUES ('oymn', 20)"); // 查询数据 result = db.query("SELECT * FROM users"); for(row in result){ console.log("从数据库读取数据:", row.name, row.age); } ``` 这种方法适合需要处理大量数据或复杂关系的应用[^5]。 ### 总结 根据具体需求选择合适的方法。如果只是简单的数据共享,可以使用全局变量或事件机制;如果需要持久化存储,可以使用配置文件或数据库。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值