在对话框中添加一个垂直滚动条控件,关联一个变量CScrollBar m_vScroll,在头文件定义CRect rt_mvScroll保存滚动条控件的位置,

定义一个int nVscroll,保存滑块的位置在OnInitDialog()里面添加

[c-sharp:firstline[1]] view plain copy print ?
  1. CRect rect;
  2. GetClientRect(rect);
  3. SCROLLINFO si;
  4. si.cbSize = sizeof(SCROLLINFO);;
  5. si.nMin = 0;
  6. si.nMax = 100;
  7. si.nPage = 5 ;
  8. si.fMask = SIF_POS|SIF_RANGE|SIF_PAGE;
  9. m_vScroll.SetScrollInfo(&si, TRUE);
  10. m_vScroll.GetWindowRect(rt_mvScroll);//滚动条所在的位置
  11. ScreenToClient(rt_mvScroll);

CRect rect; GetClientRect(rect); SCROLLINFO si; si.cbSize = sizeof(SCROLLINFO);; si.nMin = 0; si.nMax = 100; si.nPage = 5 ; si.fMask = SIF_POS|SIF_RANGE|SIF_PAGE; m_vScroll.SetScrollInfo(&si, TRUE); m_vScroll.GetWindowRect(rt_mvScroll);//滚动条所在的位置 ScreenToClient(rt_mvScroll);

响应对话框中WM_VScorll消息

[cpp:firstline[1]] view plain copy print ?
  1. void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  2. {
  3. // TODO: 在此添加消息处理程序代码和/或调用默认值
  4. SCROLLINFO si;
  5. si.cbSize = sizeof(si);
  6. m_vScroll.GetScrollInfo(&si, SIF_POS|SIF_PAGE|SIF_RANGE);
  7. nVscroll = si.nPos;
  8. switch(nSBCode)
  9. {
  10. case SB_LINEDOWN:  nVscroll += 10;
  11. if (nVscroll > (si.nMax - si.nMin - si.nPage ))
  12. {
  13. nVscroll = si.nMax - si.nMin - si.nPage;
  14. }
  15. break;
  16. case SB_LINEUP:    nVscroll -= 10;
  17. if (nVscroll < si.nMin)
  18. {
  19. nVscroll = 0;
  20. }
  21. break;
  22. case SB_PAGEDOWN:  nVscroll += si.nPage;
  23. if (nVscroll > (si.nMax - si.nMin - si.nPage))
  24. {
  25. nVscroll = si.nMax - si.nMin - si.nPage;
  26. }
  27. break;
  28. case SB_PAGEUP:  nVscroll -= si.nPage;
  29. if (nVscroll < si.nMin)
  30. {
  31. nVscroll = 0;
  32. }
  33. break;
  34. case  SB_THUMBTRACK: nVscroll = nPos; break;
  35. }
  36. ScrollWindow(0, -(nVscroll -si.nPos) , NULL ,NULL);
  37. m_vScroll.MoveWindow(rt_mvScroll, TRUE);
  38. si.fMask = SIF_POS;
  39. si.nPos = nVscroll;
  40. m_vScroll.SetScrollInfo(&si, TRUE);
  41. CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
  42. }

void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO si; si.cbSize = sizeof(si); m_vScroll.GetScrollInfo(&si, SIF_POS|SIF_PAGE|SIF_RANGE); nVscroll = si.nPos; switch(nSBCode) { case SB_LINEDOWN: nVscroll += 10; if (nVscroll > (si.nMax - si.nMin - si.nPage )) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_LINEUP: nVscroll -= 10; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_PAGEDOWN: nVscroll += si.nPage; if (nVscroll > (si.nMax - si.nMin - si.nPage)) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_PAGEUP: nVscroll -= si.nPage; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_THUMBTRACK: nVscroll = nPos; break; } ScrollWindow(0, -(nVscroll -si.nPos) , NULL ,NULL); m_vScroll.MoveWindow(rt_mvScroll, TRUE); si.fMask = SIF_POS; si.nPos = nVscroll; m_vScroll.SetScrollInfo(&si, TRUE); CDialog::OnVScroll(nSBCode, nPos, pScrollBar); }

响应WM_MOUSEWHELL消息

