内嵌浏览器如何显示进度条?

ron_cs 2010-04-22 03:08:37
如题?
...全文
294 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ron_cs 2010-04-29
  • 打赏
  • 举报
回复
感谢dyw和Atoric二位大侠的帮助.结贴给分.
ron_cs 2010-04-28
  • 打赏
  • 举报
回复
感谢Atoric大侠的回复.我之前是看UCWeb才有把进度条放在Cba区域绘制的想法,陷入了一个死胡同,毕竟只是个内嵌浏览器,没必要太复杂,当然能像UCWeb那样做更好,呵呵.
Atoric 2010-04-28
  • 打赏
  • 举报
回复
是不是可以这样实现,在获取到全部网页内容之前先把浏览器控件隐藏,菜单和CBA还是用系统默认的,进度条可以放在CBA上面,当进度条装载满后,显示浏览器的内容
ron_cs 2010-04-27
  • 打赏
  • 举报
回复
全屏自绘后可以实现进度条,但是又出现了新的问题,即:
1、如何实现菜单?如果利用在Cba区域绘制按钮的话,到时焦点可以移动到Cba区域,和传统的习惯相悖。如果自绘菜单区域的的话,焦点如何能移到菜单区域?
2、StatusPane,ToolBar的区域如何获得?其中CEikStatusPane中的Rect()好像是Protected,不能访问,我现在都用固定值,不利于移植。
再次感谢大侠们的回复,衷心希望再次得到你们的指点。
dyw 2010-04-26
  • 打赏
  • 举报
回复
全屏后,就可以自绘了...
ron_cs 2010-04-26
  • 打赏
  • 举报
回复
又出现新的问题了,如何在Cba或StatePane区域在绘制进度条呢?我自己写的两个法好像都无效.
1.
void SetProgressBar(TInt aValue)
{
iProgressBarValue=aValue;
DrawNow();
}

void Draw(const TRect& aRect) const
{
if(iProgressBarValue!=100)
{
CWindowGc& gc = SystemGc();

CEikButtonGroupContainer* cba = CEikonEnv::Static()->AppUiFactory()->Cba();
TRect cbaRect(cba->Rect());
TPoint point(cbaRect.Center());

TRect pbRect(TPoint(point.iX-50,point.iY-10),TSize(100,20));
gc.SetPenStyle(CGraphicsContext::ESolidPen);
gc.SetPenColor(KRgbGray);
gc.DrawRect(pbRect);

TRect overPBRect(TPoint(point.iX-50,point.iY-10),TSize(iProgressBarValue,20));
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.SetBrushColor(KRgbGray);
gc.DrawRect(overPBRect);
}

2.
void CShowCool::SetProgressBar(TInt aValue)
{
iProgressBarValue=aValue;
if(iProgressBarValue!=100)
{
CWindowGc& gc = SystemGc();

CEikButtonGroupContainer* cba = CEikonEnv::Static()->AppUiFactory()->Cba();
TRect cbaRect(cba->Rect());
TPoint point(cbaRect.Center());

TRect pbRect(TPoint(point.iX-50,point.iY-10),TSize(100,20));
gc.SetPenStyle(CGraphicsContext::ESolidPen);
gc.SetPenColor(KRgbGray);
gc.DrawRect(pbRect);

TRect overPBRect(TPoint(point.iX-50,point.iY-10),TSize(iProgressBarValue,20));
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.SetBrushColor(KRgbGray);
gc.DrawRect(overPBRect);

cba->DrawNow();
}
}
还望高人继续赐教,感谢.
ron_cs 2010-04-24
  • 打赏
  • 举报
回复
感谢dyw和Atoric的回复。后者的进度条好像是“假进度条”吧,如果这样实现的话,那每次是不是感觉都一样呢?不过也是一种思路,总比等了半天,然后突然蹦出个页面要好的多。再次感谢!
Atoric 2010-04-23
  • 打赏
  • 举报
回复
void CBrowserContainer::HandleBrowserLoadEventL(TBrCtlDefs::TBrCtlLoadEvent aLoadEvent,
TUint /*aSize*/,
TUint16 /*aTransactionId*/)
{
// 根据浏览器事件更新进度条
switch(aLoadEvent)
{
case TBrCtlDefs::EEventNewContentStart:
SetBrowserProgress(10);
break;
case TBrCtlDefs::EEventUrlLoadingStart:
SetBrowserProgress(40);
break;
case TBrCtlDefs::EEventNewUrlContentArrived:
case TBrCtlDefs::EEventNewContentDisplayed:
SetBrowserProgress(80);
break;
case TBrCtlDefs::EEventUrlLoadingFinished:
case TBrCtlDefs::EEventLoadFinished:
case TBrCtlDefs::EEventContentFinished:
SetBrowserProgress(100);
break;
default:
break;
}
}
dyw 2010-04-22
  • 打赏
  • 举报
回复
可实现MBrCtlLoadEventObserver接口,监听进度,然后自汇...

3,119

社区成员

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

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