为对话框设置水平,垂直条及鼠标移动滚动

原创 2012年03月29日 12:06:05

为对话框设置水平,垂直条及鼠标移动滚动

1.       创建一个对话框,设置属性如下:

2.       添加对话框的WM_HSCROLL消息,在触发水平滚动消息时,根据触发消息(如单击左右滚动箭头、拖到滚动块、单击滚动区域等)不同,设置相应的滚动位置。

 

void CImagePanel::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

       int nCurpos,nMin,nMax,nThumbWidth;    

       SCROLLINFO siInfo;                                                     //定义滚动条信息

       GetScrollInfo(SB_HORZ,&siInfo);                                  //获取滚动条信息

       nCurpos = siInfo.nPos;                                            //获取当前位置

       nMin = siInfo.nMin;                                                       //获取最小值

       nMax = siInfo.nMax;                                                      //获取最大滚动位置

       nThumbWidth = siInfo.nPage;                                         //获取滚动快大小

       switch (nSBCode)

       {

       break;

       case SB_THUMBTRACK: //拖动滚动块

              ScrollWindow(-(nPos-nCurpos),0);                    //滚动窗口

              SetScrollPos(SB_HORZ,nPos);                                 //设置水平滚动条的滚动位置

       break;

       case SB_LINELEFT : //单击左箭头

              SetScrollPos(SB_HORZ,nCurpos-1);                  //设置水平滚动条的滚动位置

              if (nCurpos != 0)

                     ScrollWindow(1,0);                                          //向左滚动一个位置

       break;

       case SB_LINERIGHT: //单击右箭头

              SetScrollPos(SB_HORZ,nCurpos+1);                 //设置水平滚动条的滚动位置

              if (nCurpos+nThumbWidth < nMax)

                     ScrollWindow(-1,0);                                         //向右滚动一个位置

       break;

       case SB_PAGELEFT: //在滚动块的左方空白滚动区域单击,增量为6

              SetScrollPos(SB_HORZ,nCurpos-6);

              if (nCurpos+nThumbWidth >0)

                     ScrollWindow(6,0);                                          //向左滚动6个单位

       break;

       case SB_PAGERIGHT: //在滚动块的右方空白滚动区域单击,增量为6

              SetScrollPos(SB_HORZ,nCurpos+6);                 //设置水平滚动条的滚动位置

              if (nCurpos+nThumbWidth <nMax)

                     ScrollWindow(-6,0);                                         //向右滚动6个单位

       break;

       case SB_LEFT:                                                              //滚动到最左边

              SetScrollPos(SB_HORZ,0);                               //设置滚动位置为0

              ScrollWindow(nCurpos,0);                                //设置窗口滚动位置

       break;

       }    

       CDialog::OnHScroll(nSBCode, nPos, pScrollBar);    

 

}

3.       添加对话框的WM_VSCROLL消息

void CImagePanel::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

       int nCurpos,nMin,nMax,nThumbWidth;

       SCROLLINFO siInfo;

       GetScrollInfo(SB_VERT,&siInfo);

       nCurpos = siInfo.nPos;

       nMin = siInfo.nMin;

       nMax = siInfo.nMax;

       nThumbWidth = siInfo.nPage;

       switch (nSBCode)

       {

       case SB_THUMBTRACK:

              nCurpos = GetScrollPos(SB_VERT);

              ScrollWindow(0,-(nPos-nCurpos));

              SetScrollPos(SB_VERT,nPos);    

       break;

 

       case SB_LINELEFT:

              nCurpos = GetScrollPos(SB_VERT);

              SetScrollPos(SB_VERT,nCurpos-1);

              if (nCurpos !=0)

                     ScrollWindow(0,1);

       break;

       case SB_LINERIGHT:

              nCurpos = GetScrollPos(SB_VERT);

              SetScrollPos(SB_VERT,nCurpos+1);

              if (nCurpos+nThumbWidth < nMax)

                     ScrollWindow(0,-1);     

       break;

       case SB_PAGELEFT: //在滚动块的上方空白滚动区域单击,增量为6

              SetScrollPos(SB_VERT,nCurpos-6);

              if (nCurpos+nThumbWidth >0)

                     ScrollWindow(0,6);

       break;

       case SB_PAGERIGHT: //在滚动块的下方空白滚动区域单击,增量为6

              SetScrollPos(SB_VERT,nCurpos+6);

              if (nCurpos+nThumbWidth < nMax)

                     ScrollWindow(0,-6);

       break;

       case SB_LEFT:     

              SetScrollPos(SB_VERT,0);

              ScrollWindow(0,nCurpos);

       break;

       }    

       CDialog::OnVScroll(nSBCode, nPos, pScrollBar);

}

4.       添加对话框的WM_MOUSEWHEEL消息

//数量鼠标滚动时的时间,适当地滚动窗口

BOOL CImagePanel::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)

{

       SCROLLINFO siInfo;                                       //定义滚动信息对象

       GetScrollInfo(SB_VERT,&siInfo);                     //获取滚动信息

       int nMin,nMax,nThumbWidth;                          

       nMin = siInfo.nMin;                                         //获取滚动最小值

       nMax = siInfo.nMax;

       nThumbWidth = siInfo.nPage;             //获取滚动块大小

       int nPos = GetScrollPos(SB_VERT);       //获取垂直滚动条的当前位置

       if (zDelta > 0)                                           //向上滚动

       {

              if (nPos == 0)

                     return TRUE;

              SetScrollPos(SB_VERT,nPos-6);        //设置滚动条位置

              ScrollWindow(0,6);                   //向上滚动窗口

       }

       else

       {

              if ((nPos+nThumbWidth >= nMax))

                     return TRUE;

              SetScrollPos(SB_VERT,nPos+6);

              ScrollWindow(0,-6);

       }

       return TRUE;//CDialog::OnMouseWheel(nFlags, zDelta, pt);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

对话框水平垂直滚动条

  • 2010-12-22 13:17
  • 36KB
  • 下载

HTML基础 form-textarea创建带有水平垂直滚动条的多行文本框并设置其大小

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ———————————————————————————————————————————————...

unity。。。完美简单解决靠鼠标在屏幕上的移动来控制相机水平,垂直旋转的c#脚本

花了一天时间琢磨这个,看网上的解决办法。。没几个彻底解决的。。。都是说什么方法复杂。。让我们自己去看视频教程。。!!!! 感觉跟没有回答一样。。。。自己也是很多方法都试了。。不是有这种问题,就是那种问...

设置水平、垂直滚动条自动滚动

在做一个小项目时遇到需要随着手势翻页的同时,上面导航栏也需要随着而滑动,这样就需要在手势事件中调用滚动条的水平滑动事件。 总体效果图如下: 滚动部分布局XML片段: <Horiz...

Android中利用GridView实现水平和垂直均有滚动条的表格效果

文章转载自:http://blog.csdn.net/abnerchai/article/details/7540820,谢谢作者 研究了一下Android的GridView,但是默认的GridVi...

AS3 PictrueBox控件 ---- 使用水平、垂直滚动条的图片框

图片框类: package { import controlsEvents.ScrollerEvent; import flash.display.Bitmap; import fla...

各浏览器对于获取文档水平及垂直方向滚动条位置(scrollLeft、scrollTop)时的参考元素存在差异

 问题描述 针对获取页面的垂直滚动条的位置,IE Firefox Opera 标准模式下使用 document.documentElement.scrollLeft 获取页面的水平滚动条位置,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)