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

来源:互联网 发布:停车场计费规则 java 编辑:程序博客网 时间:2024/05/01 01:26

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

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;     //只能输入数字、字符。不能输入汉字
                    };
                };
            }
        };
    }