Symbian 下菜单的应用开发技巧
2010-03-13 20:25:00 来源:WEB开发网CleanupStack::PopAndDestroy(); //list
}
其他编写知识:
1.应用程序的退出和EEIKCMDEXIT在一个Avkon程序中,有两个方法可以帮助你退出程序,一是exit菜单选项,一个就是back功能键,这两种方法有略微的差别,下面我们就来讲讲。
任何程序都可以通过调用Exit()以回应EEikCmdExit来结束程序。类似的,一些控件如dialogs,menus,popup lists等可以以此来回复escape 键的响应以便退出。
What to do
应用程序和views通过HandleCommandL()函数来处理菜单和功能键传来的命令。HandleCommandL()必须能够处理命令ID EEikCmdExit,这个是退出当前程序的信号。
对待这种情况,典型的app UI处理应该调用SaveAnyChangesL()和ExitL()。注意,如果你是写的是view体系程序,那views或app UI都可以处理这些命令,但不能同时处理这些,否则会引起问题的。
当按下back功能键时HandleCommandL()函数还会接受到EAknSoftKey这个命令ID,怎么处理这个命令要看上下文环境。但如果确实要退出,我们就要象接受到EEikCmdExit一样对待它。
功能键back可能总是产生EAknSoftkey这个ID,而菜单选项exit总上会产生EAknCmdExit命令ID,注意这个是和EEikCmdExit不同的,它是不直接使用的一般。
How it works
Exit ()函数的调用将会导致当前程序的退出。如果程序是内嵌的,那控制将交到父窗口那里。在Avkon中,我们希望由back功能键来执行,但exit会导致所有窗口包括父窗口的关闭。关闭机制同样要求相关子窗口应用程序的关闭。这个是连锁反应的。如果要这样操作,可以发送给每个相关程序 EEikCmdExit命令ID。因此程序在调用exit()时应该回应EEikCmdExit和EAknSoftKeyBack命令。 Framework将会在检查到有EAknCmdExit时触发进程。
这就是你使用EAknCmdExit命令ID在你资源中的用处,但应该在HandlCommandL()中回应EEikCmdExit命令ID。
Dialog Shutter
应用程序的dialogs和popup窗口能够通过使用dialog shutter来关闭。
EMBEDDED APPLICATIONS
离开和后退
正如上面所说的,exit和back有所不同,在出现内嵌程序时就表露出来了。
App UI pointers
当你内嵌一个程序时,所有的程序都共享一个CEikonEnv实例。但注意EikonEnv::EikAppUi这个成员函数总是返回最里面的那个应用程序
更多精彩
赞助商链接