MFC基于对话框的控件 滚动条,该如何解决

MFC基于对话框的控件 滚动条
大侠们 我最近在做一个学分绩点计算器 是基于MFC基本对话框的 由于科目太多 控件太多 导致运行是全屏无法完全显示所有的科目 于是我想添加滚动条 请问如何设置滚动条以及代码?谢啦 或者还有什么更好的方法可以看到页面的底端呢?即我能看到所有的 不能更改控件的位置

------解决方案--------------------
C/C++ code
void CTestScrollDlg::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));   

      scrollinfo.nPos = scrollinfo.nMax;   

      SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      break;   

      case SB_TOP:   

      ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin));   

      scrollinfo.nPos = scrollinfo.nMin;   

      SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      break;   

      case SB_LINEUP:   

      scrollinfo.nPos -= 5;   

      if (scrollinfo.nPos<scrollinfo.nMin)
  
      {   

      scrollinfo.nPos = scrollinfo.nMin;   

      break;
  
      }   

      SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      ScrollWindow(0,5);   

      break;   

      case SB_LINEDOWN:
  
      scrollinfo.nPos += 5;   

      if (scrollinfo.nPos>scrollinfo.nMax)   

      {   

      scrollinfo.nPos = scrollinfo.nMax;   

      break;   

      }   

      SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      ScrollWindow(0,-5);   

      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,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,-5);   

      break;   

      case SB_ENDSCROLL:   

      // MessageBox("SB_ENDSCROLL");   

      break;   

      case SB_THUMBPOSITION:   

      // ScrollWindow(0,(scrollinfo.nPos-nPos));   

      // scrollinfo.nPos = nPos;   

      // SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      break;   

      case SB_THUMBTRACK:   

      ScrollWindow(0,(scrollinfo.nPos-nPos));   

      scrollinfo.nPos = nPos;   

      SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);   

      break;   

    }

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

void CTestScrollDlg::OnSize(UINT nType, int cx, int cy) 
{
    SCROLLINFO scrollinfo;
    
    SetScrollRange (SB_VERT, 0, 600, TRUE);//这个就是设置你的滚动条的范围
    
    GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
    scrollinfo.nPage=400;//页的大小,
    SetScrollInfo(SB_VERT,&scrollinfo,SIF_PAGE);

    CDialog::OnSize(nType, cx, cy);
    
    // TODO: Add your message handler code here
    
}