青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 2, 文章 - 73, 評(píng)論 - 60, 引用 - 0
數(shù)據(jù)加載中……

Symbian 中各種提示、輸入對(duì)話(huà)框的使用

1、非阻塞提示框

symbian定義了幾個(gè)提示類(lèi),分別是:
confirm類(lèi):CAknConfirmationNote
info類(lèi): CAknInformationNote
warning類(lèi):CAknWarningNote
error類(lèi):CAknErrorNote

頭文件:aknnotewrappers.h
lib: avkon.lib   eikcdlg.lib   eikctl.lib

Code:
TBuf<32> buf;
buf.Copy(_L("info note"));
CAknInformationNote* iInfoNote = new (ELeave) CAknInformationNote;
iInfoNote->ExecuteLD(buf);

2、阻塞提示框

void CEikonEnv::AlertWin(const TDesC& aMsg);
void CEikonEnv::AlertWin(const TDesC& aMsg1,const TDesC& aMsg2);
static void CEikonEnv::InfoWinL(const TDesC& aFirstLine,const TDesC& aSecondLine);

AlertWin為CEikonEnv類(lèi)的非靜態(tài)成員函數(shù),InfoWinL為CEikonEnv類(lèi)的靜態(tài)成員函數(shù)。
AlertWin只能在ui、view和container中使用,使用方法如下:

Code:
iEikonEnv->AlertWin(_L("text"));

InfoWinL可以在任意類(lèi)中使用,使用方法如下:
Code:
CEikonEnv::Static()->InfoWinL(_L("note:"), _L("text"));

為方便使用,常定義宏來(lái)使用這類(lèi)提示框,如:

Code:
#define DEBUG_DIALOG(x) iEikonEnv->AlertWin(##x);
#define DEBUG_DIALOG1(x) CEikonEnv::Static()->InfoWinL(_L("note:"), ##x);
#define DEBUG_DIALOG2(x,y) CEikonEnv::Static()->InfoWinL(##x, ##y);

可以這么使用:
TBuf<32> buf;
buf.Copy(_L("test"));
DEBUG_DIALOG(buf);
DEBUG_DIALOG1(buf);
DEBUG_DIALOG2(buf,_L("text"));

此類(lèi)提示框阻塞線(xiàn)程,只有用戶(hù)按鍵退出提示框后,后面的程序才能接著運(yùn)行。

3、進(jìn)度條對(duì)話(huà)框

進(jìn)度條對(duì)話(huà)框類(lèi)為:
CAknProgressDialog
頭文件:aknprogressdialog.h
lib:avkon.lib   eikcdlg.lib   eikctl.lib

Code:

//初始化進(jìn)度條
CAknProgressDialog* iProgressDialog;
CEikProgressInfo* iProgressInfo;
iProgressDialog = new ( ELeave ) CAknProgressDialog( reinterpret_cast
                                                        <CEikDialog**>
                                                        ( &iProgressDialog ) );
iProgressDialog->SetCallback( this );
iProgressDialog->PrepareLC( R_RESOURCE_PROGRESS_NOTE );   //從資源文件構(gòu)造對(duì)話(huà)框,資源見(jiàn)下面的定義
iProgressInfo = iProgressDialog->GetProgressInfoL();
iProgressInfo->SetFinalValue( aMaxValue );   //設(shè)置進(jìn)度條的最大值(結(jié)束值)
iProgressDialog->RunLD();
  
//更新進(jìn)度條
iProgressInfo->IncrementAndDraw( aStep );  

//結(jié)束進(jìn)度條
iProgressDialog->ProcessFinishedL();
delete iProgressDialog;

RESOURCE DIALOG R_RESOURCE_PROGRESS_NOTE   //進(jìn)度條對(duì)話(huà)框資源
     {
     flags = EAknProgressNoteFlags;
     buttons = R_AVKON_SOFTKEYS_CANCEL;
     items =
         {
         DLG_LINE
             {
             type = EAknCtNote;
             id = EMagicBoxCtrlIdProgressNote;
             control = AVKON_NOTE
                 {
                 layout = EProgressLayout;
                 singular_label = "對(duì)話(huà)框中顯示的文字";
                 plural_label = "download";
                 imagefile = AVKON_BMPFILE_NAME;    //第二版中 圖標(biāo)文件為 #define AVKON_BMPFILE_NAME "z:\\system\\data\\avkon.mbm"
                 imageid = EMbmAvkonQgn_note_sml;   //這兩項(xiàng)可更改顯示不同圖標(biāo)
                 imagemask = EMbmAvkonQgn_note_sml_mask;
                 };
             }
         };
     }

