## 前言:易语言UI的痛点
长期以来,易语言开发者在界面设计上一直面临着巨大的挑战。自带的组件库风格古老(Win98/XP风格),虽然有各种皮肤模块(如EXUI、DUI等),但学习成本高,且灵活性始终不如 Web 前端技术。
**如果能用 HTML/CSS/JavaScript 来写易语言程序的界面,那该多好?**
Sciter 引擎就是为此而生的。它是一个轻量级、可嵌入的 HTML/CSS/JS 引擎。但是,Sciter 官方提供的 API 是基于 C++ 函数指针表的,这对于易语言来说调用非常困难。
为了解决这个问题,我开发了 **SciterWrapper** —— 一个专门为易语言设计的 Sciter 中间件。
## 什么是 SciterWrapper?
SciterWrapper 是一个标准的 DLL 动态链接库,它将 Sciter 复杂的函数指针调用封装成了易语言可以直接调用的标准导出函数。
### 核心特性
1. **极简调用**:无需处理复杂的指针和内存结构,直接调用 `Sciter_加载HTML文件` 即可显示界面。
2. **Sciter.JS 支持**:基于最新的 Sciter.JS 引擎,支持 ES6 语法,可以使用现代前端技术栈。
3. **无边框窗口支持**:内置了完美的无边框窗口实现,支持拖拽、缩放、阴影,轻松实现类似 **英雄联盟客户端** 的不规则窗口效果。
4. **双向通信**:
* 易语言 -> JS:可以执行 JS 脚本,修改 DOM 元素。
* JS -> 易语言:支持 TIScript/JS 调用易语言子程序,处理业务逻辑。
5. **调试支持**:支持连接 `inspector.exe`,像在 Chrome 浏览器里一样调试你的界面代码。
## 效果展示:复刻英雄联盟客户端
利用本模块,我制作了一个高仿英雄联盟(League of Legends)海克斯科技风格的客户端界面。

可以看到,通过 CSS3 的渐变、阴影和动画,我们可以轻松实现充满科技感的界面,而这在传统易语言绘图中是极其困难的。
## 快速上手
使用本模块非常简单,只需要几行代码即可创建一个浏览器窗口:
```e
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 窗口句柄, 整数型
' 1. 初始化引擎 (开启调试模式)
.如果真 (Sciter_初始化 ("", 真) = 假)
信息框 ("Sciter初始化失败!", 0, , )
结束 ()
.如果真结束
' 2. 创建无边框窗口 (1280x720)
窗口句柄 = Sciter_创建无边框窗口 (1280, 720)
' 3. 加载 HTML 文件
Sciter_加载HTML文件 (窗口句柄, 取运行目录 () + "\ui\index.htm")
' 4. 显示窗口
Sciter_显示窗口 (窗口句柄)
' 5. 进入消息循环
Sciter_运行 ()
```
## 进阶功能:JS 调用易语言
在 HTML 中:
```javascript
// 调用易语言函数
Window.this.xcall("EPL_Func", "Hello from JS");
```
在易语言中:
```e
' 注册回调函数处理来自 JS 的调用
```
## 结语
SciterWrapper 让易语言开发者能够利用庞大的前端生态资源。无论是做炫酷的游戏启动器、现代化的管理软件,还是数据可视化大屏,现在都变得轻而易举。
项目已发布在精易论坛,欢迎大家下载体验!
---Sciter.JS 易语言封装模块 - 用 HTML/CSS 写界面 (附 噜阿噜 界…
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14868751
(出处: 精易论坛)
*Tags: 易语言, Sciter, UI界面, 模块, *