1.区分模态,非模态,等待,非等待的概念
模态对话框阻止的是用户与UI的交互。
等待对话框阻止的是程序中其它代码的运行。
Series60中的对话框默认是模态和非等待对话框。
2.包装式通知,Wrapper Note,只需提供文本,不需提供资源。这样使通知标准化,使用更方便。
3.(1)是否对话框
资源:
RESOURCE DIALOG r_aknexquery_confirmation_query
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_YES_NO; //CBA显示“是”和“否”
items =
{
DLG_LINE
{
type = EAknCtQuery;
id = EGeneralQuery;
control = AVKON_CONFIRMATION_QUERY //表示这是confirm询问对话框
{
layout = EConfirmationQueryLayout;
label = query_dialog_caption;
};
}
};
}
使用:
TBuf<20> msg;
CAknQueryDialog* dlg = CAknQueryDialog::NewL();
if (dlg->ExecuteLD(R_AKNEXQUERY_CONFIRMATION_QUERY, msg))
{
}
(2)
RESOURCE DIALOG r_net_wait_dialog
{
flags = EAknWaitNoteFlags | EEikDialogFlagWait;
buttons = R_AVKON_SOFTKEYS_CANCEL;
items =
{
DLG_LINE
{
type = EAknCtNote;
id=1;
control= AVKON_NOTE
{
layout = EWaitLayout;
singular_label = "";
animation = R_QGN_GRAF_WAIT_BAR_ANIM;
};
}
};
}
RESOURCE DIALOG r_net_progress_dialog
{
flags=EAknProgressNoteFlags;
buttons = R_AVKON_SOFTKEYS_CANCEL;
items =
{
DLG_LINE
{
type = EAknCtNote;
id = 1;
control = AVKON_NOTE
{
layout = EProgressLayout;
// singular_label = "";
// imagefile = "";
// imageid = EMbmAvkonQgn_note_progress;
// imagemask = EMbmAvkonQgn_note_progress_mask;
};
}
};
}
(3)全局查询对话框 (查询意味着有交互)
CAknGlobalMsgQuery
(4)
CAknWaitNoteWrapper默认延时显示,有个参数设置为ETrue就好了。CAknWaitDialog也是如此.
CAknWaitDialog的使用方法是先执行操作,再显示等待对话框。而如果长时间的操作方法是同步的,则上述方法不可行(会导致等待对话框Show不出来)。这是我们需要使用CAknWaitNoteWrapper。
waitNoteWrapper- >ExecuteL(R_WAITNOTE_SEARCH_MUSIC_NOTE,*this);
----------
第三个参数默认为EFalse,改为ETrue。
SDK说明:
aVisibilityDelayOff If set ETrue the dialog will be visible immediality. Use only when the length of the process is ALWAYS over 1.5 seconds.
remember the wrapper isn't a dialog, so it doesn't need the EEikDialogFlagWait flag to make it blocking
小谈等待对话框
http://hi.baidu.com/richiechyi/blog/item/1324ce1f6ad1320c314e1587.html
可以把这这些资源写到一个文件中,到把这个文件包含到工程的主rss文件中,例如
#include "dialog.rssi"