注意:In Series 60 3rd edition, avkon.mbm was replaced by avkon2.mbm and moved to a different location (and the SDK forgot to mention this and still provides erroneous location).
Old entry:
               imagefile = "z:\\system\data\avkon.mbm";
New entry:
               imagefile = "z:\\resource\apps\avkon2.mbm";


4、等待對(duì)話(huà)框

等待對(duì)話(huà)框要用到的類(lèi):CAknGlobalNote
頭文件:aknglobalnote.h
lib:aknnotify.lib eiksrv.lib

Code:

//顯示等待對(duì)話(huà)框
   CAknGlobalNote* globalNote = CAknGlobalNote::NewL();
   CleanupStack::PushL( globalNote );
   TInt iWaitNoteId = globalNote->ShowNoteL( EAknGlobalWaitNote, _L("對(duì)話(huà)框中顯示的文字") );
   CleanupStack::PopAndDestroy();
  
   //結(jié)束等待對(duì)話(huà)框
   CAknGlobalNote * note = CAknGlobalNote::NewL();
   CleanupStack::PushL( note );
   note->CancelNoteL( iWaitNoteId );
   CleanupStack::PopAndDestroy();

注意:
CAknGlobalNote類(lèi)除了顯示等待對(duì)話(huà)框外還可顯示多種類(lèi)型的全局對(duì)話(huà)框,具體類(lèi)型可通過(guò)ShowNoteL的第一個(gè)參數(shù)指定,可能的類(lèi)型如下:


Code:

enum TAknGlobalNoteType
{
EAknGlobalInformationNote = 1,
EAknGlobalWarningNote,
EAknGlobalConfirmationNote,
EAknGlobalErrorNote,
EAknGlobalChargingNote,
EAknGlobalWaitNote,
EAknGlobalPermanentNote,
EAknGlobalNotChargingNote,
EAknGlobalBatteryFullNote,
EAknGlobalBatteryLowNote,
EAknGlobalRechargeBatteryNote,
EAknCancelGlobalNote,
EAknGlobalTextNote
};

5、詢(xún)問(wèn)對(duì)話(huà)框

詢(xún)問(wèn)對(duì)話(huà)框用到的類(lèi):CAknQueryDialog
頭文件:AknQueryDialog.h
lib:avkon.lib

Code:

CAknQueryDialog* dlg;
dlg = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );
dlg->PrepareLC( R_RESOURCE_QUERY_DIALOG ); //從資源文件構(gòu)造對(duì)話(huà)框,資源見(jiàn)下面的定義
TInt ret = dlg->RunLD();   //若用戶(hù)選擇“是”,返回非0,選擇“否”,則返回0

RESOURCE DIALOG R_RESOURCE_QUERY_DIALOG   //詢(xún)問(wèn)對(duì)話(huà)框資源
     {
     flags = EGeneralQueryFlags;
     buttons = R_AVKON_SOFTKEYS_YES_NO;   //CBA顯示“是”和“否”兩個(gè)按鈕
     items =
         {
         DLG_LINE
             {
             type = EAknCtQuery;
             id = EGeneralQuery;
             control = AVKON_CONFIRMATION_QUERY    //表示這是confirm詢(xún)問(wèn)對(duì)話(huà)框,用戶(hù)選擇“是”或“否”
                 {
                 layout = EConfirmationQueryLayout;
                 label = "對(duì)話(huà)框中顯示的文字";
                 };
             }
         };
     }

此類(lèi)對(duì)話(huà)框可以有聲音提示,由NewL的const TTone& aTone參數(shù)指定,可能的值如下:

Code:

enum TTone {
     /// No tone is played
     ENoTone = 0,        
     /// A confirmation tone is played
     EConfirmationTone = EAvkonSIDConfirmationTone,
     /// A warning tone is played
     EWarningTone = EAvkonSIDWarningTone,      
     /// An error tone is played  
     EErrorTone = EAvkonSIDErrorTone         
     };

通過(guò)定義不同的詢(xún)問(wèn)對(duì)話(huà)框資源,可實(shí)現(xiàn)不同的詢(xún)問(wèn)對(duì)話(huà)框,如讓用戶(hù)輸入文字的詢(xún)問(wèn)對(duì)話(huà)框資源定義如下:

