解读BOLT引擎例子——HelloBolt2
迅雷在线文档中:
HelloBolt2:创建窗口和对象树
local templateMananger = XLGetObject("Xunlei.UIEngine.TemplateManager")
|
这行,XLGetObject接口获取通过XLLuaRuntime的XLLRT_RegisterGlobalObj接口以特定id注册到Bolt运行环境中的全局对象,Bolt内置的核心对象都可以在lua脚本中通过调用XLGetObject来获取,id为"Xunlei.UIEngine.TemplateManager"的对象是模板管理器对象,在布局xml中定义的各种模板都可以通过模板管理器的GetTemplate()接口来获取(模板指南)。
local frameHostWndTemplate = templateMananger:GetTemplate("HelloBolt.Wnd","HostWndTemplate")
local frameHostWnd = frameHostWndTemplate:CreateInstance("MainFrame")
|
以上两行,调用模板管理器的GetTemplate()方法获取模板对象,然后通过模板的CreateInstance方法以创建该模板的实例对象。这样就通过MainWnd.xml布局中定义的容器窗口模板创建了HostWnd对象。
local objectTreeTemplate = templateMananger:GetTemplate("HelloBolt.Tree","ObjectTreeTemplate")
local uiObjectTree = objectTreeTemplate:CreateInstance("MainObjectTree")
|
同样,以上两行从模板上创建了UIObjectTree对象。
frameHostWnd:BindUIObjectTree(uiObjectTree)
frameHostWnd:Create()
|
以上两行,将HostWnd对象和UIObjectTree对象关联,之后从HostWnd对象上创建出窗口来。
大多数情况下,很多程序都要保存用户的设置,办法有很多:注册表,日志文件...... 而很多程序都使用了一个专用的文件。为了方便起见,常常命名为*.cfg,有时甚至直接命名为Config.cfg。
这只是一个为开发及使用方便而"发明"的一个后缀名。所以,这种文件没有固定的格式,其实也并不能算作是一种文件类型。
onloda.lua中:
local templateMananger = XLGetObject("Xunlei.UIEngine.TemplateManager")
local frameHostWndTemplate = templateMananger:GetTemplate("HelloBolt.Wnd","HostWndTemplate")
if frameHostWndTemplate then local frameHostWnd = frameHostWndTemplate:CreateInstance("MainFrame")if frameHostWnd thenlocal objectTreeTemplate = templateMananger:GetTemplate("HelloBolt.Tree","ObjectTreeTemplate")if objectTreeTemplate thenlocal uiObjectTree = objectTreeTemplate:CreateInstance("MainObjectTree")if uiObjectTree thenframeHostWnd:BindUIObjectTree(uiObjectTree)frameHostWnd:Create()endendend
end
bitmap.xml中:
<XLUE>
<resource><!--普通的位图资源--><bitmap id="app.bkg" path="bitmap\bkg.png" />
</resource>
</XLUE>
MainWnd.xml中:
<!--XML最好存储为UTF-8编码-->
<xlue><objtreetemplate id="HelloBolt.Tree" class="ObjectTreeTemplate"> <!--objtreetemplate为对象树模板--><attr><left>-200</left><top>-200</top><width>2000</width><height>2000</height></attr><obj id="app.bkg" class="ImageObject"><attr><left>0</left><top>0</top><width>429</width><height>267</height><!--资源相关的属性使用资源定义xml中设置的资源名--><image>app.bkg</image><alpha>255</alpha> <!--alpha透明通道值0为透明,255为不透明--></attr></obj>
</objtreetemplate><hostwndtemplate id="HelloBolt.Wnd" class="FrameHostWnd"> <!--hostwndtemplate为宿主窗口模板--><attr> <mainwnd>1</mainwnd><title>Bolt</title> <!--宿主窗口标题--><layered>1</layered> <!--是否分层窗口,0表示非分层窗口,1表示分层窗口--><left>200</left> <top>100</top><!--注意这是容器窗口的大小,设置的要合理--><width>429</width><height>327</height><cacheleft>0</cacheleft> <!--结束矩形左上顶点纵坐标--><cachetop>0</cachetop> <!--结束矩形左上顶点纵坐标--><cachewidth>1000</cachewidth> <!--结束矩形右下顶点横坐标--><cacheheight>720</cacheheight> <!--结束矩形右下顶点纵坐标--><center>1</center><topmost>0</topmost> <!--是否顶层窗口,0表示非顶层窗口,1表示顶层窗口--><visible>1</visible> <!--窗口是否可见,0表示不可见,1表示可见--><enable>1</enable> <!--窗口是否处于灰显状态,0表示灰显状态,1表示正常状态--><active>1</active> <maxbox>1</maxbox> <!--窗口风格是否包含WS_MINIMIZEBOX,0表示不包含,1表示包含--><minbox>1</minbox> <!--窗口风格是否包含WS_MAXIMIZEBOX,0表示不包含,1表示包含--><minwidth>100</minwidth> <!--宿主窗口矩形最小宽度--><minheight>72</minheight> <!--宿主窗口矩形最小高度--><maxwidth>1000</maxwidth> <!--宿主窗口矩形最大宽度--><maxheight>720</maxheight> <!--宿主窗口矩形最大高度--><sysmenu>1</sysmenu> <!--窗口风格是否包含WS_SYSMENU,0表示不包含,1表示包含--><appwindow>1</appwindow> <!--窗口风格是否包含WS_EX_APPWINDOW,0表示不包含,1表示包含--><fps>30</fps> <!--窗口刷新频率--></attr>
</hostwndtemplate>
</xlue>
解读BOLT引擎例子——HelloBolt2相关推荐
- 几种还款方式解读(包含例子,正在更新)
几种还款方式的解读(包含例子) 1.一次性还本付息(利随本清): 按日计息, 计算公式:当期利息=贷款本金(总贷款金额)*日利率*(提前还款日期-上期还款日期) 下期利息=剩余本金*日利率*(还 ...
- 一个简单的规则引擎例子
本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...
- 一步一步解读MT4的例子EA(init,sta…
在MT4安装后,默认会给用户提供几个例子程序,这些程序对于新学习EA开发过程中有很大的帮助,下面我们就来对MACD Sample这个例子EA来做个解读,来看看别人是如何开发一个EA的. 首先是注释,在 ...
- php模板引擎 例子,PHP实现简单的模板引擎功能示例
本文实例讲述了PHP实现简单的模板引擎功能.分享给大家供大家参考,具体如下: php web开发中广泛采取mvc的设计模式,controller传递给view层的数据,必须通过模板引擎才能解析出来.实 ...
- 十年磨一剑,深度解读火山引擎官方操作系统 veLinux
在历经数十年在操作系统上的长期实践与沉淀,字节跳动于去年正式推出高性能的 Linux 操作系统 veLinux 并将其内核代码开源.作为字节跳动打造的首款高性能.高稳定性.安全易用的操作系统,veLi ...
- mysql引擎层存储层_MySQL存储底层技术:InnoDB底层原理解读
原标题:MySQL存储底层技术:InnoDB底层原理解读 存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身.那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储 ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- [C指针] 用图表解读C声明:Unscrambling C Declarations by Diagram
在本节中,我们将展示一个带有编号步骤的图表.如果您按照步骤进行,从一个开始并遵循引导箭头,任意复杂性的C声明可以快速翻译为英语(也可以是任意复杂性).我们将通过忽略图中的typedef来简化声明.若要 ...
- 自我解读MVC三层架构原理
MVC简单原理 (1)在我们最开始学习编程,开始写代码的时候:往往写的代码较为的混乱,层次不清晰,从而造成了维护与安全上的缺陷.这里就慢慢引出了框架的知识.能够是我们的代码变得层次清晰.分明,维护起来 ...
- 详解 Chrome 「V8 」引擎,让你更懂JavaScript !
今天来聊聊 V8,它的主要职责是用来执行 JavaScript 代码的.在正式全面了解 V8 之前,先来了解下「JavaScript 的基本特性和设计思想」. 1.JavaScript 的基本特性和设 ...
最新文章
- 使用angular的好处_在项目中使用Angular的最大好处
- PHP命令行代码更新不及时,PHP脚本从命令行工作,而不是从cron
- R构建加权最小二乘回归模型(Weighted Least Squares Regression)
- STL Algorithms 之 unique
- MFC中OnInitDialog自动生成
- jQuery 人脸识别插件,支持图片和视频
- 【搜索引擎Jediael开发笔记】v0.1完整代码
- vc2010 mysql5.7_VC2010利用MySQL++访问mysql. 及连接池示例
- java接口_Java接口
- 2016.8.27一套简单的题解题报告
- Microsoft 安全公告 MS12-020 - 严重。请大家关注!!
- CSA FT1、FT2、FT4、FT5 和 FT6
- dell服务器运维,【产品鉴赏】戴尔DELL R710服务器
- 美国小学计算机编程课程,美国小学STEM课程案例研究
- 把opencv Mat 按位存成bmp二值图像 (1bit 1pixel)
- 微信小程序开发:Java后台MySQL数据库微信小程序页面
- 【SpringBoot注解-4】:@Target、@Retention、@Documented注解简介
- 深入理解QStateMachine与QEventLoop事件循环的联系与区别
- STM32要按复位键才能下载问题解决
- 蒲丰投针计算机模拟ppt,蒲丰投针实验模课件.doc
热门文章
- 蓝桥杯C语言程序设计真题
- m3u8格式的视频链接怎么在自己电脑上播放
- 微软商店错误代码: 0x80131500解决方案
- 两万字《Java完全自学手册》15张导图,送给所有的零基础小白(建议收藏)
- Java学习手册:Java面向对象面试问题
- 山西计算机公共机房建设,山西省机房建设标准.doc
- JDBC连接池原理及分析
- win7原版系统安装及基本设置
- GE HYDRAN M2 IS200VCRCH1B IS200VRTDH1D IS200VTCCH1CBB IS200VTURH2BAC IS215VPROH1BD IS220PAICH2A
- asp.net图书馆管理系统