Symbian 下菜单的应用开发技巧
2010-03-13 20:25:00 来源:WEB开发网pages = r_dlgapp_main_pages;
}
构造时,先来看:
void CDlgappAppUi::ConstructL()
{
BaseConstructL();
iAppView = new (ELeave) CDlgAppMainView;
iAppView->ExecuteLD(R_DLGAPP_MAIN_DIALOG);
AddToStackL(iAppView);
}
我们必须自己来做将控件加到控件栈的工作,因为非模式对话框自身不会这么做。
再来看视图结构,每个运行中的应用程序都有个当前活动的视图,视图结构适用于那些不发布供外部应用使用的视图或适用于可以处理外部应用中断的那些应用程序。使用视图结构的程序总是有个视图处于激活状态,其他的处于非活动状态,我们在切换视图时就造成一个视图和另一个视图的激活和非激活行为,注意了如果是从一个应用程序切换出来,而又返回到该程序,那么是不会产生视图的激活和非激活的。
应用程序用户界面创建并注册每一个视图,并由它们来决定是激活或去处激活,做为对来自视图服务器的事件的响应。而且注意当任何一个视图去处激活时,其相应的内存可能被清除掉。
这些当前的激活视图都是能够接受各种事件的,这些事件告诉应用什么时候出现到前台,什么时候隐藏到后台。相应的视图将接受前台和后台事件。
各种应用的视图都是处于同一层,尽管视图间的导航可以按层次结构来安排。每个视图就象一个小型的应用程序用户界面,它其中要实现众多的函数以供程序使用,如必须提供一个Id()函数,让系统得以识别。再者重载DoActivateL()、 DoDeactivate()、 HandleForegroundEventL()和HandleCommandL()以及HandleStatusPaneSizeChange()等函数。
处理DoActivateL()函数时是当客户端要求激活一个视图时进行的,必须考虑的一点就是当视图已经是活动时,我们如何处理这个函数,这时通常需要一些特定的参数。
DoDeactivate()是当程序退出,或切换视图时才被调用,注意了没有,这个函数没有异常退出情况,不错哎:)
HandleForegroundEventL ()是在视图处于活动状态时调用的,视图在前台,它就会收到HandleForegroundEventL(ETrue)事件,在后台就会收到 HandleForegroundEventL(EFalse)事件。视图处于活动状态期间,该函数可能被调用好多次,这是因为视图所属的程序反复在后台和前台切换。该函数可以用于设置焦点,或控制屏幕更新。
更多精彩
赞助商链接