不需資源檔的對話框! ( QueryWinL / InfoWinL / AlertWinL / CAknGlobalNote )
剛接觸到Symbian的UI時,第一個要找的就是類似windows訊息框(MessageBox)的對話框來秀出除錯訊息,結果發現到要在symbian上的對話框除了需要原始檔之外還必需自己寫資源檔(*.rssi),雖然新的Carbide 2.0有提供UI designer 但是卻因為UI架構的關係使用起來不太方便尤其是多個View的時候,還好Symbian 還是有提供幾個不需要資源檔就可以直接使用的對話框!以下就來介紹這些對話框的使用方式
1.詢問框,帶有指定文字,提供Yes/No。如果選Yes,返回ETrue,反之則反!
static TBool CEikonEnv::QueryWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
2.訊息框,帶有兩行指定文字,但沒有icon圖示!可以在任意類別中使用
static void CEikonEnv::InfoWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
Usage : CEikonEnv::Static()->InfoWinL(_L("note:"), _L("text"));
3.警告訊息框,帶有指定文字及icon和tone聲,為CEikonEnv的非靜態成員函式,只能在ui、view和container中使用
static void CEikonEnv::AlertWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
Usage : iEikonEnv->AlertWin(_L("text"));
4.等待框,比起CAknWaitDialog啟動的時間更即時!
class : CAknGlobalNote
head file : aknglobalnote.h
Lib : aknnotify.lib eiksrv.lib
Usage :
//顯示等待對話框
CAknGlobalNote* globalNote = CAknGlobalNote::NewL();
CleanupStack::PushL( globalNote );
//取消"取消"鍵,讓使用者無法取消等待,但是R_AVKON_SOFTKEYS_EMPTY必需有其他的資源檔曾定義過!
globalNote ->SetSoftkeys(R_AVKON_SOFTKEYS_EMPTY);
TInt iWaitNoteId = globalNote->ShowNoteL( EAknGlobalWaitNote, _L("對話框中顯示的文字!") );
CleanupStack::PopAndDestroy();
//結束等待對話框
CAknGlobalNote * note = CAknGlobalNote::NewL();
CleanupStack::PushL( note );
note->CancelNoteL( iWaitNoteId );
CleanupStack::PopAndDestroy();
注:
CAknGlobalNote還可顯示其他各種不同類型的對話框,由ShowNoteL中第一個參數決定,其參數如下:
enum TAknGlobalNoteType
{
EAknGlobalInformationNote = 1,
EAknGlobalWarningNote,
EAknGlobalConfirmationNote,
EAknGlobalErrorNote,
EAknGlobalChargingNote,
EAknGlobalWaitNote,
EAknGlobalPermanentNote,
EAknGlobalNotChargingNote,
EAknGlobalBatteryFullNote,
EAknGlobalBatteryLowNote,
EAknGlobalRechargeBatteryNote,
EAknCancelGlobalNote,
EAknGlobalTextNote
};