Code:

RESOURCE DIALOG R_RESOURCE_DATA_QUERY
   {
   flags = EGeneralQueryFlags;
   buttons = R_AVKON_SOFTKEYS_OK_CANCEL;   //CBA按鈕顯示“確定”和“取消”
   items =
       {
       DLG_LINE
           {
           type = EAknCtQuery;
           id = EGeneralQuery;
           control = AVKON_DATA_QUERY   //表示這是data詢(xún)問(wèn)對(duì)話(huà)框,需要用戶(hù)輸入內(nèi)容
               {
               layout = EDataLayout;
               label = "提示內(nèi)容";
               control = EDWIN
                   {
                   flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;
                   width = 30;
                   lines = 2;
                   maxlength = 159;
                   };
               };
           }
       };
   }    

Code:

TBuf<128> msg;
CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(msg,CAknQueryDialog::ENoTone);
   TInt ret = dlg->ExecuteLD(R_RESOURCE_DATA_QUERY);

用戶(hù)輸入內(nèi)容后按“確定”,內(nèi)容就存儲(chǔ)到msg中,函數(shù)返回非0;按“取消”,函數(shù)返回0。

這里用到的類(lèi)是CAknQueryDialog的子類(lèi)CAknTextQueryDialog。
CAknQueryDialog的子類(lèi)有:

Code:

CAknFloatingPointQueryDialog   //This class should be used when user is reguest to enter a flotaing point number
   CAknFixedPointQueryDialog      //...
   CAknDurationQueryDialog        //This class should be used when user is reguest to enter duration
   CAknIpAddressQueryDialog       //This class should be used when user is reguest to enter IP address,@since 2.1
   CAknMultiLineDataQueryDialog   //Query Dialog with data input on more than one line (2 lines at the moment)
                  Create using NewL methods and passing parameters as appropriate.
                  Attention: When deriving from this class, you must call SetDataL during
                  second phase construction.
   CAknMultiLineIpQueryDialog     //...
   CAknNumberQueryDialog          //This class should be used when user is reguest to enter number
   CAknTextQueryDialog            //This class should be used when user is reguest to enter plain text, secret text, phonenumber or PIN-code
CAknTimeQueryDialog            //This class should be used when user is reguest to enter time or date

使用不同的類(lèi),資源文件會(huì)有所不同。

另外,在資源中定義EDWIN時(shí),可指定輸入發(fā),如:

Code:

control = EDWIN
   {
     flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;
     width = 11;
     lines = 1;
     maxlength = 11;
   avkon_flags = EAknEditorFlagFixedCase |
         EAknEditorFlagNoT9 | EAknEditorFlagSupressShiftMenu;   //EAknEditorFlagSupressShiftMenu屏蔽切換輸入法鍵
   allowed_input_modes = EAknEditorNumericInputMode;
   default_input_mode = EAknEditorNumericInputMode;
   numeric_keymap = EAknEditorPlainNumberModeKeymap;
   };

以上寫(xiě)法表示默認(rèn)輸入法為數(shù)字,并且屏蔽了輸入法切換鍵,即不能通過(guò)輸入法切換鍵來(lái)切換輸入法。


6、編輯框

編輯框使用的類(lèi):CEikGlobalTextEditor
頭文件:eikgted.h

Code:

CEikGlobalTextEditor* iGKeyEd;
TBuf<128> iKeyText;
TResourceReader reader;
iCoeEnv->CreateResourceReaderLC( reader, R_RESOURCE_EDITOR );   //從資源文件構(gòu)造編輯框,資源見(jiàn)下面的定義
iGKeyEd = new ( ELeave ) CEikGlobalTextEditor;
iGKeyEd->SetContainerWindowL( *this );
iGKeyEd->ConstructFromResourceL( reader );
CleanupStack::PopAndDestroy();   // Resource reader

//設(shè)置編輯框的初始文本和位置,編輯框大小在資源中定義
TBuf<32> buf;
buf.Copy(_L("demo"));
iGKeyEd->SetTextL(&buf);
iGKeyEd->SetExtent( TPoint(5,2), iGKeyEd->MinimumSize() );
iGKeyEd->SetFocus(ETrue);
// iGKeyEd->SetReadOnly(ETrue);   //設(shè)置編輯框?yàn)橹蛔x

