Sciter教程_02_分析uminimal例程

本文详细介绍了SciterSDK中的uminimal示例,涵盖了跨平台窗口实现、C++代码与脚本交互、SOM_PASSPORT用于暴露本地功能,以及TIScript语言的应用,展示了如何在Sciter环境中构建通用应用程序。

Sciter教程系列-02 分析sdk/demos/uminimal例程

上一个教程中建立窗口的代码在不同操作系统中并不通用,uminimal例程窗口实现中并不包含特定于操作系统的代码,适用于Windows/MacOS/Linux系统中的应用,并且该例程展示了脚本如何调用本地(C++)代码。

编译demos/uminimal例程

将文件sdk/demos/uminimal/uminimal.cppsdk/include/sciter-win-main.cpp拷贝到解决方案下的src/文件夹,在VS中移除筛选器src下的所有文件,然后添加这两个文件。拷贝sdk/demos/uminimal/res/文件夹,覆盖解决方案下的res文件夹。运行打包脚本,在VS中编译C++代码并运行,结果如下图所示。

在这里插入图片描述

注意,本文所使用的系统是Windows,所以拷贝的是sciter-win-main.cpp,对应的MacOS应拷贝sciter-osx-main.mm,Linux应拷贝sciter-gtk-main.cpp(只在Windows系统下验证过)。

分析C++代码

先看看窗口构建的流程。在uminimal.cpp中,定义了一个frame类,继承自父类sciter::window,父类中关于窗口创建、窗口最小化/最大化/关闭、消息代理/响应函数以及构造函数均在sciter-win-main.cpp中实现,同时,该文件还实现了入口函数wWinMain,在入口函数中,将消息循环以函数对象形式传递给uimain函数,该函数实现在uminimal.cpp中。在uimain函数中,实例化了一个frame对象,调用了资源文件加载以及窗口显示方法,最终将上图所示窗口显示出来。

除了窗口构建流程和minimal例程有差异,本例程还出现了SOM_PASSPORT_BEGIN/SOM_PASSPORT_END这个新的宏,这是用于暴露C++函数给脚本代码调用的。

SOM(Sciter Object Model)

Sciter对象模型,主要用于在以下三个方面通过本地代码(C++代码)扩展Sciter。

  • 脚本访问本地代码的命名空间、方法以及类。
  • 自定义的Sciter窗口。
  • 自定义本地DOM元素。
1、脚本访问本地代码的命名空间、方法以及类

为了达到脚本访问本地代码的对象或命名空间,需要做以下两件事:

  • 在本地代码中定义继承自sciter::om::asset<T>的类。这是为了使得对象可以进行引用计数,保证脚本在引用该对象时对象不会被释放。
  • 在宏定义SOM_PASSPORT_BEGIN/END中通过SOM_FUNCS将方法或者属性暴露给脚本,使得脚本可以调用这些暴露的本地方法。

uminimal例程中的NativeMath类定义如下。

struct NativeMath : public sciter::om::asset<NativeMath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值