第7天 Symbian学习之开发实践:视图及按键交互

来源:互联网 发布:高阶矩阵 编辑:程序博客网 时间:2024/05/17 03:35

Symbian学习笔记

学习目标: 掌握基本的Symbian视图应用程序框架与程序交互方法 
学习内容: 视图应用程序框架,程序交互 
练习: 做一个简单的程序,能在屏幕上显示出对应按键的值。 

一、视图应用程序框架
视图应用程序框架包括:
应用程序类:用于定义应用程序的属性,还用于生成新的空白文档。定义UID;
文档类:标识应用程序的数据模型,创建应用程序用户接口app ui。
应用程序UI类:它创建一个应用程序视图,来处理绘图和处理基于屏幕的交互。
应用程序视图类:在屏幕上绘制应用程序的界面内容,允许用户与之交互。
二、程序交互
应用程序UI类是处理事件的接口,
CControlsTestAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
处理后返回EKeyWasConsumed否则返回EKeyWasNotConsumed;告知事件已经是否已经处理。比如下面的代码:

 

CControlsTestAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
{
      if(aType == EEventKey)//过虑非按键事件,并且只取按下的事件
{
  TBuf16
<10> buf;
  TInt i 
= aKeyEvent.iScanCode;//获取键值
  buf.AppendFormat(_L("KeyCode=%d"),i);
  iEikonEnv
->InfoMsg(buf);//提示信息
  iAppContainer->SetLabelText(buf);//更新视图Label内容
  iAppContainer->DrawNow();//立即重新绘制视图
  return EKeyWasConsumed;
}

return EKeyWasNotConsumed;
 


return EKeyWasNotConsumed;
CControlsTestAppUi::HandleCommandL(TInt aCommand)处理按钮事件
控件上的事件由视图类里处理事件的接口来处理,不过首先需要控件设置对应的事件观察器MCoeControlObserver。
这里就是试图类CControlsTestView::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)
三、上次遗留问题
大文件读写问题:在使用10字节的缓冲时,读取1M的文件,尽管代码简洁,但是处理速度很慢,使用了将近10秒的时间。在扩大缓存至3k(申请4k栈空间失败)时,每次读取3k字节,这样处理速度不到1毫秒。由此可以得出结论:文件读写很费时间,可以设置一个比较大的缓冲来读写,减少文件操作的次数,提高文件处理速度。此外,栈空间比较小,申请较大的栈空间可能会出现unresolved external symbol __chkstk错误。
四、总结
1、熟悉视图结构。
2、熟悉图形界面操作流程,按键指针事件的传递及处理。 

原创粉丝点击