您的位置:首页 > 其它

有一个需求是要在待机界面按enter键,进入一个上网的列表,用户可以进行选择网址进行上网。一共有5个网址。

2011-05-09 15:57 465 查看
有一个需求是要在待机界面按enter键,进入一个上网的列表,用户可以进行选择网址进行上网。一共有5个网址。
也许会有人这么做的:
先定义5个MENUID,然后再分别定义5个高亮的函数。这么做,我觉得效率实在是太低了一点,想想如果有30个以上的网址供用户选择,那也这样搞,岂不是太费事了吗?
我是这么做的,定义一个指针数组,里面放入5个客户要求的网址,这样就省事多了,只要一个index来确定高亮的是哪个网址就可以了。

啥也不说了,贴代码吧

#if defined(__MMI_MY_WAP_LINK__)
#define MY_WAP_LINK_ITME_COUNT 5
U8 g_my_wap_link_index = 0;

extern void wap_goto_url_for_my_link(char *linkurl);
void mmi_my_wap_link_highlight_index(S32 Index)
{
g_my_wap_link_index = Index;
}
void mmi_my_wap_link_launch(void)
{
//此指针数组要和mmi_entry_my_wap_link 中的数组一致.
char *linkurlarray[MY_WAP_LINK_ITME_COUNT] = {"http://www.baidu.com","http://www.163.com","http://www.255.com","http://www.205.com","http://www.225.com"};
wap_goto_url_for_my_link(linkurlarray[g_my_wap_link_index]);
}
void mmi_entry_my_wap_link(void)
{
WCHAR *linkurlarray[MY_WAP_LINK_ITME_COUNT] = {L"http://www.baidu.com",L"http://www.163.com",L"http://www.255.com",L"http://www.205.com",L"http://www.225.com"};
U8 *guiBuffer = NULL;
EntryNewScreen(WAP_LINK_SHORTCUT_SCREENID,NULL,mmi_entry_my_wap_link,NULL);

guiBuffer = GetCurrGuiBuffer(MY_WAP_LINK_SCREENID);
ShowCategory53Screen(NULL,
NULL,
STR_GLOBAL_OK,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
MY_WAP_LINK_ITME_COUNT,
(U8 **) linkurlarray,
(PU16) gIndexIconsImageList,
NULL,
0,
g_my_wap_link_index,
guiBuffer);
RegisterHighlightHandler(mmi_my_wap_link_highlight_index);
SetLeftSoftkeyFunction( mmi_my_wap_link_launch, KEY_EVENT_UP );
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
#endif/*__MMI_MY_WAP_LINK__*/

L"http://www.baidu.com"这个是将asc码转换成unicode编码,所以定义指针数组的时候要用WCHAR ,否则是编译不过的。用WCHAR定义,就可以不用mmi_asc_to_ucs2进行转换了,省去了一些复杂的操作,仅仅一个L就可以解决字符编码的复杂转换了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