VC 对话框添加滚动条

 
我给tab 控件三个子对话框都添加了WS_VSCROLL和WS_HSCROLL消息响应函数,但是他们都不起作用,这怎么解决?望高手帮指点解决一下,先谢了啊
void CSystemdlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)  
{  
// TODO: Add your message handler code here and/or call default  

SCROLLINFO scrollinfo;  
GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
 switch (nSBCode)  
  {  
case SB_BOTTOM:  
  ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10);  
  scrollinfo.nPos = scrollinfo.nMax;  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  break;  
case SB_TOP:  
  ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10);  
  scrollinfo.nPos = scrollinfo.nMin;  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  break;  
case SB_LINEUP:  
  scrollinfo.nPos -= 1;  
  if (scrollinfo.nPos)
  {  
  scrollinfo.nPos = scrollinfo.nMin;  
  break;  
  }  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  ScrollWindow(0,10);  
  break;  
case SB_LINEDOWN:  
  scrollinfo.nPos += 1;  
  if (scrollinfo.nPos>scrollinfo.nMax)  
  {  
  scrollinfo.nPos = scrollinfo.nMax;  
  break;  
  }  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  ScrollWindow(0,-10);  
  break;  
case SB_PAGEUP:  
  scrollinfo.nPos -= 5;  
  if (scrollinfo.nPos)
  {  
  scrollinfo.nPos = scrollinfo.nMin;  
  break;  
  }  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  ScrollWindow(0,10*5);  
  break;  
case SB_PAGEDOWN:  
  scrollinfo.nPos += 5;  
  if (scrollinfo.nPos>scrollinfo.nMax)  
  {  
  scrollinfo.nPos = scrollinfo.nMax;  
  break;  
  }  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  ScrollWindow(0,-10*5);  
  break;  
case SB_ENDSCROLL:  
  / / MessageBox("SB_ENDSCROLL");  
  break;  
case SB_THUMBPOSITION:  
  // ScrollWindow(0,(scrollinfo.nPos-nPos)*10);  
  // scrollinfo.nPos = nPos;  
  // SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  break;  
case SB_THUMBTRACK:  
  ScrollWindow(0,(scrollinfo.nPos-nPos)*10);  
  scrollinfo.nPos = nPos;  
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
  break;  
  }  

CDialog::OnVScroll(nSBCode, nPos, pScrollBar);  
  }  

void CSystemdlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)  
 {  
// TODO: Add your message handler code here and/or call default  

SCROLLINFO scrollinfo;  
GetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
switch (nSBCode)  
{  
case SB_LEFT:  
  ScrollWindow((scrollinfo.nPos-scrollinfo.nMin)*10,0);  
  scrollinfo.nPos = scrollinfo.nMin;  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
break;  
case SB_RIGHT:  
ScrollWindow((scrollinfo.nPos-scrollinfo.nMax)*10,0);  
scrollinfo.nPos = scrollinfo.nMax;  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
break;  
case SB_LINELEFT:  
scrollinfo.nPos -= 1;  
if (scrollinfo.nPos{  
scrollinfo.nPos = scrollinfo.nMin;  
break;  
}  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
ScrollWindow(10,0);  
break;  
case SB_LINERIGHT:  
scrollinfo.nPos += 1;  
if (scrollinfo.nPos>scrollinfo.nMax)  
{  
scrollinfo.nPos = scrollinfo.nMax;  
break;  
}  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
ScrollWindow(-10,0);  
break;  
case SB_PAGELEFT:  
scrollinfo.nPos -= 5;  
if (scrollinfo.nPos{  
scrollinfo.nPos = scrollinfo.nMin;  
break;  
}  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
ScrollWindow(10*5,0);  
break;  
case SB_PAGERIGHT:  
scrollinfo.nPos += 5;  
if (scrollinfo.nPos>scrollinfo.nMax)  
{  
scrollinfo.nPos = scrollinfo.nMax;  
break;  
}  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
ScrollWindow(-10*5,0);  
break;  
case SB_THUMBPOSITION:  
break;  
case SB_THUMBTRACK:  
ScrollWindow((scrollinfo.nPos-nPos)*10,0);  
scrollinfo.nPos = nPos;  
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);  
break;  
case SB_ENDSCROLL:  
break;  
}  

CDialog::OnHScroll(nSBCode, nPos, pScrollBar); 
 
 
 
===========================================================================================================

水平和垂直中分别加入下列代码

void CSystemdlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default

SCROLLINFO scrollinfo;
GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
switch (nSBCode)
{
case SB_BOTTOM:
ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10);
scrollinfo.nPos = scrollinfo.nMax;
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
break;
case SB_TOP:
ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10);
scrollinfo.nPos = scrollinfo.nMin;
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
break;
case SB_LINEUP:
scrollinfo.nPos -= 1;
if (scrollinfo.nPos<scrollinfo.nMin)
{
scrollinfo.nPos = scrollinfo.nMin;
break;
}
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
ScrollWindow(0,10);
break;
case SB_LINEDOWN:
scrollinfo.nPos += 1;
if (scrollinfo.nPos>scrollinfo.nMax)
{
scrollinfo.nPos = scrollinfo.nMax;
break;
}
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
ScrollWindow(0,-10);
break;
case SB_PAGEUP:
scrollinfo.nPos -= 5;
if (scrollinfo.nPos<scrollinfo.nMin)
{
scrollinfo.nPos = scrollinfo.nMin;
break;
}
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
ScrollWindow(0,10*5);
break;
case SB_PAGEDOWN:
scrollinfo.nPos += 5;
if (scrollinfo.nPos>scrollinfo.nMax)
{
scrollinfo.nPos = scrollinfo.nMax;
break;
}
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
ScrollWindow(0,-10*5);
break;
case SB_ENDSCROLL:
// MessageBox("SB_ENDSCROLL");
break;
case SB_THUMBPOSITION:
// ScrollWindow(0,(scrollinfo.nPos-nPos)*10);
// scrollinfo.nPos = nPos;
// SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
break;
case SB_THUMBTRACK:
ScrollWindow(0,(scrollinfo.nPos-nPos)*10);
scrollinfo.nPos = nPos;
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
break;
}

CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CSystemdlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default

SCROLLINFO scrollinfo;
GetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
switch (nSBCode)
{
case SB_LEFT:
ScrollWindow((scrollinfo.nPos-scrollinfo.nMin)*10,0);
scrollinfo.nPos = scrollinfo.nMin;
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
break;
case SB_RIGHT:
ScrollWindow((scrollinfo.nPos-scrollinfo.nMax)*10,0);
scrollinfo.nPos = scrollinfo.nMax;
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
break;
case SB_LINELEFT:
scrollinfo.nPos -= 1;
if (scrollinfo.nPos<scrollinfo.nMin)
{
scrollinfo.nPos = scrollinfo.nMin;
break;
}
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
ScrollWindow(10,0);
break;
case SB_LINERIGHT:
scrollinfo.nPos += 1;
if (scrollinfo.nPos>scrollinfo.nMax)
{
scrollinfo.nPos = scrollinfo.nMax;
break;
}
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
ScrollWindow(-10,0);
break;
case SB_PAGELEFT:
scrollinfo.nPos -= 5;
if (scrollinfo.nPos<scrollinfo.nMin)
{
scrollinfo.nPos = scrollinfo.nMin;
break;
}
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
ScrollWindow(10*5,0);
break;
case SB_PAGERIGHT:
scrollinfo.nPos += 5;
if (scrollinfo.nPos>scrollinfo.nMax)
{
scrollinfo.nPos = scrollinfo.nMax;
break;
}
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
ScrollWindow(-10*5,0);
break;
case SB_THUMBPOSITION:
break;
case SB_THUMBTRACK:
ScrollWindow((scrollinfo.nPos-nPos)*10,0);
scrollinfo.nPos = nPos;
SetScrollInfo(SB_HORZ,&scrollinfo,SIF_ALL);
break;
case SB_ENDSCROLL:
break;
}

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值