摘要:本文主要向大家介绍了VC编程之VC对话框实现垂直滚动效果,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了VC编程之VC对话框实现垂直滚动效果,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
1.修改滚动的范围,设置nMax的值,此处设置为3倍窗口高度。
CRect rc;
GetClientRect(&rc);
SCROLLINFO si = {sizeof(SCROLLINFO)};
si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE;
si.nPos = si.nMin = 1;
si.nMax = rc.Height() * 3;
si.nPage = rc.Height();
SetScrollInfo(SB_VERT, &si, FALSE);
2.对话框添加WM_VSCROLL消息响应函数.
void CPrintDlgAppDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SetVScrool(SB_VERT, nSBCode);
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
3.代码中添加以下3个辅助函数
void CPrintDlgAppDlg::ScrollClient(int nBar, int nPos)
{
static int s_prevx = 1;
static int s_prevy = 1;
int cx = 0;
int cy = 0;
int& delta = cy;
int& prev = s_prevy;
delta = prev - nPos;
prev = nPos;
if(cx || cy)
{
ScrollWindow(cx, cy, NULL, NULL);
}
}
int CPrintDlgAppDlg::GetScrollPos(int nBar, UINT nSBCode)
{
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS;
GetScrollInfo(nBar, &si);
const int minPos = si.nMin;
const int maxPos = si.nMax - (si.nPage - 1);
int result = -1;
switch(nSBCode)
{
case SB_LINEUP /*SB_LINELEFT*/:
result = max(si.nPos - 1, minPos);
break;
case SB_LINEDOWN /*SB_LINERIGHT*/:
result = min(si.nPos + 1, maxPos);
break;
case SB_PAGEUP /*SB_PAGELEFT*/:
result = max(si.nPos - (int)si.nPage, minPos);
break;
case SB_PAGEDOWN /*SB_PAGERIGHT*/:
result = min(si.nPos + (int)si.nPage, maxPos);
break;
case SB_THUMBPOSITION:
// do nothing
break;
case SB_THUMBTRACK:
result = si.nTrackPos;
break;
case SB_TOP /*SB_LEFT*/:
result = minPos;
break;
case SB_BOTTOM /*SB_RIGHT*/:
result = maxPos;
break;
case SB_ENDSCROLL:
// do nothing
break;
}
return result;
}
void CPrintDlgAppDlg::SetVScrool(int nBar, UINT nSBCode)
{
const int scrollPos = GetScrollPos(nBar, nSBCode);
if(scrollPos == -1)
return;
SetScrollPos(nBar, scrollPos, TRUE);
ScrollClient(nBar, scrollPos);
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号