AWin/aardiowin/main.aardio
2024-10-17 15:44:35 +08:00

126 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import win.ui;
import init;
// 初始化
init.init();
var gConfig = init.loadConfigs();
var gDebug = init.getDebug();
// 启动界面
/*DSG{{*/
mainForm = win.form(text="awin";right=1;bottom=1;border="thin";max=false;min=false)
mainForm.add()
/*}}*/
// 日志
var gLog = init.getLog();
gLog.print("width=" , gConfig.window.width)
gLog.print("height=" , gConfig.window.height)
// 主窗口
mainForm.resize(gConfig.window.width, gConfig.window.height);
mainForm.text = gConfig.title
// 托盘
import win.util.tray;
var tray = win.util.tray(mainForm,"./logo.ico") //创建托盘图标,如果不能显示图标,可能是图标问题,要复合图标
tray.message = 0x400+9981/*_WM_TRAYMESSAGE*/
tray.tip = gConfig.app //设置鼠标提示
/*
mainForm.onClose = function(hwnd,message,wParam,lParam){
tray.delete(); //关闭窗口同时删掉托盘,避免关闭窗口后要鼠标移到托盘图标才消失
}
*/
//下面是添加托盘右键菜单
import win.ui.menu;
mainForm.popmenu=win.ui.popmenu(mainForm);
mainForm.popmenu.add('打开',function(id){ //添加了一个打开主界面的菜单
mainForm.show();
})
mainForm.popmenu.add('退出',function(id){ //添加了一个退出程序的菜单
mainForm.close()
})
//下面是获取鼠标消息弹出上面的右键菜单
import mouse;
mainForm.wndproc = function(hwnd,message,wparam,lparam){
select(message) {//判断消息类型
case( 0x400+9981/*_WM_TRAYMESSAGE*/ ) { //托盘图标消息
if(lparam = 0x203/*_WM_LBUTTONDBLCLK)*/){ //鼠标双击
mainForm.show(true);
}
elseif(lparam =0x205/*_WM_RBUTTONUP*/){ //鼠标右键
x,y = mouse.getPos();
win.setForeground(mainForm.hwnd)
mainForm.popmenu.popup(x,y,true)
}
}
case( 0x112/*_WM_SYSCOMMAND*/ ){ //系统命令消息
if( wparam == 0xF020/*_SC_MINIMIZE*/ ){ //用户点击了最小化按钮
mainForm.show(false); //隐藏窗口
return true;//阻击默认消息传递,取消最小化过程
}
if( wparam == 0xF060/*_SC_MINIMIZE*/ ){ //用户点击了最小化按钮
mainForm.show(false); //隐藏窗口
return true;//阻击默认消息传递,取消最小化过程
}
}
}
}
// 后台
if( gConfig.backend != "" ) {
gLog.print("backend=" , gConfig.backend)
thread.invoke(function(mainForm){
// 线程执行的代码
import process.popen;
var prcs = process.popen(gConfig.backend);
prcs.logResponse();
}, mainForm);
}
// 前端
import web.view;
var theView = web.view(mainForm);
//导出为 JavaScript 中的 aardio 对象
theView.external = {
onCounterUpdate = function(name,value){
if(name!==null && value!==null){
return "aardio 返回的值:网页中 React 状态值改变了value:"+value;
}
};
}
import wsock.tcp.simpleHttpServer;
/*
如果导入 simpleHttpServer则单个斜杠开头的路径会转换为嵌入式 HTTP 地址,
如果同时文件名为 index.html ,则上级目录自动设为根目录,前端应用发布根目录使用默认的 "/" 即可,不需要改动。
去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
否则打开 http://localhost:37151
*/
var url = gConfig.frontend
gLog.print("url=" , url)
if( gDebug ){
theView.go(url,37151);
} else {
theView.go(url);
}
mainForm.show();
win.loopMessage();
// tray.delete();