的是使使用者向看到什么内容就看到什么内容,我们同样需要把这些值存储在.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] |