MFC CScrollView 鼠标拖动滚动条出现回滚现象

xiejanee 2015-04-14 03:48:39
自己写了个视图滚动显示的测试程序 先定义了一个派生自CScrollView的视图类 在视图里创建一定数目的Cstatic控件 并将图像加载到控件上 并将视图大小设置为一个较大的值(比如(200,20000)) 然后实现OnVScroll函数 当拖动垂直滚动条时 不断移动控件的位置 使视图上始终有图像显示 现在有个问题就是 当拖动滚动条到位置1000左右时 滚动条会自动回滚到初始位置而无法继续拖动下去 不知该如何解决 请各位指教!现将OnVScroll函数实现附上,函数UpScrollLine ,DownScrollLine,ScrollSBPageUp,ScrollSBPageUp,ScrollSBPageDown,ScrollSBThumbTrack是用来移动视图中显示图像的控件位置

void CPicShowView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
//// TODO: 在此添加消息处理程序代码和/或调用默认值
CSize sizePage;
CSize sizeLine;
CSize sizeTotal;
int mapMode;
GetDeviceScrollSizes(mapMode, sizeTotal, sizePage, sizeLine);
int iPageStep = sizePage.cy;
int iLineStep = sizeLine.cy;

int iCtrlDist = (m_sDecriFormat.iCtrlDist + 90); //iCtrlDist 为显示图像的控件之间的距离
CPoint ScrollPosition;
ScrollPosition = GetScrollPosition(); // 获取滚动条坐标
int iCurRow = (ScrollPosition.y + iPageStep) / (iCtrlDist);

SCROLLINFO scrollinfo;
GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

//滚动条坐标输出
//m_iScroYLoc = ScrollPosition.y;
//OutputDebugPrintf("scrollTime: m_iScroPositon = %d", m_iScroYLoc);

switch(nSBCode)
{
case SB_TOP:
break;
case SB_LINEUP :
UpScrollLine(ScrollPosition.y - iLineStep, iCtrlDist);
break;
case SB_LINEDOWN:
DownScrollLine(ScrollPosition.y + iLineStep, iCtrlDist);
break;
case SB_PAGEUP:
ScrollSBPageUp(ScrollPosition.y - iPageStep, iCtrlDist);
break;
case SB_PAGEDOWN:
ScrollSBPageDown(ScrollPosition.y + iPageStep, iCtrlDist);
break;
case SB_THUMBTRACK:
ScrollSBThumbTrack(scrollinfo.nTrackPos, iCtrlDist);
break;
case SB_THUMBPOSITION:
break;
}


Invalidate(FALSE);
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
...全文
438 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-05-14
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
Eleven 2015-05-14
  • 打赏
  • 举报
回复
codeproject上搜索CScrollHelper类,比较好用
worldy 2015-04-14
  • 打赏
  • 举报
回复
// Invalidate(FALSE); // CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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