//使文字居中
CParaFormat      paraFormat; 
TParaFormatMask paraFormatMask;
paraFormatMask.SetAttrib( EAttAlignment );     // set mask
paraFormat.iHorizontalAlignment = CParaFormat::ECenterAlign;
iGKeyEd->ApplyParaFormatL( &paraFormat, paraFormatMask );
  
iGKeyEd->GetText(iKeyText); //獲取編輯框中的內(nèi)容,保存到iKeyText中

RESOURCE GTXTED R_RESOURCE_EDITOR   //編輯框資源  
   {
     flags = EAknEditorFlagDefault;
     width = 53;
     height = 16;
     numlines = 1;
     textlimit= 1;
     fontcontrolflags = EGulFontControlAll;
     fontnameflags = EGulNoSymbolFonts;

//這里也可設(shè)置輸入法
//    avkon_flags = EAknEditorFlagFixedCase |
                                   EAknEditorFlagNoT9 | EAknEditorFlagSupressShiftMenu;   //EAknEditorFlagSupressShiftMenu屏蔽切換輸入法鍵
//     allowed_input_modes = EAknEditorNumericInputMode;
//     default_input_mode = EAknEditorNumericInputMode;
//     numeric_keymap = EAknEditorPlainNumberModeKeymap;  
   }

注意,要使編輯框正常顯示,記得更改container的CountComponentControls和ComponentControl函數(shù),正確處理控件數(shù)目和編輯框指針。另外,要使編輯框能正常接收按鍵事件,要顯示調(diào)用編輯框的OfferKeyEventL函數(shù),如下:

Code:

TKeyResponse CMobileGuardSetKeyContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
{
     return iGKeyEd->OfferKeyEventL( aKeyEvent, aType );
}

posted on 2007-11-06 15:18 郭天文 閱讀(5462) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): S60

評(píng)論

# re: Symbian 中各種提示、輸入對(duì)話(huà)框的使用  回復(fù)  更多評(píng)論   

這么好的文章沒(méi)有人,頂。
2010-09-09 11:07 | hherima

# re: Symbian 中各種提示、輸入對(duì)話(huà)框的使用[未登錄](méi)  回復(fù)  更多評(píng)論   