[cpp:firstline[1]] view plain copy print ?
  1. BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
  2. {
  3. // TODO: 在此添加消息处理程序代码和/或调用默认值
  4. //向下滚
  5. if (zDelta == -120)
  6. {
  7. nVscroll += 10;
  8. OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
  9. }
  10. else if (zDelta == 120)
  11. {
  12. nVscroll -= 10;
  13. OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
  14. }
  15. m_vScroll.MoveWindow(rt_mvScroll, TRUE);
  16. return CDialog::OnMouseWheel(nFlags, zDelta, pt);
  17. }

本文来自:http://blog.csdn.net/acdnjjjdjkdckjj/article/details/6024008

ScrollBar使用-很全相关推荐

  1. 一个很全的中断资料网站

    一个很全的中断资料网站 http://lrs.fmi.uni-passau.de/support/doc/interrupt-57/INT.HTM posted on 2005-02-15 16:24 ...

  2. awesome-go:很全的go语言资源合集

    awesome-go:一个很全的go语言框架,库,软件合集 前面发过关于awsone-python, awsone django, flask.最近在学习golang,所以找到awsone-go 非常 ...

  3. 003很好的网络博客(TCP/IP)-很全

    http://www.cnblogs.com/obama/p/3292335.html 很全的计算机网络方面的资料.

  4. common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...

    common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法<很全的监听文件例子>) 转载于:https://www.cnblogs.com/rocky ...

  5. python很全的爬虫入门教程

    python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...

  6. 史上很全的注册表修改大全

    史上很全的注册表修改大全 请使用 Ctrl+F 键来查找你想要的 不想别人使用你电脑的某些功能,或是在网吧想使用某些功能,或是让自己的电脑速度更快 怎么办 如果你有点注册表的知识就OK拉 没有多深奥 ...

  7. 中文转换为拼音工具类(很全)

    中文转换为拼音工具类(很全) 1.所需的jar包 2.工具类(可以直接拿去用) 1.所需的jar包 <!--获取汉字的拼音--><dependency><groupId& ...

  8. html中只显示农历的完整代码,很全的显示阴历(农历)日期的js代码

    很全的显示阴历(农历)日期的js代码 发布于 2016-12-17 14:15:20 | 248 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客户端脚本语言Javascript ...

  9. 很全面的5G技术基础知识PPT(三)

    本文是很全面的5G技术基础知识PPT(二)的接续 参考链接:https://blog.csdn.net/weixin_41486034/article/details/106302233 40 5G网 ...

最新文章

  1. 双向口和准双向口操作的不同!
  2. [RQNOJ313]波浪数
  3. Cisco 交換機命名規則
  4. java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
  5. Eclipse插件:Eclipse Color Theme
  6. JSP上传文件失败的问题 未解决
  7. Oracle用 odp.net 时出现 Oracle.DataAccess.Client.OracleConnection的类型初始值设定项引发异常 问题的解决...
  8. mysql排序行号_mysql 取得行号后再排序
  9. 数据竞赛入门-金融风控(贷款违约预测)四、建模与调参
  10. CentOS 谢幕,Anolis OS 带来无限可能的未来
  11. wpf程序运行时停止工作,事件管理器报错lci_proxyumd32.dll
  12. iReal Pro 2020 for Mac(模拟乐队音乐陪练工具)
  13. Android LitePal
  14. Atitit.log日志技术的最佳实践attilax总结
  15. php连接sap笔记
  16. matlab是一门什么语言,为什么有些程序员认为MATLAB不是一门语言?
  17. Nginx服务(6)——实现Gzip网页压缩和图片压缩
  18. 设置个性桌面计算机教案,第十三课《个性化的桌面设置》教学设计
  19. 《阿凡达》超越《泰坦尼克号》冠影史(图)
  20. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例...

热门文章

  1. 《APP开发》APP规范实例-详细的UI设计方法
  2. 飞机飞行与碰撞问题matlab,建模案例—飞行管理问题.ppt
  3. Linux下 IPMItool配置方法(MSI主板)
  4. spring boot 2.5.5 reference chapter 5 生词
  5. Python爬取网易云音乐热歌排行榜Top200音乐
  6. 手写数字识别Mnist数据集和读取代码分享
  7. AI ISP资料整理
  8. python全角数字_python 半角全角的相互转换
  9. 安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
  10. 安装分区助手,总是显示“分区助手已安装到你的电脑中,怎么办