MFC基于对话框的控件 滚动条

lttcgsl521 2011-12-19 11:46:24
大侠们 我最近在做一个学分绩点计算器 是基于MFC基本对话框的 由于科目太多 控件太多 导致运行是全屏无法完全显示所有的科目 于是我想添加滚动条 请问如何设置滚动条以及代码?谢啦 或者还有什么更好的方法可以看到页面的底端呢?即我能看到所有的 不能更改控件的位置
...全文
103 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-01-17
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
ph_小飞 2011-12-20
  • 打赏
  • 举报
回复
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

}
这样试下

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