CEikEdwin不能显示字符的问题

S60中的编辑框控件有很多种(普通编辑框、全局文本、IP地址、日期等等),这里只介绍普通编辑框——CEikEdwin。

一、创建编辑框

创建编辑框有两种方法:

1. 通过资源创建

1)资源定义

RESOURCE EDWIN r_example_editor

{

flags = EEikEdwinWidthInPixels; // 以像素为单位

width = 240; // 控件宽度

lines = 2; // 行数

maxlength = 1024; // 文本最大长度

}

2)生成代码
    TResourceReader reader;
    iCoeEnv->CreateResourceReaderLC( reader, R_EXAMPLE_EDITOR );
    iEditor = new ( ELeave ) CEikEdwin;
    iEditor->SetContainerWindowL( *this );
    iEditor->ConstructFromResourceL( reader );
    CleanupStack::PopAndDestroy();  // Resource reader
    // 之后就可以对iEditor对象进行操作。比如SetFocus,SetExtent等。
2. 通过代码创建
代码如下:
iEditor = new (ELeave) CEikEdwin;
iEditor->SetContainerWindowL(*this );
iEditor->ConstructL(EEikEdwinWidthInPixels, 240, 1024, 2);
// 之后可以对iEditor对象进行操作
// iEditor->SetFocus( ETrue );
二、更新编辑框文本
不能使用向CEikLabel的SetText函数,编辑框的文本是有CPlainText类来编辑的。例如
_LIT( KLabelRecvData, "Display recv data." );
CPlainText *text = iEdwinRecvData->Text();
text->InsertL( 0, KLabelRecvData );
更多的操作,比如删除,追加文本利用SDK中的API都可以实现。 也可参考Nokia论坛http://wiki.forum.nokia.com/index.php/Using_CEikEdwin_Text_Editor
三、可能遇到的问题
在最开始使用编辑框时,你可能会遇到下面问题:
1)不响应键盘输入
在OfferKeyEventL函数中调用CEikEdwin的OfferKeyEventL函数。比如:
TKeyResponse CEditControlAppViewContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,
TEventCode aType)
{
return iEditor->OfferKeyEventL( aKeyEvent, aType );
}
2)调用了OfferKeyEventL函数仍然不响应键盘输入
一般都是在复合控件中使用编辑框,那么复合控件一定在一个View中。
我最开始遇到的问题是:S60 3rd新建的UI Application程序框架中,包含×××AppUi类和×××AppView两个类。实际上AppView继承的是CCoeControl类。我在这个类中添加一个编辑框,程序运行后,编辑框不响应键盘输入。
解决方法:我将×××AppView改成×××AppViewContainer类,然后创建一个继承与CAknView的×××AppView类,这样一个View对应一个Container,这样在Container中的编辑框可以正常响应键盘输入了。
3) 文本框宽度太小,调整iEditor->ConstructL(EEikEdwinWidthInPixels, 240, 1024, 2);第二个参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值