对话框自带滚动条的使用

摘要:
vinfo.cbSize=sizeof(vinfo);vinfo.fMask=SIF_ALL;vinfo.nMax=600;&开关(nSBCode){caseSB_BOTTOM;caseSB_PAGEUP;caseSB-PAGEDOWN;scrollinfo.nMax;

 出处:http://wenku.baidu.com/view/549d4f6727d3240c8447efee.html

一,使用对话框窗口自带的滚动条,在属性页面中设置即可,如下

二,OnInitDialog()函数中,添加如下滚动条初始化语句

       SCROLLINFO vinfo;

       vinfo.cbSize =sizeof(vinfo);

       vinfo.fMask =SIF_ALL;

       vinfo.nPage =50;//滚动块自身的长短,通常有如下关系:其长度/滚动条长度(含两个箭头)=nPage/(nMax+2),

                  //另外nPage取值-1时,滚动条会不见了。

       vinfo.nMax =600;//滚动条所能滚动的最大值

       vinfo.nMin=0;//滚动条所能滚动的最小值

       vinfo.nTrackPos =0;

       SetScrollInfo(SB_VERT,&vinfo);//即使上述步骤一不做,使用此条语句也可以显示滚动条

三,添加相应的WM_VSCROLL函数

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

{

       // TODO: Add your message handler code here and/or call default

       SCROLLINFO scrollinfo;

       GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

switch (nSBCode)

{

case SB_BOTTOM: //滑块滚动到最底部

ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMax)*10); //滚动屏幕

scrollinfo.nPos = scrollinfo.nMax; //设定滑块新位置

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL); //更新滑块位置

break;

case SB_TOP: //滑块滚动到最顶部

ScrollWindow(0,(scrollinfo.nPos-scrollinfo.nMin)*10);

scrollinfo.nPos = scrollinfo.nMin;

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

break;

case SB_LINEUP: //单击上箭头

scrollinfo.nPos -= 1;

if (scrollinfo.nPos<scrollinfo.nMin)

{

scrollinfo.nPos = scrollinfo.nMin;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,10);

break;

case SB_LINEDOWN: //单击下箭头

scrollinfo.nPos += 1;

if (scrollinfo.nPos>scrollinfo.nMax)

{

scrollinfo.nPos = scrollinfo.nMax;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,-10);

break;

case SB_PAGEUP: //单击滑块上方空白区域

scrollinfo.nPos -= 5;

if (scrollinfo.nPos<scrollinfo.nMin)

{

scrollinfo.nPos = scrollinfo.nMin;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,10*5);

break;

case SB_PAGEDOWN: //单击滑块下方空白区域

scrollinfo.nPos += 5;

if (scrollinfo.nPos>scrollinfo.nMax)

{

scrollinfo.nPos = scrollinfo.nMax;

break;

}

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

ScrollWindow(0,-10*5);

break;

case SB_ENDSCROLL: //鼠标离开滑块,结束滑块拖动

// MessageBox("SB_ENDSCROLL");

break;

case SB_THUMBPOSITION:

// ScrollWindow(0,(scrollinfo.nPos-nPos)*10);

// scrollinfo.nPos = nPos;

// SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

break;

case SB_THUMBTRACK: //拖动滑块

ScrollWindow(0,(scrollinfo.nPos-nPos)*10);

scrollinfo.nPos = nPos;

SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

break;

}

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

}

免责声明:文章转载自《对话框自带滚动条的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c语言实现灰度图转换为二值图NodePad++的使用笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

元素跟随着滚动条运动

有这种情况,页面中的某些元素需要跟随滚动条运动,位置一直在页面中的某个位置; 思路: 当页面滚动的时候,一直获取滚动条距离顶部的距离,当顶部的距离等于某个数值的时候,直接开始改变这个元素的position的值为fixed,不等于这个数值的时候为relative; 注意的是需要在html中写一个和这个元素一样的元素,不等于数值的这个元素为display:no...

js实现html转pdf+html2canvas.js截图不全的问题

最近做项目中遇到要把整个页面保存为PDF文件,网上找了一下实现的方法都是 html2canvas.js+jsPdf.js 来实现。实现的过程是 先用html2canvas.js把html页面转成图片,再用jsPdf.js把图片导出为pdf。 于是做了个小案例来测试这个功能。 <body> <!-- PDF -->...

JavaFX作业8

一基础题 16.21 如何禁用一个文本区域里面的编辑功能? 答:TextArea textarea = new TextArea();     textarea.setEditable(false); 16.24 如何从一个组合框中获取一个条目?如何从一个组合框中获取一个选中条目? 答:ComboBox cb = new ComboBox();     c...

Qt自定义Widget中设置滚动条

用代码自定义一个独立显示的Widget,要在里面画图,同时加上滚动条, 滚动条:    printerYuLanPainter = newQPainter(); test = newQScrollArea(); printerYuLanWidget = newQWidget(test); printerYuLanWidget-&g...

关于scrollIntoView()、scrollTop()用法

一、scrollIntoView() 1、定义 scrollIntoView()受Internet Explorer和Firefox支持,并且在将滚动属性应用于HTML页面,div或框架时可以是非常有用的方法。它滚动页面,div或框架,直到搜索元素在视图中。 2、语法 element.scrollIntoView(topalign); opalign是一个...

弹性盒子Flex Box滚动条原理,避免被撑开,永不失效

在HTML中,要实现区域内容的滚动,只需要设定好元素的宽度和高度,然后设置CSS属性overflow 为auto或者scroll:   在Flex box布局中,有时我们内容的宽度和高度是可变的,无法确定下来,这时候设置滚动条,可能会失效。只要记住几个关键要素,就可以解决这个问题。 1、清楚的知道当前元素的flex flow 如果要设置水平滚动条,那...