程序结构的

减速机/变速机2021年09月06日

主要是对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
友情链接