读书人

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

发布时间: 2012-04-07 17:31:51 作者: rapoo

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    } 

读书人网 >VC/MFC

热点推荐