[Sciter] 资源引用
http://www.cnblogs.com/yinxufeng/p/fb343eecda564aa63bce0bdf15709ddf.html
方式一. 加载外部文件
SciterLoadFile (HWINDOW hWndSciter, LPCWSTR filename)有两个参数:
- hWndSciter:Sciter程序窗口句柄
- filename:文件路径/资源路径
::SciterLoadFile(wnd, L"default.htm");
这里的default.htm就是一个外部文件,程序运行的时候会在当前路径下寻找并加载该文件
方式二. 加载内存
SciterLoadHtml (HWINDOW hWndSciter, LPCBYTE html, UINT htmlSize, LPCWSTR baseUrl)
方式三. 加载程序内置资源
还是通过SciterLoadFile来加载,但是需要借助辅助函数。
1. 在加载资源之前先调用
::SciterSetCallback(wnd, &SciterCallback, NULL);
SciterCallback是一个回调函数,接收Sciter所有通知。
UINT SC_CALLBACK SciterCallback(LPSCITER_CALLBACK_NOTIFICATION pns, LPVOID callbackParam){// here are all notifiactionsswitch (pns->code){case SC_LOAD_DATA: return DoLoadData((LPSCN_LOAD_DATA)pns);}return 0;}
SC_LOAD_DATA:就是资源请求通知,处理该通知来获取资源数据
UINT DoLoadData(LPSCN_LOAD_DATA pnmld){LPCBYTE pb = 0; UINT cb = 0;aux::wchars wu = aux::chars_of(pnmld->uri);if (wu.like(WSTR("res:*"))){// then by calling possibly overloaded load_resource_data methodif (sciter::load_resource_data(ghInstance, wu.start + 4, pb, cb))::SciterDataReady(pnmld->hwnd, pnmld->uri, pb, cb);}else if (wu.like(WSTR("this://app/*"))) {// try to get them from archive (if any, you need to call sciter::archive::open() first)aux::bytes adata = sciter::archive::instance().get(wu.start + 11);if (adata.length)::SciterDataReady(pnmld->hwnd, pnmld->uri, adata.start, adata.length);}return LOAD_OK;}
DoLoadData:是SDK里面封装好的函数,可以加载两种类型资源:
- 以“res:”开头,此类资源就是针对的程序内置资源
- 以“this://app/”开头,此类资源是下面要介绍的另外一种SDK自带的blob资源类型
2 导入资源文件

注意:资源ID要用字符串
3 使用资源
// CPP::SciterLoadFile(wnd, L"res:default.htm");// html<img src="res:go.png">
注意:res后面的文件名一定要跟ID(字符串DEFAULT)值一样,而不是要跟实际的文件名default2.html一样
方式3:加载BLOB资源
前提跟上面一样,要处理SC_LOAD_DATA资源请求通知,并且也已经在DoLoadData函数中实现。
那么,接下来要做的怎么生成BLOB资源
将所有资源统一放在项目的res文件夹下
调用sciter-sdk/bin/packfolder.exe将/res/文件夹下面的内容压缩到resources.cpp
resources.cpp就包含了来自/res/文件夹中的所有资源,并且被压缩成了无符号的字符型 resources[] = { …}; 对应为BOLB类型的资源
包含resources.cpp
#include "resources.cpp"
5.在引用资源之前调用sciter:archive实体绑定已经打包好了的资源BLOB对象. 当通过SC_LOAD_DATA标识请求这些资源时,sciter::archive实体就会提供
// bind resources[] (defined in "resources.cpp") with the archivesciter::archive::instance().open(aux::elements_of(resources));
6.使用资源
//cpp: 通过"this://app/"方式加载::SciterLoadFile(wnd, L"this://app/default.htm");//html: html自己的引用方式<img src="go.png">
[Sciter] 资源引用的更多相关文章
- ResourceDictionary 和 XAML 资源引用
XAML 定义应用的 UI,并且 XAML 也可以定义 XAML 中的资源.资源通常是对你希望多次使用的某些对象的定义.你要为 XAML 资源定义一个键,以供将来引用,该键的作用类似于资源的名称.你可 ...
- wpf资源嵌套,一个资源引用另外一个资源,被引用的资源应该声明在前面
在wpf的XAML的Window.Resources中,一个资源引用另外一个资源,出现如下错误: “错误 1 “{DependencyProperty.UnsetValue}”不是 Setter 上“ ...
- 详解JNDI的lookup资源引用java:/comp/env
ENC的概念: The application component environment is referred to as the ENC, the enterprise naming c ...
- (转)[Unity3D]BuildPipeline.PushAssetDependencies 打包依赖包,优化UI Prefab的资源引用加载(坑爹之处)
转自:http://blog.csdn.net/chiuan/article/details/39040421#reply 1:长话短说,UI Prefab中一般会交叉引用Atlas,那么打包时候我们 ...
- 详解JNDI的lookup资源引用 java:/comp/env
ENC的概念: The application component environment is referred to as the ENC, the enterprise naming c ...
- UWP入门(六)-- ResourceDictionary 和 XAML 资源引用
原文:UWP入门(六)-- ResourceDictionary 和 XAML 资源引用 你最希望声明为 XAML 资源的 XAML 元素包括 Style.ControlTemplate.动画组件和 ...
- Android的基本资源引用(字符串、颜色、尺寸、数组)【转】
感谢大佬:https://blog.csdn.net/wenge1477/article/details/81295763 Android的基本资源引用(字符串.颜色.尺寸.数组)[转] 一.Andr ...
- WPF中资源引用方式汇总
在WPF应用程序开发中,总是难以记住各种访问资源的方法,遂逐一记下. 先从资源是否编译到程序集分类 一.程序集资源 资源在编译的时候嵌入到程序集中.WPF中的XAML会被编译为BAML,图片等其他资源 ...
- Android:安卓资源引用符号的含义
@代表引用资源 @*代表引用系统的非public资源,如: @*android:color/white @[package:]type/name引用自定义资源,如: android:text=&quo ...
随机推荐
- UVA-1625-Color Length(DP LCS变形)
Color Length(UVA-1625)(DP LCS变形) 题目大意 输入两个长度分别为n,m(<5000)的颜色序列.要求按顺序合成同一个序列,即每次可以把一个序列开头的颜色放到新序列的 ...
- 【转载】form表单的两种提交方式,submit和button的用法
1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...
- INFORMATION_SCHEMA InnoDB 表
INFORMATION_SCHEMA InnoDB Tables 本节提供InnoDB INFORMATION_SCHEMA表的表定义. 有关相关信息和示例,请参见"InnoDB INFOR ...
- DB2数据库在线备份还原
DB2在线备份设置方法: 第一步:开启归档日志 db2 update db cfg for TEST_DB using logretain on 第二步:重启数据库 第三步:进行一次离线备份 db2 ...
- Java实现深拷贝和浅拷贝
1.类实现Cloneable才可以进行对象拷贝 2.Cloneable只实现浅拷贝,需要实现深拷贝的必须要重写clone()方法 3.利用反序列化也可以实现深拷贝,但是反序列化耗时较长 n.浅拷贝是指 ...
- debian swoole环境
debian 9.8 #目录 /lnmp/soure #软件下载位置 /lnmp/data #测试程序位置 安装php-7.3.3 #卸载apt安装的 apt-get autoremove php7* ...
- shiro配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Tarjan 算法求割点、 割边、 强联通分量
Tarjan算法是一个基于dfs的搜索算法, 可以在O(N+M)的复杂度内求出图的割点.割边和强联通分量等信息. https://www.cnblogs.com/shadowland/p/587225 ...
- Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)
1. 何为Accessibility机制 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互.对于那些由于视力.听力或其它身体原因导致不能方便使用Android智能手机的用户,And ...
- kissy学习
http://docs.kissyui.com/1.4/docs/html/guideline/kmd.html