Symbian 控件架构之对话框
2010-04-20 15:44:00 来源:WEB开发网1.flag属性。定义对话框自身的性质。示例中定义了三个属性--EEikDialogFlagNoDrag(不可拖动), EEikDialogFlagCbaButtons(使用软键),
EEikDialogFlagWait(等待)。这些标志在uikon.hrh中定义。
2.buttons属性。指出对话框使用的软键。在avkon.rsg中定义。
3.items属性。定义了对话框中实际包含的内容。items由一些DLG_LINE组成,每一个DLG_LINE包含了一个控件。
4.DLG_LINE属性。表示对话框的每一行,控件通常由id,type和control组成。
在资源文件中定义好对话框之后,即可以编写对话框类,Symbian OS的所有对话框类都从CAknDialog继承而来。需要包含头文件akndialog.h。
以下是CAknDialog的几个重要函数:
1.PreLayoutDynInitL(),完成对话框装载前的初始化工作。对话框中控件的初始化在此函数中进行,通过对话框的成员函数 ControlOrNull()来通过id得到控件指针;如果id存在,返回CCoeControl指针,如果不存在,返回NULL。可以使用函数 Control()来得到控件指针,与ControlOrNull()不同的是,如果id不存在,Control ()返回一个错误。
2.OkToExitL(),点击OK键(EAknSoftkeyOk),对话框退出之前调用此函数以获取对话框中控件的数据。
3.静态函数TBool RunDlgLD(),该函数包含一个对话框的一阶构造函数ExecuteLD(),该函数用来构造、显示和销毁对话框。在程序中显示对话框,只需调用 CXXXDialog::RunDlgLD()即可。
TBool CSimpleDialog::RunDlgLD()
{
CSimpleDialog* dialog=new(ELeave) CSimpleDialog();
return dialog->ExecuteLD(R_DIALOG_EDIT_DIALOG);
}
ExecuteLD()调用了CAknDialog的两个函数PrepareLC()和RunLD()。其中PrepareLC()负责将对话框指针放到清理栈,完成对话框的构建。
RunLD()负责对话框的显示。
等待通知和进度通知的用法
MAknBackgroundProcess有四个接口函数
void DialogDismissedL(TInt /*aButtonId*/);
TBool IsProcessDone() const;
void ProcessFinished();
void StepL();
一个MAknBackgroundProcess应该对应一个CActive
应该与CAknWaitNoteWrapper配合使用,当CAknWaitNoteWrapper调用执行方法以后。就会弹出指定对话框,然后不断询问是否IsProcessDone()。如果IsProcessDone就结束对话框的等待。首先你需要定义一个对话框
更多精彩
赞助商链接