MFC滚动条设置的小研究,解决R6010错误和无法显示图片全部等错误
来源:互联网 发布:c语言与或运算 编辑:程序博客网 时间:2024/06/06 11:43
关于滚动条设置的研究
滚动条的设置看似简单其实还是很需要琢磨的,首先需要了解到滚动条的页尺寸nPage(为什么用SCROLLINFO结构来实现我的上篇博客已经说明白了)的含义,它就是指你的PIC空间的大小,这里假设空间大小为100*200,你应该设置垂直滚动条的nPage=200;
然后需要明白滚动范围,这点不要异想天开。当然说到范围脑子一闪而过的肯定是图片的大小,假设图片的大小为1000*2000,那垂直滚动条的滚动范围是否就是0~2000呢?错!
别忘记当滚动条位置nPos为0时,他显示了图片0~200的大小,所以显示到1800~2000的部分nPos只需设为1800,即滚动范围的最大值为图片尺寸-控件尺寸,需要注意的是图片尺寸很少是规规矩矩的整数,所以难免会有些小问题,所以这里最好设置滚动范围的最大值为图片尺寸-控件尺寸-1,否则会产生R6010的错误
但是请不要忘记我们设置了滚动条的大小为一倍的图片控件大小
所以上面的方法在SetScrollRange()、SetScrollPos()、GetScrollRange()、GetScrollPos()是没问题但是用了SetScrollInfo()、GetScrollInfo(就会出现问题,这就是因为这时候滚动条的大小为一倍的图片控件大小,所以滚动条在滚动范围的最大值=图片尺寸-控件尺寸-滚动条尺寸=,=图片尺寸-2*控件尺寸,所以为了能显示图片的全部必须将滚动范围设为图片尺寸,这样问题就解决了,但是对于拖动滚动条使这个样子,对于点击向下向上按键可不能这样,因为它主要是受nPos限制的,所以,nPos还是应该小于图片尺寸-控件尺寸
示意图
代码如下
初始化
ZeroMemory(&ver,sizeof(ver));//0填充的地址和大小
ver.cbSize=sizeof(ver);
ver.fMask=SIF_RANGE|SIF_POS|SIF_PAGE;
ver.nMax=m_maxv-1;
ver.nMin=0;
ver.nPage=Sheight;
ver.nPos=0;
m_Scrv.SetScrollInfo(&ver);
响应函数
SCROLLINFOver;
caseSB_THUMBTRACK://拖动滑块
ZeroMemory(&ver,sizeof(ver));
ver.cbSize=sizeof(ver);
ver.fMask=SIF_TRACKPOS;
m_Scrh.GetScrollInfo(&ver);
m_pointx=ver.nTrackPos;
ZeroMemory(&ver,sizeof(ver));
ver.cbSize=sizeof(ver);
ver.fMask=SIF_POS;
ver.nPos=m_pointx;
m_Scrh.SetScrollInfo(&ver);
PicShow();
caseSB_LINEDOWN://单击滚动条向下的箭头
ZeroMemory(&ver,sizeof(ver));
ver.cbSize=sizeof(ver);
m_Scrh.GetScrollInfo(&ver,SIF_POS);
iNowPos=ver.nPos;
iNowPos=iNowPos+10;
if(iNowPos>m_maxh-Swidth)
iNowPos=m_maxh-Swidth;
m_Scrh.SetScrollPos(iNowPos);
m_pointx=iNowPos;
// 重新加载图片
PicShow();
break;
- MFC滚动条设置的小研究,解决R6010错误和无法显示图片全部等错误
- 下拉列表和滚动条等无法显示的问题
- ubuntu下apache2的设置, 解决css,图片等无法显示的问题
- CListViewCtrl和CListCtrl设置滚动条的隐藏和显示
- ListView等滚动条的设置详解
- iFrame 滚动条等属性的设置
- MFC 滚动显示图片
- MFC用CButton实现带滚动条的图片显示控件,无须用CScrollBar辅助实现。
- [VC]IE无法显示格式错误的图片
- UICollectionView-设置弹簧效果是否显示滚动条等向
- 设置不显示ListView的滚动条
- 一次由于设置错误,导致无法进入gnome的解决。
- 图片格式错误导致IE无法显示图片
- 解决DataGridView在多线程中无法显示滚动条的问题
- 解决DataGridView在多线程中无法显示滚动条的问题
- 解决web标准中IE无法设置滚动条颜色的问题
- JSP的错误页面设置和页面跳转等
- JSP的错误页面设置和页面跳转等
- 校验xml的合法性
- CentOS配置163的yum源
- UITextView添加占位字符
- Android基础入门教程——10.3 AudioManager(音频管理器)
- Python-安装模块
- MFC滚动条设置的小研究,解决R6010错误和无法显示图片全部等错误
- 前端 json字符串转换成json对象
- 资源国际化
- JS事件监听器
- checkbox android:button="@null" 默认checkbox icon仍占位问题
- SSH:Struts1框架(MVC讲解)
- Android中两种设置全屏的方法!!!
- Linux下使用scp&sftp传输文件
- 关于Random.Range 范围的学习