程序结构的
主要是对Form生命周期的一个补充,因为一个普通程序,主要的事件都在form本身处理了,讲完这部分,再讲讲整个程序的结构就完事:
系统有一个API是SysHandleEvent
几乎每一个正常Palm程序中,都是有这么一个AppLoop()函数
staticvoidAppEventLoop(void)
...{
UInt16error;
EventTypeevent;
do
...{
/**//*changetimeoutifyouneedperiodicnilEvents*/
EvtGetEvent(event,evtWaitForever);
if(!SysHandleEvent(event))
...{
if(!MenuHandleEvent(0,event,error))
...{
if(!AppHandleEvent(event))
...{
FrmDispatchEvent(event);
}
}
}
}while(ype!=appStopEvent);
}
上面是CW中的框架,在PODS中写法不同,意思一样
也就是说事实上连系统处理事件,也是由你的程序来调用的,你的程序应该不停读事件队列,然后先看看系统是不是要处理这个事件,比如说你设成按字母c 呼出一个程序,那么如果你不改动默认结构的话,你的程序里根本就不可能输进字母c了,这个按键被SysHandleEvent处理,系统会先广播事件出去,看看有没有其它程序注册了更高响应优先级
。被其它程序处理了这个按键后,这个函数返回已处理,然后你的程序就根本收不到这个事件啦。只有当你按HOME键时,SysHandleEvent处理了这个按键事件,从队列里删掉这个按键事件,然后加进一个appExitEvent,这时你的程序就该退出啦。如果你的程序最后改成while
(true)的话,这程序就没可能退得出来了而程序退出后返回一个被注册为Launcher的程序,也就是说Launcher也只是一个普通程序,
它的内部也不过就是这么一个接近死循环的函数。
这里说了AppEventLoop,再补充一个,程序入口是PilotMain,那么结构就出来了。
一般PilotMain里会先检查ROM版本是不是合适(一般启动检查注册码放这里也可以),然后就是对于启动码做响应,上面说的 AppEventLoop一般是供sysAppLaunchCmdNormalLaunch使用的,其它的启动码的处理可能会用不同结构,我想大家以后会用到吧。
进入sysAppLaunchCmdNormalLaunch的处理,其实主要部分是中间的AppEventLoop()。在这之前,要AppStart ()一下,这个函数中一般我们要完成比如设置的载入,注册码检查,卡目录创建之类等等,不过一般小程序其实根本不用这东西;然后要在 AppEventLoop()前进行一次FrmGotoForm,不然会连一个ActiveForm都没有,这个程序就死住了。AppStop()函数肯定是已经接到appStopEvent后让AppEventLoop结束了,完成一些扫尾工作,比如保存设置。
主攻跨境购物。“当然是顺势而为。跨境电商关键环节 查看本文来源
贵港白癜风治疗医院乌鲁木齐治疗男科费用
儿童助消化药大全
- 上一页:开发智能手机呢
- 下一页:让操作系统的用户不再抓狂
-
千纸鹤有福了!易烊千玺加入两档五四晚会,他的优秀值得大家看见
五四青年人节已经来到,大家对于这天是又是期盼又是鄙视。期盼是因为当晚...
2024-07-11
-
人到中年才忘记:你必须自己度自己!(发人深省)
太皇太后垂青是好的,太皇太后;还有是好的,但世上哪有那么多“太皇太后...
2024-03-07
-
“快活王”王建新近况曝光!戴外套打扮新潮,六天吸粉不到三万
愈加多的艺人转至细预告片应用软件,不仅拓展了演艺事业渠道,也作主了的...
2024-01-26
-
四川教师公招:甘孜招914人,医学系岗位占比99%
2022年6月11日,巴塘人事考试网发布公告,2022年未公开招揽学生914人,其中高...
2023-12-18
-
夏日运动季 选一款动感腕表|封面天天见·逛姐出街
火热春季的到来,非常是激发了大家运动的热忱,让汗水与快乐肆意恣意。无...
2023-12-17
-
富国基金股权转让新进展:山东金融资产豪掷50.39亿元收购富国16.675%股权,回报率高达352.
安邦基金会16.675%持股受让方终于出炉! 之前青岛市国际性信托股份控股(简...
2023-12-02