|
void CTest_1AppUi::HandleCommandL(TInt aCommand) { switch ( aCommand ) { case EAknSoftkeyBack: case EEikCmdExit: { _LIT(KQueryDelete,"Are you sure to delete it?"); CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(const_cast<TDesC&>(KQueryDelete()),CAknQueryDialog::EWarningTone);
TInt temp = dlg->ExecuteLD(R_DIALOG_DELETE_QUERY);
_LIT(KReturnValue,"the return value is :");
HBufC* iBuf = HBufC::NewLC(100); iBuf->Des().Copy(KReturnValue); iBuf->Des().AppendNum(temp); CEikonEnv::Static()->InfoMsg(*iBuf); CleanupStack::PopAndDestroy(iBuf); break; }
default: break; } }
从程序执行中我们可以看到,当我们点dlg的NO按钮时,temp的值为一个正数(程序中是3005),而当我们点dlg 的OK的时候,temp的值为0。
所以我们在很多程序中可以看到类似下面的代码:
if(dlg->ExecuteLD(R_DIALOG_DELETE_QUERY)) { TInt index = iListBox->CurrentItemIndex(); TName name(db.iName); iUi->iDB->iArrayDB->Delete(index); iUi->iDB->SaveDBL(); CEikonEnv::Static()->ReadResource(info, R_STR_DELETE_TIPS); tips.Format(info, &name); ShowNotify(tips); if(iUi->iDB->iArrayDB->Count()==0) { CEikonEnv::Static()->ReadResource(info, R_STR_NO_CD_TIPS); ShowNotify(info); CreateFunctionListBoxL(); } else { CreateRecordListBoxL(); } }
也就是判断我们是否点击了Dialog的OK按钮。 |