对话框自带滚动条的使用

摘自 http://wenku.baidu.com/link?url=aZe1zgBSBsf9xCYNpcz2fNGljmKxg372OVIGeJ7p6iRCWbbsertS7nA8sMUrv0JHak4T5hHpWqGHcUKRiefEcaU0GElq-1KexDvF1fwlJ-C

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

二,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);

}

【MFC】对话框自带滚动条的使用的更多相关文章

  1. MFC MFC对话框滚动条的使用

      对话框的(上下/左右)滚动事件,比如,把一个比较大的对话框放入tab控件的某一页时,就需要添加滚动条.在使用了java和qt等图形界面化的集成开发环境之后,再使用MFC,就会发现,想要让一个对话框 ...

  2. 在word2010中添加带滚动条的文本框

    由于文件内容过长,为了加强文章的可读性,可以添加一个带滚动条的文本框,既能使文章看起来干净整洁,同时也极大的提高了文章的可读性. 我这里对在word2010中文本框带滚动条作个介绍: 1. 打开wor ...

  3. MFC对话框显示BMP图片

    1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) ...

  4. MFC对话框中使用CHtmlEditCtrl

    MFC对话框中使用CHtmlEditCtrl 感谢原帖作者: http://blog.csdn.net/tingya/article/details/2028172 我在VS2008校正了一些代码. ...

  5. MFC对话框中显示BMP,JPG图片

    //************************************ // 方法说明:    显示JPG和GIF.BMP图片 // 参数说明:    CDC * pDC           设 ...

  6. OSG+MFC对话框程序

    OSG的sample里面有OSG+MFC+MDI的例子. 网上有说OSG+MFCSDI的例子,如http://blog.csdn.net/xuguangsoft/article/details/816 ...

  7. 使用ViewPager+Fragment来实现带滚动条的多屏滑动-IndicatorFragmentActivity

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17201587 介绍 在android应用中,多屏滑动是一种很常见的风格,博主 ...

  8. 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转

    (一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...

  9. MFC对话框屏蔽Enter和ESC键

    MFC对话框屏蔽Enter和ESC键参考:http://www.docin.com/p-122354833.html 方法一重载PreTranslateMessage函数 BOOL CXXDlg::P ...

随机推荐

  1. $python数据分析基础——初识numpy库

    numpy库是python的一个著名的科学计算库,本文是一个quickstart. 引入:计算BMI BMI = 体重(kg)/身高(m)^2 假如有如下几组体重和身高数据,让求每组数据的BMI值: ...

  2. C# Json格式

    using LitJson; //自定义Json类 JsonDataResult jsondata = new JsonDataResult() { Success = false }; HttpCo ...

  3. 【Flask】Flask Cookie操作

    ### 什么是cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...

  4. Sublime : python环境

    1.安装python.注意区分32位和64位版本,勾选下图红框实现自动将python安装位置添加到环境变量 2.键盘win+r,输入cmd调出命令行,输入python回车,根据结果查看时候安装成功 3 ...

  5. SQL-ALTER-change和modify区别

      ALTER 对于列的应用:   1.更改列名      格式:CHANGE old_col_name new_col_name column_definition      保留old和new列名 ...

  6. 自定义QSS

    /*QComboBox*/ QComboBox {border: 1px solid rgb(111, 156, 207);border-radius: 3px;padding: 1px 18px 1 ...

  7. maven中使用dom4j解析、生成XML的简易方法

    此片文章主要写一些关于如何在maven工程中使用dom4j来解析或生成XML的建议方法,实际可使用的写法不仅限于如下所写的样例代码.此处进攻快速入手和提供思路使用. 首先配置pom.xml中的依赖的包 ...

  8. 《Maven实战》第6章 仓库

    6.1什么是Maven仓库? Maven仓库:存储所有Maven项目共享的构件的统一位置. Maven仓库的作用:Maven项目仅需声明依赖坐标,即可在需要的时候自动根据坐标找到仓库中的构件. 6.2 ...

  9. jvm-垃圾收集器与内存分配策略

    垃圾收集器与内存分配策略 参考: https://my.oschina.net/hosee/blog/644085 http://www.cnblogs.com/zhguang/p/Java-JVM- ...

  10. 分享:JAVA各种对象

    PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数 ...