MFC滚动条

SCROLLINFO sinfo;

sinfo.cbSize = sizeof(sinfo);

sinfo.fMask = SIF_ALL;

sinfo.nPage = 10;// nPage = -1; 开始没有那么多内容不显示滚动条

sinfo.nMax = 100;

sinfo.nMin = 0;

sinfo.nTrackPos = 0;

sinfo.nPos = 50;

SetScrollInfo(SB_VERT, &sinfo);

SetScrollInfo(SB_HORZ, &sinfo);


voidCScrollTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

   SCROLLINFOhinfo;

   GetScrollInfo(SB_HORZ,&hinfo);

   switch(nSBCode)

   {

   case SB_PAGEUP:

   case SB_LINEUP:

       if(hinfo.nPos> hinfo.nMin)

           hinfo.nPos-= 5;

       break;

   case SB_PAGEDOWN:

   case SB_LINEDOWN:

       if(hinfo.nPos< hinfo.nMax)

          hinfo.nPos+= 5;

       break;

   case SB_THUMBTRACK:

   case SB_THUMBPOSITION:

       hinfo.nPos+= hinfo.nTrackPos - hinfo.nPos;

       break;

   }

   SetScrollInfo(SB_HORZ,&hinfo);

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

}


voidCScrollTestDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

   SCROLLINFOvinfo;

   GetScrollInfo(SB_VERT,&vinfo);

   switch(nSBCode)

   {

   case SB_PAGEUP:

   case SB_LINEUP:

       if(vinfo.nPos > vinfo.nMin)

           vinfo.nPos-= 5;

       break;

   case SB_PAGEDOWN:

   case SB_LINEDOWN:

       if(vinfo.nPos < vinfo.nMax)

           vinfo.nPos+= 5;

       break;

   case SB_THUMBTRACK:

   case SB_THUMBPOSITION:

       vinfo.nPos+= vinfo.nTrackPos - vinfo.nPos;

       break;

   }

   SetScrollInfo(SB_VERT,&vinfo);

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

}

本文出自 “BaggerSky” 博客,谢绝转载!

你可能感兴趣的:(mfc,滚动条)