ScrollBar使用-很全
在对话框中添加一个垂直滚动条控件,关联一个变量CScrollBar m_vScroll,在头文件定义CRect rt_mvScroll保存滚动条控件的位置,
定义一个int nVscroll,保存滑块的位置在OnInitDialog()里面添加
- 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);
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消息
- 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);
- }
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消息
- BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- //向下滚
- if (zDelta == -120)
- {
- nVscroll += 10;
- OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
- }
- else if (zDelta == 120)
- {
- nVscroll -= 10;
- OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
- }
- m_vScroll.MoveWindow(rt_mvScroll, TRUE);
- return CDialog::OnMouseWheel(nFlags, zDelta, pt);
- }
本文来自:http://blog.csdn.net/acdnjjjdjkdckjj/article/details/6024008
ScrollBar使用-很全相关推荐
- 一个很全的中断资料网站
一个很全的中断资料网站 http://lrs.fmi.uni-passau.de/support/doc/interrupt-57/INT.HTM posted on 2005-02-15 16:24 ...
- awesome-go:很全的go语言资源合集
awesome-go:一个很全的go语言框架,库,软件合集 前面发过关于awsone-python, awsone django, flask.最近在学习golang,所以找到awsone-go 非常 ...
- 003很好的网络博客(TCP/IP)-很全
http://www.cnblogs.com/obama/p/3292335.html 很全的计算机网络方面的资料.
- common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...
common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法<很全的监听文件例子>) 转载于:https://www.cnblogs.com/rocky ...
- python很全的爬虫入门教程
python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...
- 史上很全的注册表修改大全
史上很全的注册表修改大全 请使用 Ctrl+F 键来查找你想要的 不想别人使用你电脑的某些功能,或是在网吧想使用某些功能,或是让自己的电脑速度更快 怎么办 如果你有点注册表的知识就OK拉 没有多深奥 ...
- 中文转换为拼音工具类(很全)
中文转换为拼音工具类(很全) 1.所需的jar包 2.工具类(可以直接拿去用) 1.所需的jar包 <!--获取汉字的拼音--><dependency><groupId& ...
- html中只显示农历的完整代码,很全的显示阴历(农历)日期的js代码
很全的显示阴历(农历)日期的js代码 发布于 2016-12-17 14:15:20 | 248 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客户端脚本语言Javascript ...
- 很全面的5G技术基础知识PPT(三)
本文是很全面的5G技术基础知识PPT(二)的接续 参考链接:https://blog.csdn.net/weixin_41486034/article/details/106302233 40 5G网 ...
最新文章
- 双向口和准双向口操作的不同!
- [RQNOJ313]波浪数
- Cisco 交換機命名規則
- java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
- Eclipse插件:Eclipse Color Theme
- JSP上传文件失败的问题 未解决
- Oracle用 odp.net 时出现 Oracle.DataAccess.Client.OracleConnection的类型初始值设定项引发异常 问题的解决...
- mysql排序行号_mysql 取得行号后再排序
- 数据竞赛入门-金融风控(贷款违约预测)四、建模与调参
- CentOS 谢幕,Anolis OS 带来无限可能的未来
- wpf程序运行时停止工作,事件管理器报错lci_proxyumd32.dll
- iReal Pro 2020 for Mac(模拟乐队音乐陪练工具)
- Android LitePal
- Atitit.log日志技术的最佳实践attilax总结
- php连接sap笔记
- matlab是一门什么语言,为什么有些程序员认为MATLAB不是一门语言?
- Nginx服务(6)——实现Gzip网页压缩和图片压缩
- 设置个性桌面计算机教案,第十三课《个性化的桌面设置》教学设计
- 《阿凡达》超越《泰坦尼克号》冠影史(图)
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例...
热门文章
- 《APP开发》APP规范实例-详细的UI设计方法
- 飞机飞行与碰撞问题matlab,建模案例—飞行管理问题.ppt
- Linux下 IPMItool配置方法(MSI主板)
- spring boot 2.5.5 reference chapter 5 生词
- Python爬取网易云音乐热歌排行榜Top200音乐
- 手写数字识别Mnist数据集和读取代码分享
- AI ISP资料整理
- python全角数字_python 半角全角的相互转换
- 安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
- 安装分区助手,总是显示“分区助手已安装到你的电脑中,怎么办