MFC基于对话框的控件 滚动条,该如何解决
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 }