使用的脚本是angelscript, 是开源的, 官方网址: http://www.angelcode.com/angelscript/
布局文件中, 有2种写法.
第一种 <Script language="cplusplus" include="button.as" />
第二种, 内嵌脚本。
<Script language="cplusplus" >
void OnControlInit(CControlUI @obj)
{
obj.SetBkColor(0xFFFF0000);
}
</Script>
由于内嵌脚本的方式, 又涉及到复杂的xml解析。所以,内嵌脚本的方式不要影响CMarkup解析。
先举个例子,
buttom.as的文件内容
void main2(CControlUI @obj)
{
obj.SetBkColor(0xFF00FF00);
}
如下书写xml布局文件
<?xml version="1.0"?>
<Window size="572,384" sizebox="0,0,8,8" caption="0,0,0,80" equalscale="true">
<Script language="cplusplus" include="button.as">
void OnControlInit(CControlUI @obj)
{
obj.SetBkColor(0xFFFF0000);
}
void main(CControlUI @obj)
{
obj.SetBkColor(0xFF0000FF);
}
</Script>
<VerticalLayout pos="0,0,380,192" bkcolor="0xFFA6CAF0" width="380" height="192" >
<Control pos="38,28,190,155" width="152" height="127" float="true" OnInit="OnControlInit" OnSetFocus="main" OnKillFocus="main2"/>
</VerticalLayout>
</Window>
脚本一共定义了3个函数: OnControlInit, main, main2, 脚本的入口函数参数固定为 CControlUI @obj, 注意@这个符号表示C++里面的引用。
实现效果,
当OnInit时,调用OnControlInit, 设置控件背景色
当获得焦点时, 调用main, 设置控件背景色
当失去焦点时, 调用main2,设置控件背景色