输入法问题 3rd 真机调用CEikEdwin的SetExtent就死机

20040216 2009-05-19 11:46:21
模拟器没问题,输入也是正常的
真机调用到CEikEdwin的SetExtent方法就死机
symbian开发真XX磨练人的意志
...全文
211 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
20040216 2009-05-20
  • 打赏
  • 举报
回复
问题解决了,是因为我在container中用的是CreateBackedUpWindowL,而不是CreateWindowL
改为使用CreateWindowL就好了,多谢大家

另外有问题是怎么改变候选字框当前选中汉字的颜色,现在是白色,看不清楚了
alex_hua 2009-05-19
  • 打赏
  • 举报
回复
多贴点错误信息!!!
anel 2009-05-19
  • 打赏
  • 举报
回复
CEikEdwin指针创建了吗?
20040216 2009-05-19
  • 打赏
  • 举报
回复
m_input->SetExtent(TPoint(0, 0), TSize(0, 0));就可以
只要大小不为0,都不能正常显示,我靠,快晕了
alex_hua 2009-05-19
  • 打赏
  • 举报
回复
先在初始化时设置m_input可见,把m_input->SetExtent(TPoint(5, 5), TSize(100, 25))放入void myapp_container::SizeChanged()中先,先确保这样的情况下能正常显示。【这样都不行的话,那就不知道了】

然后改变初始化时设置m_input为不可见,当你需要输入数据时,控制其可见即可,不必再次调用m_input->SetExtent(TPoint(5, 5), TSize(100, 25))。如确实有改变位置的需求,则调用哪个SetPosition()方法
20040216 2009-05-19
  • 打赏
  • 举报
回复
SizeChanged里我什么都没有做啊
void myapp_container::SizeChanged()
{
}

myapp_container这个类要继承MEikEdwinObserver吗
mickeyfirst 2009-05-19
  • 打赏
  • 举报
回复
SetExtent会导致SizeChanged被调用,你又在SizeChanged中调用SetExtent,结果会怎么样?!


[Quote=引用 4 楼 anel 的回复:]
ActivateL不必了。
SetExtent在sizechanged里做吧
[/Quote]
20040216 2009-05-19
  • 打赏
  • 举报
回复
手机输出PANIC信息了:
WSERV 1
20040216 2009-05-19
  • 打赏
  • 举报
回复
在模拟器上可以运行,到5320手机就出问题了
20040216 2009-05-19
  • 打赏
  • 举报
回复
包含这个输入控件的容器的sizechanged方法什么都没有做
smile190 2009-05-19
  • 打赏
  • 举报
回复
调用SetExtent方法会相应到sizechanged的方法,看看你的sizechanged方法有没有问题
20040216 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alex_hua 的回复:]
1. 检查你这个复合控件机制正确,CountComponentControls()方法和ComponentControl()方法
2. 初始化时,去掉 m_input->ActivateL();    //激活控件
3. 按你的程序意思,初始化是否应该隐藏input?(m_input->MakeVisible(EFalse))
4. 在需要数据输入时,m_input->MakeVisible(ETrue),m_input->SetExtent(TPoint(5, 5), TSize(100, 25));
5. 在真机上打开PANIC错误提示,这个对真机调式运行很有帮助

[/Quote]

谢谢,还是有问题,需要输入数据的时候还需要调用m_input->SetFocus(TRUE);才能显示出来
如果不调用m_input->SetExtent,不会死机,可以显示在默认的位置,但是输入数据程序就退出

程序是这样的,UI都是自己绘制,程序启动后初始化好m_input,然后进入全屏的状态,开始绘制程序UI
当要图书数据时,m_input->MakeVisible(ETrue),m_input->SetExtent(TPoint(5, 5), TSize(100, 25));m_input->SetFocus(TRUE);但是使用SetExtent程序就退出

另外真机上怎么打开PANIC错误提示,经验太少,谢谢指点!
漁_夫 2009-05-19
  • 打赏
  • 举报
回复
mark

alex_hua 2009-05-19
  • 打赏
  • 举报
回复
1. 检查你这个复合控件机制正确,CountComponentControls()方法和ComponentControl()方法
2. 初始化时,去掉 m_input->ActivateL(); //激活控件
3. 按你的程序意思,初始化是否应该隐藏input?(m_input->MakeVisible(EFalse))
4. 在需要数据输入时,m_input->MakeVisible(ETrue),m_input->SetExtent(TPoint(5, 5), TSize(100, 25));
5. 在真机上打开PANIC错误提示,这个对真机调式运行很有帮助
anel 2009-05-19
  • 打赏
  • 举报
回复
ActivateL不必了。
SetExtent在sizechanged里做吧
20040216 2009-05-19
  • 打赏
  • 举报
回复
手机上程序执行到SetExtent直接退出
模拟器上是好的

代码如下:
初始化:
m_input = new(ELeave) CEikEdwin;

m_input->ConstructL(0, 220, 20, 1);


m_input->SetContainerWindowL(*this);
m_input->ActivateL(); //激活控件

程序运行到需要输入数据的时候:
m_input->SetExtent(TPoint(5, 5), TSize(100, 25));
//进入输入法
m_input->SetFocus(1);

问题在于程序执行到SetExtent就退出

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