Symbian 下菜单的应用开发技巧
2010-03-13 20:25:00 来源:WEB开发网HandleCommandL()当视图菜单生成一条命令时调用这个程序。
HandleStatusPaneSizeChange()当客户端区域尺寸由于状态窗格发生变化时调用这个函数。这个函数比较特殊。
视图在其活动期间收到的事件的典型顺序如下:
DoActivateL()
HandleForegroundEventL(ETrue)
HandleForegroundEventL(EFalse)
DoDeactivate()
视图也是要有资源文件的,如果你需要自己的菜单或CBA时,就要创建这么一个AVKON_VIEW资源文件,譬如:
RESOURCE AVKON_VIEW r_viewapp_view1
{
hotkeys = r_viewapp_hotkeys;
menubar = r_viewapp_view1_memubar;
cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
}
注意视图本身是没有绘图能力的,也没有交互性。它们需要拥有继承自 MCoeControlObserver和CCoeControl的容器类,才会有这样的能力,因此在CAkvView的类中(一般的自己的视图都是派生自这个类,如CMyViewArchAppVIew1)都会存在有容器的一个实例。
class CMyViewArchAppView1: public CAknView
{
//...
private:
CMyViewArchAppView1Container* iView;
}
这里的CMyViewArchAppView1Container是
Class CMyViewArchAppView1Container: public CCoeControl,
MCoeControlObserver
本地视图的切换,这个是很常用的,主要用iAvkonViewAppUi->ActivateLocalViewL(TUid::Uid(2));
主要指定被切换的视图的UID
注意了每个视图都可能有自己的菜单,如果要切换视图,首先更新那视图相应菜单的内容:
iEikonEnv->AppUiFactory()->MenuBar()->SetMenuTitleResourceId(R_MY_VIEW_ARCH_APP_VIEW2_MENU);
//经过这步才开始进行视图的切换。
如果DoActivateL()函数发生异常退出时,系统会有一套自己的恢复机制,也就是调用DoDeactivateL(),使之可以恢复该应用程序的早先视图。这就使得我们不必在DoActivateL()中再做什么处理机制了。
如果该应用程序拥有在顶层处理不同种类数据的多个视图或多种模式,那我们应该屏弃使用对话框结构,另外两种结构比较擅长与顶层通信,这个顶层也就是核心引擎。
更多精彩
赞助商链接