三版移植到第五版文本框的输入解决方案:

本文介绍从S60第三版移植到第五版时文本框输入处理的变化,重点讲解如何通过HandlePointerEventL()响应点击事件,并使用CAknTextQueryDialog实现账号和密码的输入。

三版移植到第五版文本框的输入解决方案:

CEikEdwin* iEdwin1;

在第三版上,输入框可以直接响应OfferKeyEventL(),当移植到第五版上的时候,需要响应HandlePointerEventL(),
五版上做法如下:

void CloginContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent)
    {
    if (aPointerEvent.iType == TPointerEvent::EButton1Up)
        {
        TPoint inewPointer = aPointerEvent.iPosition;
        if (iEdwin1->Rect().Contains(inewPointer))
            {
            iEdwin1->SetFocus(ETrue);
            TBuf<200> uri;
            CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(uri,
                    CAknQueryDialog::ENoTone);

            if (!dlg->ExecuteLD(R_DIALOG_QUERY_ACCOUNT))
                return;
           
            iEdwin1->SetTextL(&uri);
            }
        else if (iEdwin2->Rect().Contains(inewPointer))
            {
            iEdwin2->SetFocus(ETrue);
            TBuf<200> uri;
            uri.Append(_L("value"));    //默认的内容
            CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog(uri,
                    CAknQueryDialog::ENoTone);
            if (!dlg->ExecuteLD(R_DIALOG_QUERY_PASSWD))
                return;
           
            iEdwin2->SetTextL(&uri);
            }
        }

DrawDeferred();
    }




.rss文件

//-----------------------------------账号输入框-----------------------------------
RESOURCE DIALOG r_dialog_query_account
    {
    flags = EGeneralQueryFlags;
    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
    items =
        {
        DLG_LINE
            {
            type = EAknCtQuery;
            id = EGeneralQuery;
            control = AVKON_DATA_QUERY
                {
                layout = EDataLayout;
                label = qtn_dlg_0;    //.rls中定义的标签
                control = EDWIN
                    {
                    maxlength = 128;
                    default_input_mode = EAknEditorNumericInputMode;    //默认输入法   
                    allowed_input_modes = EAknEditorNumericInputMode;    //允许的输入法,只能输入数字。
                    };
                };
            }
        };
    }
//-----------------------------------密码输入框-----------------------------------
RESOURCE DIALOG r_dialog_query_passwd
    {
    flags = EGeneralQueryFlags;
    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
    items =
        {
        DLG_LINE
            {
            type = EAknCtQuery;
            id = EGeneralQuery;
            control = AVKON_DATA_QUERY
                {
                layout = EDataLayout;
                label = qtn_dlg_1;    //.rls中定义的标签
                control = EDWIN
                    {
                    maxlength = 128;
                    default_input_mode = EAknEditorSecretAlphaInputMode;
                    allowed_input_modes = EAknEditorSecretAlphaInputMode|EAknEditorNumericInputMode;     //只能输入数字、字符。不能输入汉字
                    };
                };
            }
        };
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值