Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 10:32, 14 January 2008.

CAknView::ClientRect()返回错误的绘制区域

From Forum Nokia Wiki

  • 开发伙伴平台:

S60 2nd Edition and FP1, FP2, FP3


  • 详细描述

CAknView完成了它自己的ClientRect()方法,一般用来设置控件的大小,这些都是由view来管理的。在某些情况下CAknView::ClientRect()返回的区域高度是错误的,这主要发生在资源文件中同时定义了应用程序级的CBA和某个view的CBA的情况下。


从而导致程序绘图区域中减掉两次control pane。这样CAknView::ClientRect()返回的区域高度就太小了。


  • 如何重现

我们可以通过编译S60第二版SDK FP3中的示例multiviews来查看这个错误:

在multiviews.rss中,在EIK_APP_INFO定义中增加一个CBA定义。

RESOURCE EIK_APP_INFO
 
    {
 
    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
 
    }


然后编译并运行这个示例,你就会看到错误所在。


  • 解决方法

我们只需要定义一个基于view的CBA,而不需要在EIK_APP_INFO资源中再定义另一个(例如可以用main view的CBA来代替它)


另一个解决方法是在构造view时同时传递一个AppUi的引用,从而使用CEikAppUi::ClientRect()来替换CAknView::ClientRect()即可。

Related Discussions
Thread Thread Starter Forum Replies Last Post
open a view by clicking the listbox item kirtij Symbian Tools & SDKs 5 2006-02-24 15:55
About Enum "TEventCode". zhaoguiyu Symbian 2 2003-11-22 01:30
How to invalidate and draw a portion of controls window ? gigglie General Symbian C++ 0 2008-05-17 08:52
how to get the phones orientation at the app launch. ravinder007 General Symbian C++ 7 2007-03-23 21:57
定义类的时候,其父类的顺序有要求么? awfulsoul General Symbian C++ 1 2007-02-20 18:40
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX