[Sciter系列] MFC下的Sciter–2.Sciter中的事件,tiscript,CSS部分自觉学习,重点说明Tiscript部分的常见语法和事件用法。
本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的SciterFrame程序,以此作为以后程序的基础。其中,文章中按照如下逻辑编排(解决如下问题):
1、使用什么环境
2、完成什么功能
3、如何完成
1、工程环境: 文本编辑器 + Sciter-SDK
建议:由于这里要编写HTML界面,建议找一个你喜欢的编辑工具,如notepad2、Notepad++等。
2、本文完成的功能:编写具有tiscript的HTML页面,并通过Sciter.exe相关功能调试页面。
3、具体步骤如下:
首先,需要说明的是:HTML和CSS部分需要读者自行掌握,不需要太深,但一般的编写要能够在工具的帮助下完成。强烈推荐读者朋友可以先大概地学习一下Javascript的相关语法和事件部分内容,这对于编写tiscript非常有用。
到这里,作为作者,我必须向大家道歉,本人也还没有对JS脚本很熟悉,正在学习中,所以很多地方都是推测和摸索,望读者朋友见谅。
下面正式开始第一部分,基础HTML页面:
和标准的HTML页面不同,我们在做Sciter的HTML时,很多不必要的地方都可以省略,对于一个UI的HTM而言,<html><head><body>三层标签构成的文本文件就可以直接拿来使用,不用明确地添加如<meta><link>等其他的东西。当需要使用Tiscript时,类似于js,在<head>中加入<script>标签,既可以在标签内部书写代码,也可以通过路径将代码文件引入进来。
下面的是一个含有CSS、TS脚本的简单HTML模板:(ANSI编码)
<html> <head> <title>Hello World</title> <style> .test{ background-color: black; color: white; } </style> <script type="text/tiscript"> $(.test).onClick = function() { stdout.println("H1被点击"); return true; } </script> </head> <body bgcolor="#00AAAA" > <h1 .test>Hello World!</h1> </body> </html>
不要小看这个模板,这个模板已经拥有CSS、使用了Tiscript脚本、添加了调试输出功能,下面我们继续来看如何调试HTM页面中的tiscript代码。
PS:拥有Tiscript脚本的html页面是不能直接用浏览器查看效果的,需要使用官方给出的相关工具。
第二部分,查看UI,调试tiscript脚本。
找到之前下载的SDK,在bin目录下有这样几个文件:
sciter.exe HTML制作的UI查看调试工具。
Sciter64.exe 同sciter.exe,64位版的。
sciter32/64.dll 32和64位版本的公用DLL
inspector32/64.dll 这个很重要,专门用来调试
打开sciter.exe,将编写好的html拖到Sciter窗口中,你将会看到如下界面:
点击如图的红框,如果你的Sciter.exe目录下存在inspector32/64.dll程序就会调用他,界面如下:
第三部分,关于 Tiscript 语法的简单说明和应用:
Tiscript中大部分事件都和JS一样,由于官方没给出明确的说明是否完全支持其中的事件,但是针对我个人测试而言,点击、加载等一些我知道的基本的事件还是可以相应的。
对象.onclick 对应的是鼠标的单击事件,它对应的响应函数我们使用的是匿名函数,即Function() {…},这些都和JS一样。
和JS中GetElementsByID方法一样,我们在TS中寻找一个元素的对象一般可以使用简写形式:
$(xxx) ,其中,xxxx可以是任何的class或者ID,如 $(.test) 表示的就是class=”test”的对象,$(#tool) 指的是ID=”tool”的对象。
$(.test).onClick = function() { ….} 这个函数的作用就是说当class=”test”的对象被点击时,就执行函数体function()的括弧里面的内容。
stdout.println("H1被点击"); 是告诉调试工具输出括弧里面的东西,一般TS脚本出问题都可以使用这个函数输出看看,非常好用。
有人会疑问,stdout.println()是从哪里来的,我没有编写这个函数,也不知道它是干嘛的。
如图:
这里详细介绍了那些是全局的函数和类,我们可以在程序的任何地方主动调用他们来完成相关的功能,虽然在下面的介绍中没有stdout的所有方法,但是文档至少告诉我们了printf以及println这些都是可用的,甚至读者可自己尝试那些标准的输入输出函数,一般而言他应该都是可以使用的。
说到这里,这篇文章应该结尾了,但是相信每个学习这一块的童鞋都会感到特别吃力,如果对JS一点都不懂,那简直就是雾里看花,根本没着落,所以,为了对得起看这个文章的童鞋们,继续了以下内容。
文章中之前所有的内容都很简单,只要知道了有那么一个东西,基本上就会用了,难得是官方的帮助文档过于晦涩,难懂,常常很多问题根本无从找起,下面介绍一些帮助文档的使用方法。
1、如何打开?帮助文档在哪里?
答:SDK目录下Doc下面的都是帮助文档文件,将Sciter.exe打开,找到那个问号的图标(第五个),点击,打开的就是帮助文档(Sciter Help)。
2、我是新手,如何根据帮助文档学习?
答:不好意思,官方并没有提供完善的学习流程,建议先看看简单的Demo学习如何在程序中调用HTM页面,如何获取页面的消息,然后在学习书写TS脚本的页面。
3、我有一些脚本相关的问题,我给如何在帮助文档里查找?(这个很重要)
答:我只能根据经验,提供一部分问题的查找方法,毕竟官方文档内容也不是很全。
首先,打开帮助文档,在左侧列表栏,如图,
帮助内容分为3大块,Sciter DOM classes、Sciter Script、Sciter Script Classes,第一个是介绍DOM元素相关属性样式以及通用的方法的,第二、三部分主要是针对Sciter脚本的,第二部分介绍语法,第三部分讲数据类型,无论是否学过JS脚本,都建议仔细看看这两部分的内容。
如果你是在TS编写脚本的语法上有问题,只能在2、3两部分找相关内容。如果你对于修改Dom元素的属性、类型有问题,那就好好看看第一部分的内容,我很确信地告诉你这里一定有答案。
最后,给出一个更高级一点的HelloWorld程序HTM代码,仿照它就可以完成一般性的修改工作:
<html> <head> <title>Hello World</title> <style> .test{ background-color: black; color: white; } </style> <script type="text/tiscript"> $(.test).onClick = function() { stdout.println("H1被点击"); changeh2(); return true; } function changeh2( ) { $(#test1).style["color"]="red"; $(#test1).html="超链接<a href='#'>我是超链接</a>"; return true; } </script> </head> <body bgcolor="#00AAAA" > <h1 .test>Hello World!</h1> <h2 #test1>你好啊</h2> </body> </html>
-------
源代码:SCiter.exe + 自己编写的HTM,无需打包
博客:
CSDN:http://blog.csdn.net/bbdxf
cnBlogs: http://www.cnblogs.com/bbdxf