不拖动滚动条,如何让滚动条动?

PepperEggFriedRice 2016-12-20 01:57:57
比如我点了一下按钮滚动条不管在哪就直接回到最顶端,或者点一下就往下移动10个像素。这种效果要用什么函数实现?
...全文
288 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
大树学长 2016-12-21
  • 打赏
  • 举报
回复
抱歉,没看清,我上面的是设置为每次移动1格,你要移动10格就设置每次+-10, 点击会到最顶端就是点击时响应中添加setPos(0);
赵4老师 2016-12-21
  • 打赏
  • 举报
回复
SendMessage?
大树学长 2016-12-21
  • 打赏
  • 举报
回复
记不太清了,设置MAX为100,楼主点一下会跳动10? 自己设置滚动条的点击事件响应 每次判断点击的位置在滑块的上方还是下发 在上方就滑块++,下发就--。(+是向上移动-是向下移动) 先获取滑块位置GetPos( ) = a; 然后设置滑块位置 如果点击在滑块上方就setPos(a++) 下方就setPos(a--) 同样的道理:两端设置两个按钮 点击一下上方的响应pos()++ 下放的响应-- 你还有一个时间就是鼠标滚轮的响应,也需要设置++或者-- 仔细看差不多就是这个意思了
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
引用 1 楼 kahauez_ 的回复:
只是需要滚动条滑块移动?SetScrollInfo
稳了
引用 2 楼 lx624909677 的回复:
滚动条的点击事件里,会判断你点击的类型,根据类型去重新设置滚动条的位置就可以了
我的意思是假如 加一个button,点一下button就动一下滚动条,比如点一下滚动条往下移动一下这种、
lx624909677 2016-12-21
  • 打赏
  • 举报
回复
void CHTM_MHPTopologyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: Add your message handler code here and/or call default
	if(pScrollBar == NULL)
	{
		CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
		return;
	}

	int pos;
	pos = m_ScrollBarH.GetScrollPos();
	//Scroll Bar Commands
	switch(nSBCode)
	{
	case SB_LINEUP:
		pos-=1;
		break;
	case SB_LINEDOWN:
		pos+=1;
		break;
	case SB_PAGEUP:
		pos-=10;
		break;
	case SB_PAGEDOWN:
		pos+=10;
		break;
	case SB_TOP:
		pos = 0;
		break;
	case SB_BOTTOM:
		pos = m_picWidth-1;
		break;
	case SB_THUMBPOSITION:
		pos = nPos;
		break;
	default:
		return;
	}


	if(pos < 0)
	{
		pos = 0;
	}
	else if(pos+m_client.Width()>m_picWidth-1)
	{
		pos = m_picWidth-1-m_client.Width();
	}


	m_ScrollBarH.SetScrollPos(pos,TRUE);
	m_iX = pos;

	InvalidateRect(&m_picRC);
	CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}
nSBCode判断类型,下面的SetScrollPos是设置新的位置
lx624909677 2016-12-21
  • 打赏
  • 举报
回复
滚动条的点击事件里,会判断你点击的类型,根据类型去重新设置滚动条的位置就可以了
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
12楼为最终实现。结贴。
lx624909677 2016-12-21
  • 打赏
  • 举报
回复
引用 10 楼 PepperEggFriedRice 的回复:
[quote=引用 9 楼 lx624909677 的回复:] [quote=引用 4 楼 PepperEggFriedRice 的回复:] [quote=引用 1 楼 kahauez_ 的回复:] 只是需要滚动条滑块移动?SetScrollInfo
稳了
引用 2 楼 lx624909677 的回复:
滚动条的点击事件里,会判断你点击的类型,根据类型去重新设置滚动条的位置就可以了
我的意思是假如 加一个button,点一下button就动一下滚动条,比如点一下滚动条往下移动一下这种、[/quote] 一样的道理,让button 消息处理函数和滚动条的消息处理函数一样就行了[/quote]大佬看一下我八楼发的东西能不能实现呢。我用pView调用onvscroll没法调用受保护,还有其他的函数可以移动滚动条的滑块吗?[/quote] onvscroll是消息处理函数,可以在任何地方自己添加
赵4老师 2016-12-21
  • 打赏
  • 举报
