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 |
