首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> Symbian入门 >> 正文
OPL 速成教程(二)
作者:姜 译    文章来源:http://www.allaboutsymbian.com/features/item/Part_2_Understanding_the_Event_Core.php    更新时间:2006-11-11 9:24:53
的是使使用者向看到什么内容就看到什么内容,我们同样需要把这些值存储在.ini文件中。这个问题我们在编程的时候最好提前就想好,甚至那些你以后可能根本遇不到的问题。
下面,我们做些可见的东西。创建一个包含以下三种任务栏的窗口:status,title,cba,无论他们有没有打开。以后我们的大部分工作将在这个窗口中实现。为了证明它可以正常工作,我们从外部的文件中拷贝一个图片。我们在下一节将详细介绍关于图像的命令,这里就不再讲述。
中间部分
并不是想这部分开始的循环语句那样,我们的EVEN Core有两个DO…UNTIL循环,其中一个嵌套在另外一个里面(这叫做嵌套循环),这样可以实现逐层判断的要求。看下面的代码:
exit%=0
DO
   load_the_next_level:
   initialise_level:
   level_completed%=0
   DO
      play_the_game:
   UNTIL level_completed%=1
UNTIL exit%=1
这个程序通过简短的代码实现了相对复杂的功能,而且是程序看起来明了易懂。
主循环
这个问题比较难理解,没有捷径。最好的方法就是明白下面的内容,我们以后再介绍这个问题。
系统命令
程序运行的时候,会检测计算机是否向其发送了执行任务的命令,计算机用一段文本串发送命令,我们通过下面的放式接收命令:
c$=GETCMD$
其中有三个相关的问题。。。
IF LEFT$(c$,1)=KGetCmdLetterExit$
   Exit:
这段代码告诉app程序马上关闭,我们也可以用OPL的COMMAND命令来实现这个功能,但是我们要存储当前的信息,因此调用了exit:函数,下面我们还要介绍这个函数。
ELSEIF LEFT$(c$,1)=KGetCmdLetterBackup$
   Exit:
大部分和以前的一样,这里编译器回到了原始位置,我们同样想安全退出,保存当前数据,这样大部分信息都被存储了。
ELSEIF LEFT$(c$,1)=KGetCmdLetterBroughtToFGround$
这段程序是跳转。在一些程序里面,你需要更新屏幕内容和变量,在另外一些程序里面可能不需要改变任何内容因为他们在后台,这取决于具体的应用。如果你再返回的时候需要调用一个程序,你需要使用跳转。
读取按键
系统开始检测时候有按键传输命令过来。如果有命令,就转到PROC g_kbddrv:函数处理这个命令。
(如果系统没有安装ER6 OPL,比如P800和7860,就会启动另外一个检测方式,手写笔。如果确实发生,那么我们就需要写关于手写笔的代码了。)
CBA按键行为
当一个按键启动的时候,应用程序跳转到XXXX-CBA 程序判断按键按类型(1还是2还是3还是4),然后跳转到相对应的程序。这是一个回调功能,正因为如此,在一个回调程序中不能退出。当你想退出的时候就出问题了。除了跳转exit:,我们设置了level_completed% 参数(或者任何一个能够表达我想退出的变量),然后使主程序成功退出。
处理键盘命令(g_kbddrv:)
这是app最关键的部分,要使用大部分时间来学习。一个用户按了一个键,需要编写大量的IF语句来调用相应得程序完成相关的动作。
前几节介绍Shift、Ctrl和Fn这样的键和他们的组合键。
其后介绍菜单键。如果按了菜单键,程序跳转到g_menu:函数,该程序将返回一个相关的值。(比如我们选择了从菜单里选择了Save-Ctrl-s,那么程序就会返回字母S。
还有两种特殊事件,红外线的启动关闭和向桌面上发送快捷方式。你需要把这两种命令放进菜单子系统(即将推出),但是现在在core.opl中并找不到。那么在哪里能找到呢?
答案是隐藏在最顶上的这些代码中…
INCLUDE "AppFrame.oxh"
INCLUDE "System.oxh"
INCLUDE "DBase.oxh"
INCLUDE "SendAs.oxh"
这些OPL扩展头文件叫做OPX。OPX是C++的一个子集,它可以被OPL程序调用。OPX通常直接让CPU来处理一些特殊的命令,这里面就是红外的启动关闭和快捷方式的建立。我们可以在任何地方调用OPX的INCLUDE。
我们以后将对OPX作进一步说明。
看下面的代码:
ELSEIF Key&=%A
   g_About:
这段代码测试shift键是否被按。有两点需要强调,第一:字母前面的%,这是OPL中需要速记的地方,在计算机代码中,”A”表示97,所有%A=97,这样使代码更易读,计算机同样可以理解。
第二点,%a和%A是不同的。第二个使用了Shift键,但是第一个没有。
按键程序-告诉你可以做什么
按键的程序非常重要,首先使用mINIT.命令初始化按键系统,然后定义每一个菜单(比如File、Edit),通过mCARD命令:
mCARD "File","Create new file...",%n,"Open File",%o
第一个字符串时File,在顶端的任务栏里也是这样显示的。接下来的一对字符串和数字是第一行,比如:新建文件。然后使热键。
你可以发现,这些数字和我们从g_kdbdrv:函数中找到的数字都是一样的,因此,通过一次变成,你可以得到两个输出(热键和菜单),这就是这样设置的目的。
然后用一个暂时变量存储菜单命令。
创建多级菜单是非常有用了。首先使用mCAXC定义二级菜单(从一级菜单衍生出来的菜单),然后在任何的mCARD行中在mCASC后面使用“〉”符号,指向二级菜单。
mCASC "Databases","Create",%c,"Query...",%u
mCARD "File","Databases>",16
结尾
程序结束的时候需要使用STOP命令。但是在使用之前你必须做一些事情,在Event Core结束的时候,调用PROC exit程序。
首先保存当前的状态,然后关闭窗口(这样电脑就可以重新分配空间)。
这样我们可以安全关闭程序了。
第一次预览
还有很多东西需要学习,但是幸好我们已经可以看懂那些代码了,这样在以后的学习中就比较轻松。
下面我们将学习编译。然后就可以执行一个编译后的程序了(如果看到了错误信息,仔细检查输入的内容,确保输入的内容正确)。之后可以把FreEPOC的标志显示在屏幕上,菜单和命令按键也可以看到。
编译了Event Core的OPL代码,不要担心修改代码和各种试验,这样不会使电脑崩溃。

上一页  [1] [2] 

相关文章:
Symbian数据库
S60平台:Bluetooth API开发伙伴指南——搜索和发布
S60 Python 编程指南——程序菜单练习(1)
S60 Python 编程指南——如何创建pys60应用程序
OPL 速成教程(五)
安全共享数据及数据库加密
S60平台: 使用DBMS APIs —共享数据库
S60平台: 使用DBMS APIs —补充的数据库操作
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号