Symbian 学习之对话框简介
2010-03-19 15:48:00 来源:WEB开发网Symbain OS 对话框的基类实在Uikon中定义的CEikDialog类,在此基础上各个界面平台又封装了各种对话框类,例如S60平台的Avkon定义了 CAknDialog类作为S60对话框的基类,而UIQ平台仍然使用CEikDialog类作为对话框基类,但是封装了 CQikSaveFileInFolderDlg类等UIQ平台特有的对话框类。
Uikon中的CEikDialog实现了三个接口,包括:
McoeControlObserver,对话框子控件的观察者接口,当子控件状态发生变化时该接口的HandleControlEventL()函数被调用。
MeikDialogPageObserver,在多页对话框中,可以通过实现该接口观察页面的变化。
McoeControlContext,在多个控件之间共享图形上下文的接口。
CAknDialog类和CEikDialog类最大的不同是前者可以拥有菜单,相应地实现了MEikMenuObserver接口,用于观察菜单状态的变化。
CAknDialog是大部分Series60对话框的基类。关于对话框的使用,大体分为以下步骤:1.定义资源。2.执行对话框。3.动态地初始化标准对话框。4.退出对话框。
1.定义资源
使用DIALOG定义资源,资源指定了对话框的布局,在资源中定义对话框应该包含的行数、使用的控件、对话框是否为模态以及使用的软键等。资源结构在eikon.然后中定义:
STRUCT DIALOG
{
LONG flags=0;
LTEXT title="";
LLINK pages=0;
LLINK buttons=0;
STRUCT item[];
LLINK form=0;
}
flags:说明了对话框的属性,其中的属性值可参考
#define EEikDialogFlagWait //等待对话框
#define EEikDialogFlagNotifyEsc //退出通知,当用户选择某个软键时对话框调用OkToExit()函数
#define EEikDialogFlagButtonsBelow
#define EEikDialogFlagButtonsRight
#define EEikDialogFlagNoUserExit //不允许用户选择退出对话框,即不显示软键
#define EEikDialogFlagModeless //无模式对话框,使用该
#define EEikDialogFlagNoTitleBar //无标题栏
#define EEikDialogFlagAllKeysToButtons
#define EEikDialogFlagFillScreen
#define EEikDialogFlagNoDrag //不可拖动
更多精彩
赞助商链接