回复
我以前说过几回“无视本ID的回帖,你将浪费一大截生命!”来着?
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
引用 11 楼 pcradio 的回复:
如果滚动条无需你自己指定信息SCROLLINFO你只需要调用CWnd::SetScrollPos(int nPos)就能控制滚动条了,nPos=0就是最顶端, nPos填最大值或者一个很大的值如nPos=9999就会到最底端,上述方法使用与如CScrollView之类已经出现了滚动条的情况,无需你手动维护滚动条信息的 如果纯粹就是一个CWnd或者CView,这种情况需要你自己指定滚动信息,也就是要调用SetScrollInfo(),当滚动信息指定以后,滚动条的长度等等就显示对了,之后你再调用SetScrollPos 具体情况需要你自己调试,还是稍微有点麻烦
嗯 不过用sendmessage直接可以实现我的效果了
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
SendMessage?
试了好多方法突然想起你的方法。一用,shit....太tm好用了!
CMainFrame *pFrame1= (CMainFrame*)AfxGetMainWnd();				//点击否之后的移动滚动条处理	  
 	CView *pView=pFrame1->GetActiveView();
	::SendMessage(pView->m_hWnd,WM_VSCROLL,SB_THUMBPOSITION,1);
阿源是少年 2016-12-21
  • 打赏
  • 举报
回复
如果滚动条无需你自己指定信息SCROLLINFO你只需要调用CWnd::SetScrollPos(int nPos)就能控制滚动条了,nPos=0就是最顶端, nPos填最大值或者一个很大的值如nPos=9999就会到最底端,上述方法使用与如CScrollView之类已经出现了滚动条的情况,无需你手动维护滚动条信息的 如果纯粹就是一个CWnd或者CView,这种情况需要你自己指定滚动信息,也就是要调用SetScrollInfo(),当滚动信息指定以后,滚动条的长度等等就显示对了,之后你再调用SetScrollPos 具体情况需要你自己调试,还是稍微有点麻烦
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
引用 9 楼 lx624909677 的回复:
[quote=引用 4 楼 PepperEggFriedRice 的回复:] [quote=引用 1 楼 kahauez_ 的回复:] 只是需要滚动条滑块移动?SetScrollInfo
稳了
引用 2 楼 lx624909677 的回复:
滚动条的点击事件里,会判断你点击的类型,根据类型去重新设置滚动条的位置就可以了
我的意思是假如 加一个button,点一下button就动一下滚动条,比如点一下滚动条往下移动一下这种、[/quote] 一样的道理,让button 消息处理函数和滚动条的消息处理函数一样就行了[/quote]大佬看一下我八楼发的东西能不能实现呢。我用pView调用onvscroll没法调用受保护,还有其他的函数可以移动滚动条的滑块吗?
lx624909677 2016-12-21
  • 打赏
  • 举报
回复
引用 4 楼 PepperEggFriedRice 的回复:
[quote=引用 1 楼 kahauez_ 的回复:] 只是需要滚动条滑块移动?SetScrollInfo
稳了
引用 2 楼 lx624909677 的回复:
滚动条的点击事件里,会判断你点击的类型,根据类型去重新设置滚动条的位置就可以了
我的意思是假如 加一个button,点一下button就动一下滚动条,比如点一下滚动条往下移动一下这种、[/quote] 一样的道理,让button 消息处理函数和滚动条的消息处理函数一样就行了
PepperEggFriedRice 2016-12-21
  • 打赏
  • 举报
回复
	CMainFrame *pFrame1= (CMainFrame*)AfxGetMainWnd();					  
CView *pView=pFrame1->GetActiveView();
pView->SetScrollInfo(???)

我现在想用view指针怎么操作滚动条 求解答
kahauez_ 2016-12-20
  • 打赏
  • 举报
回复
只是需要滚动条滑块移动?SetScrollInfo

15,980

社区成员

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

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