打印
[华禹工控]

MTK入门——用C实现helloworld(三)

[复制链接]
3116|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7. 主功能函数以上所有准备工作都已完成,接下来就是具体的实现了。上一步中设定了按菜单左键后系统将调用EntryHelloWorld,那么,以下我们的任务将是如何将功能写在该函数中。

我们将文本显示函数加入到函数EntryHelloWorld中去:
void EntryHelloWorldvoid
{

gui_print_text((UI_string_typeGetStringSTR_ID_HELLO_WORLD));
}
gui_print_text函数用来输出字符串,GetString用来获取STR_ID_HELLO所对应的字符串。另外,使用gui_print_textLHelloWorld”);也可以输出字串“Hello,World”。因为我们的平台是基于多国语言的,所以一般情况与文本相关的函数都只接受Unicode编码,在这里使用LHelloWorld”可将字串强制转换为Unicode编码。
我们的期望是在当前屏幕下按左软键进入一个新的屏幕,这样,我们还得加其它函数:
void EntryHelloWorldvoid
{

EntryNewScreenSCR_ID_HELLO_WORLD, NULL,EntryHelloWorldNULL);

entry_full_screen()

clear_screen();

gui_move_text_cursor(60,150);

gui_set_text_color(UI_COLOR_RED);

gui_print_text((UI_string_typeGetStringSTR_ID_HELLO_WORLD));

gui_BLT_double_buffer(0,0,UI_device_width- 1, UI_device_height - 1);
}
EntryNewScreen函数中第一个参数为屏幕的ID,这个是我们之前已经定义好的,第二个参数为屏幕的退出函数,系统在强制退出屏幕时自动调用此函数,这个函数主要是做一些资源释放等方面的工作,如果没有的可以设为空。第三个参数为屏幕的入口函数。第四个参数暂时不用。
entry_full_screen()是进入全屏,在大的屏幕中,系统默认显示状态信息条,如果不强制关闭状态条,系统会将其显示出来。
clear_screen()可以将整个屏幕刷成白色;gui_set_text_color()则用来设置文本字体的颜色;gui_move_text_cursor()用来设置文本显示的位置;gui_BLT_double_buffer()用来刷新整个屏幕,如果不强制刷新是看不到效果的。另外,每次输出文本前都应该重设文本属性。
现在,我们来看一下添加的效果,在前面的几个步骤完成后,Organizer菜单下应该多一条我们自己加的菜单项HelloWorld,如下图:




这里的图标是是借用的其它菜单的图标。现在,我们通过按左软键OK来看看效果:




8.手动加入屏幕历史在上一节已经讲过,在调用EntryNewScreen()函数时传入屏幕ID和屏幕的入口函数,系统会在下次调用EntryNewScreen(即进入下一个更新屏幕)时自动将当前屏幕加入到历史记录中,当新的屏幕退出后,系统会将屏幕从历史中弹出并显示出来。另外,我们还可以手动加入历史。
EntryNewScreen函数的第三个参数为空时,系统将不会自动加入历史,这时我们可以定义一个退出函数:
void ExitHelloWorld(void)
{

historycurrHistory;

S16nHistory = 0;



currHistory.scrnID= SCR_ID_HELLO_WORLD;

currHistory.entryFuncPtr= EntryHelloWorld;

pfnUnicodeStrcpy((S8*)currHistory.inputBuffer, (S8 *)&nHistory);

AddHistory(currHistory);
}
这样,我们将该函数地址传给EntryNewScreen,供系统调用:
void EntryHelloWorldvoid
{

EntryNewScreenSCR_ID_HELLO_WORLD, ExitHelloWorld,NULL, NULL);

entry_full_screen()

clear_screen();

gui_move_text_cursor(60,150);

gui_set_text_color(UI_COLOR_RED);

gui_print_text((UI_string_typeGetStringSTR_ID_HELLO_WORLD));

gui_BLT_double_buffer(0,0,UI_device_width- 1, UI_device_height - 1);
}
通常我们的平台都是按右键退出屏幕,我们将其功能加入代码中:
void EntryHelloWorldvoid
{

EntryNewScreenSCR_ID_HELLO_WORLD, ExitHelloWorld,NULL, NULL);

entry_full_screen()

clear_screen();

gui_move_text_cursor(60,150);

gui_set_text_color(UI_COLOR_RED);

gui_print_text((UI_string_typeGetStringSTR_ID_HELLO_WORLD));

gui_BLT_double_buffer(0,0,UI_device_width- 1, UI_device_height - 1);

SetKeyHandler(GoBackHistory,KEY_RSK, KEY_EVENT_UP);
}
这样,一个简单的MMI程序基本出来了。

相关帖子

沙发
sanguo147| | 2010-4-11 21:45 | 只看该作者
终于看完了 三个

使用特权

评论回复
板凳
xiaoxin1986| | 2010-4-12 08:58 | 只看该作者
好多资料啊,谢谢LZ

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

53

帖子

1

粉丝