好東西,頂一個(gè)
2010-09-19 13:59 | l
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合精品自拍| 国产精品久久7| 国产综合在线看| 久久久99久久精品女同性| 日韩午夜免费| 欧美国产一区视频在线观看 | 美日韩精品免费| 老司机精品福利视频| 久久精品99| 国产精品视频久久一区| 欧美成人在线免费观看| 亚洲宅男天堂在线观看无病毒| 亚洲欧洲一区| 久久噜噜噜精品国产亚洲综合| 在线观看日韩av电影| 久久精品国产77777蜜臀| 亚洲国产精品久久久久秋霞不卡| 久久高清免费观看| 久久精品日产第一区二区| 欧美成人精品一区二区| 欧美成人精品福利| 久久九九热免费视频| 久久午夜精品| 亚洲高清av| 亚洲欧洲一区二区三区| 日韩午夜黄色| 老**午夜毛片一区二区三区| 亚洲一区二区三区高清| 中文亚洲欧美| 欧美精品电影在线| 尤妮丝一区二区裸体视频| 亚洲在线中文字幕| 欧美高清视频www夜色资源网| 亚洲欧美日韩精品久久奇米色影视 | 美女性感视频久久久| 亚洲国产欧美另类丝袜| 亚洲精品久久久蜜桃| 性刺激综合网| 亚洲欧美高清| 国产一区二区三区自拍| 亚洲影视综合| 亚洲综合大片69999| 国产精品永久免费在线| 久久国产成人| 免费成人av在线| 亚洲国产欧美在线| 91久久线看在观草草青青| 欧美a级在线| 亚洲网友自拍| 久久综合狠狠综合久久激情| 亚洲麻豆av| 亚洲永久免费av| 一区精品久久| 亚洲一区二区精品在线| 在线成人免费视频| 亚洲激情在线视频| 国产视频综合在线| 亚洲承认在线| 久久视频在线视频| 欧美18av| 葵司免费一区二区三区四区五区| 欧美不卡视频一区| 午夜精品久久久久久久久久久| 亚洲国产日韩一级| 99精品视频一区二区三区| 国产在线观看一区| 亚洲影院免费| 国产精品一区亚洲| 亚洲国产精品嫩草影院| 韩国精品一区二区三区| 亚洲一区二区免费在线| 亚洲午夜视频| 欧美人成在线| 日韩视频亚洲视频| 一本综合精品| 国产精品大片wwwwww| 亚洲国产精品电影在线观看| 在线观看久久av| 久久亚洲精品欧美| 看欧美日韩国产| 亚洲黄色视屏| 欧美日韩一区视频| 一本久久综合亚洲鲁鲁五月天| 亚洲精品美女在线| 欧美视频在线观看视频极品| 日韩午夜免费| 噜噜噜久久亚洲精品国产品小说| 韩国免费一区| 国产精品h在线观看| 午夜精品福利视频| 免费人成精品欧美精品| 亚洲一区二区三区四区在线观看| 欧美区一区二区三区| 亚洲一区二区三区在线观看视频| 久久成人综合网| 欧美日韩三级视频| 亚洲一级二级| 亚洲激情视频在线| 久久久.com| 亚洲欧美日韩另类| 在线观看一区视频| 国产日韩精品一区二区三区| 91久久精品www人人做人人爽| 欧美视频免费在线观看| 麻豆av一区二区三区久久| 亚洲欧美成人| 亚洲私拍自拍| 一区二区三区国产精华| 欧美电影免费观看网站| 亚洲你懂的在线视频| 亚洲激情av| 在线日韩中文字幕| 在线观看日韩| 亚洲成人资源| 亚洲欧洲日本在线| 91久久精品美女高潮| 伊人久久大香线蕉综合热线| 国产日韩欧美一区二区三区四区| 欧美性大战久久久久久久| 欧美性片在线观看| 国产欧美日韩一区二区三区| 国产欧美午夜| 黄色成人免费观看| 亚洲国产精品一区二区第四页av| 亚洲高清成人| 亚洲美女视频网| 欧美一级视频免费在线观看| 亚洲欧美激情视频| 麻豆精品精品国产自在97香蕉| 久久久999精品免费| 亚洲国产mv| 亚洲在线免费| 欧美福利一区二区三区| 国产日韩精品一区二区三区| 激情综合色综合久久| 亚洲日韩欧美视频| 欧美日本不卡视频| 国产亚洲精品7777| 亚洲第一综合天堂另类专| 欧美aaaaaaaa牛牛影院| 国产亚洲精品久久久久动| 亚洲国产婷婷香蕉久久久久久| 一本在线高清不卡dvd| 久久久久一本一区二区青青蜜月| 久久久之久亚州精品露出| 欧美日韩ab片| 在线观看不卡| 另类天堂视频在线观看| 午夜精品一区二区三区在线播放| 美女999久久久精品视频| 黄色日韩网站视频| 欧美日韩国产123区| 亚洲国产合集| 男女av一区三区二区色多| 亚洲欧美色婷婷| 欧美午夜在线| 亚洲一区二区网站| 亚洲国产精品第一区二区三区 | 一区二区在线看| 亚洲欧美伊人| 亚洲一区二区不卡免费| 国产精品女主播一区二区三区| 精品动漫3d一区二区三区免费版| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲电影中文字幕| 欧美精品亚洲精品| 午夜久久久久久| 欧美中文字幕视频在线观看| 国产日韩欧美夫妻视频在线观看| 亚洲一区亚洲| 午夜精品一区二区三区四区| 国产私拍一区| 久久亚洲综合色一区二区三区| 母乳一区在线观看| 99re这里只有精品6| 一区二区三区国产精品| 极品裸体白嫩激情啪啪国产精品| 在线观看一区欧美| 亚洲精选91| 国产日韩欧美在线播放| 亚洲精品一区二区三区av| 好看的亚洲午夜视频在线| 一区二区三区久久| 亚洲国产欧美在线人成| 一区二区高清视频| 久久青草福利网站| 午夜在线精品| 国产精品制服诱惑| 亚洲精品久久久一区二区三区| 国内精品视频久久| 久久国产手机看片| 久久久久久久999精品视频| 欧美日韩一区二区三区免费看| 久久久久国产一区二区| 国产一级揄自揄精品视频| 亚洲欧美日韩国产成人精品影院| 亚洲伦理中文字幕| 欧美激情一区二区在线| 亚洲伦伦在线| 久久精品视频在线免费观看|