定制窗口的使用
一般我们创建mtk应用的时候,多多少少会用到Screen,而我们可以使用MTK自带的categories screen,这些封装好的函数,会完成两件重要的事情
第一是绘制我们自己创建的Screen,第二是检测该类型窗口的事件,当然MTK允许你设置一些事件的处理函数(也即钩子函数,Handler)。我们可以
在程序创建时调用EntryNewScreen,然后再调用ShowListCategoryScreen,绘制列表框窗口,并注册自己的highlight handler,当然也可,更进一步
即我们可以在这个screen上再绘制别的类型的窗口,比如ShowCategory74Screen,唯一需要注意的是,你需要把自己注册的钩子函数注销(干净的做法);
并且调用ExitListCategoryScreen(),来停止绘制列表框界面,再调用ShowCategory74Screen开始绘制文本框。嘿嘿,这个方法很爽的。不过,有一点
需要注意,就是绘图很慢,显示下一个窗口需要延时显示,即调用ExitListCategoryScreen之后,延时一段时间后再调用ShowCategory74Screen,这样才
不会有“重影”。
补充:需要注意的是新窗口的建立撤销方法,我以实例说明,
static void MF_Scr_Exit(void)
{
MF_Exit_LastCategoriesScreen();
//if(new_scr_id == GetActiveScreenId())
// GoBackHistory();
//else
DeleteScreenIfPresent(new_scr_id);
if ( exit_func )
exit_func();
}
static void MF_Scr_Enter(void)
{
EntryNewScreen(new_scr_id, MF_Scr_Exit, MF_Scr_Enter, NULL);
if( enter_func )
enter_func();
}
EntryNewScreen的第3个参数就是screen的入口函数,必须设置成MF_Scr_Enter本身,否则,什么效果都不会出来,这也是够变态的,至于其原因,我不愿详述。