现在的位置: 首页 > 综合 > 正文

Symbian常用对话框

2013年12月07日 ⁄ 综合 ⁄ 共 2661字 ⁄ 字号 评论关闭

Symbian常用对话框

http://hi.baidu.com/yeyingxian/blog/item/3f2ec5c82e69b4177e3e6fb0.html

 

 

Symbian常用对话框

1、文本询问对话框
资源的定义(注意分号)

RESOURCE DIALOG r_text_query
    {
    flags = EGeneralQueryFlags;
    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
    items = 
        {
        DLG_LINE
            {
            type = EAknCtQuery;
            id = EGeneralQuery;
            control = AVKON_DATA_QUERY
                {
                layout = EDataLayout;
                label = "";
                control = EDWIN
                    {
                    width = 5;
                    lines = 1;
                    maxlength = 15;
                    };
                };
            }
        };
    }

调用该类的代码

   TBuf<128> text; //保存用户输入信息
   TBuf<128> prompt(_L("Enter text:")); //提示
   
   CAknTextQueryDialog *dlg = new(ELeave)CAknTextQueryDialog(text, prompt);

   dlg->SetMaxLength(20);
   if (dlg->ExecuteLD(R_TEXT_QUERY))
   {     //OK被按下
   }

2、列表询问对话框
RESOURCE AVKON_LIST_QUERY r_demo_list_query
    {
    flags = EGeneralQueryFlags;
    softkeys = R_AVKON_SOFTKEYS_OK_CANCEL;
    items =
        {
        AVKON_LIST_QUERY_DLG_LINE
            {
            control = AVKON_LIST_QUERY_CONTROL
                {
                listtype = EAknCtSinglePopupMenuListBox;
                listbox = AVKON_LIST_QUERY_LIST
                    {
                    array_id = r_demo_list_query_item;
                    };
                heading = "Select one item:";
                };
            }
        };
    }

RESOURCE ARRAY r_demo_list_query_item
    {
    items =
        {
        LBUF {txt = "First item"; },
        LBUF {txt = "Second item"; },
        LBUF {txt = "Third item"; }
        };
    }

调用的代码
TInt index( 0 );
CAknListQueryDialog* dlg = new( ELeave ) CAknListQueryDialog( &index );
if ( dlg->ExecuteLD(R_DEMO_LIST_QUERY) )
   {
   // ok pressed, index is the selected item index.
   } 

程序中动态设置列表项例子
TInt index( 0 );
CAknListQueryDialog* dlg = new( ELeave ) CAknListQueryDialog( &index );
CDesCArrayFlat *aArray = new(ELeave)CDesCArrayFlat(3);
TBuf<16> aString;

aString.Format(_L("Item %d"), 1);
aArray->AppendL(aString);
aString.Format(_L("Item %d"), 2);
aArray->AppendL(aString);
aString.Format(_L("Item %d"), 3);
aArray->AppendL(aString);

dlg->PrepareLC(R_DEMO_LIST_QUERY);
dlg->SetItemTextArray(aArray);
dlg->SetOwnershipType(ELbmOwnsItemArray);

if (dlg->RunLD()){} 

3、另外Symbian中建立简单常用对话框的较快方法,无须使用资源

static TBool CEikonEnv::QueryWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
显示一个带有指定文本行的询问对话框,提供Yes/No。如选Yes,返回ETrue

static void CEikonEnv::InfoWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
显示一个带有指定文本行的信息对话框

static void CEikonEnv::AlertWinL(const TDesC &aFirstLine, const TDesC &aSecondLine);
显示一个带有指定文本行的报警对话框

抱歉!评论已关闭.