CScrollView類中,若視圖尺寸很大。
如100000*100000;
void CLOView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TEXT, CSize(100000,100000));
}
那麼當拖動滾動框距離稍大一點時,就會出現回滾,即滾動框又回到0位置。
原因:CScrollView使用的滾動條是已經"過時"的函數,即SetScrollRange和SetScrollPos函數,或許這些函數都是從Win16 APIs遺留下來的吧。當響應WM_VSCROLL的SB_THUMBTRACK消息時wParam的低16bits爲SB_THUMBTRACK標識,而高16bits爲滾動框的當前位置。因此大的最大位置只能到65535.當到達65535時,你還在拖動滾動框,就會出出現65535-->0,從而使滾動框又回到了0的位置。
解決辦法:用32位的API,GetScrollInfo, SetScrollInfo