`
mmdev
  • 浏览: 12915002 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

symbian UI开发小结(一)

 
阅读更多

一.UI程序的基本类:

1 )应用类(Application)类:作为程序入口,通过实例化应用程序和启动文档类,来启动应用程序。它也设置应用程序的UID(各个应用程序的唯一标识符)。

2)应用程序文档类(Application document)类: 该类处理应用程序中非GUI数据-应用程序数据。它还实例化应用程序的UI类。

3) 应用程序视图(View)类:GUI根控件,该类实现主窗口,并充当其他应用程序控件的容器。

4)应用程序用户界面(UI)类:该类实例化应用程序View类,处理发自应用程序的命令;

二.在多视图切换中,一个view对应一个container

1)每个视图都必须拥有自己的容器,即Container。

2)AppUi必须从CAknViewAppUi派生。因为CAknViewAppUi提供了视图的注册、激活和取消激活的方法。

3)所有的视图必须到视图服务器上注册方能使用。

4)必须重写DoActiveL(激活)和DoDeactive(去激活)函数来处理从属的容器。

5)在任意时刻,只有一个视图处于激活状态。

6)每个视图都可以有自己的菜单。

三。在AppUi中,我们必须关注两个函数,即HandleCommandL()函数和HandleKeyEventL()函数(效果与OfferKeyEventL()相似)。

HandleCommandL() 处理菜单命令,用户响应菜单命令的代码就放在这个函数里。

HandleKeyEventL() 处理程序的按键事件。

四。自定义菜单以及菜单的响应

(1)appui.cpp中定义自己的菜单响应常量 ;

(2)到hrh文件中定义菜单常量的枚举值 ;

(3)到rss资源文件中定义菜单命令 ;

(4)到loc文件(也就是rls文件)中定义菜单显示名称 。

五。在rls中加入CHARACTER_SET UTF8可以防止中文显示乱码的出现。

六。CONE 8:程序退出的时候报这个错说明你没有释放资源。在编码时要很小心AddToStackL()与RemoveFromStackL()的配对使用。

AddToStackL(iAppContainer); //将Container推入到控件栈顶,例如可以接收键事件。这可以解决光标在显示但无法输入文字的问题。

七。将TBuf换成TDes:

首先在资源文件中定义了:

RESOURCE TBUF r_title_string

      {

      buf   =   "设置日期 ";

      } 

然后在cpp文件中使用copy函数:

      TBuf<32> bufFirst;

      bufFirst.Copy(*(StringLoader::LoadLC(R_TITLE_STRING)));

      CleanupStack::PopAndDestroy();

八。rss文件中的系统资源定义的顺序不能随便调换,否则可能会出现USER 23的错误提示。User 23的具体情况可参考http://blog.csdn.net/Atoric/article/details/5539026

可以知道‘LOCALISABLE_APP_INFO’这系统文件定义要小心对待。

九。在自定义cba控件后,可以设置其相应的动态菜单:

CEikMenuBar* pMenuBar=iEikonEnv->AppUiFactory()->MenuBar();

pMenuBar>SetMenuTitleResourceId(R_MAINVIEW_MENUBAR);

pMenuBar->TryDisplayMenuBarL();

十。资源中定义日期与时间控件

//   DATE SETTING PAGE

RESOURCE AVKON_SETTING_PAGE r_date_setting_page

    {

    type = EEikCtDateEditor;

    editor_resource_id = r_date_edwin;

    }

    

RESOURCE DATE_EDITOR r_date_edwin

    {

      minDate=DATE{year=1989;};

      maxDate=DATE{year=2108;};

    }

 

//   TIME SETTING PAGE

RESOURCE AVKON_SETTING_PAGE r_time_setting_page

      {

      type = EEikCtTimeEditor;

      editor_resource_id = r_time_edwin;

      }

      

RESOURCE TIME_EDITOR r_time_edwin

    {

      minTime = TIME

           {

           hour = 0;

           minute = 0;

           second = 0; 

      };

    maxTime = TIME

          {

           hour = 23;

           minute = 59;

           second = 59;

          };

    } 

十一.在rss资源文件中提示"Syntax error"的原因一般是关键字打错,例如打错了RESOURCE等。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics