自定义滚动条算法symbian
2010-10-20 07:59:55 来源:WEB开发网自己搞定了,分享一下:
1.算出滚动条的高度。
TInt height = 一屏显示的行数 * 屏幕高度 / 总行数
2.根据第一步算出的高算出移动步长.
TInt step = (屏幕高 - height) / 总行数;
3.上下移动时增加或减少步长。 ...
lming 发表于 2009-4-8 16:14 [/quote]
可以参考浏览器接口的滚动条的回调参数。
virtual void MBrCtlLayoutObserver::UpdateBrowserVScrollBarL ( TInt aDocumentHeight,
TInt aDisplayHeight,
TInt aDisplayPosY
) [pure virtual]
你看,总共有3个参数。
第一个是整体文档的高度,第二个是屏幕显示的高度,第三个是当前开始显示点的高度。
根据这三个参数,应该可以应付各种滚动条的计算了。
# void CLabelControl::UpdateScrollBarFrameL()
# {
# // Set teh scrollbar visible if fields do not fit the screen
# if (iRowNum > iRows && iScrollBarFrame->VScrollBarVisibility()
# == CEikScrollBarFrame::EOff)
# {
# iScrollBarFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, // horizontal
# CEikScrollBarFrame::EOn); // vertical
# }
# // Hide the scrollbar if fields fit the screen
# else
# if (iRowNum <= iRows && iScrollBarFrame->VScrollBarVisibility()
# == CEikScrollBarFrame::EOn)
# {
# iScrollBarFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, // horizontal
# CEikScrollBarFrame::EOff); // vertical
# }
#
# // Update scroll bar position
# iVDsSbarModel.SetScrollSpan(iRowNum);
# iVDsSbarModel.SetWindowSize(iRows);
# iVDsSbarModel.SetFocusPosition(iRowIndex);
更多精彩
赞助商链接