VS2010_MFC编程入门之二十六(常用控件滚动条控件Scrol.pdf

上传人:asd****56 文档编号:70332230 上传时间:2023-01-19 格式:PDF 页数:8 大小:723.11KB
返回 下载 相关 举报
VS2010_MFC编程入门之二十六(常用控件滚动条控件Scrol.pdf_第1页
第1页 / 共8页
VS2010_MFC编程入门之二十六(常用控件滚动条控件Scrol.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《VS2010_MFC编程入门之二十六(常用控件滚动条控件Scrol.pdf》由会员分享,可在线阅读,更多相关《VS2010_MFC编程入门之二十六(常用控件滚动条控件Scrol.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、鸡啄米聚焦互联网、数码、软件开发和编程入门的IT休闲吧RSS订阅VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)分类标签:编程入门 VS2010 VC MFC 回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用。本节详解滚动条控件Scroll Bar的相关内容。滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。前面讲的列表框和组合框设置了相应属性后,如果列表项显示不下也会出现滚动条。滚动条分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。滚动条中有一个滚动块,用

2、于标识滚动条当前滚动的位置。我们可以拖动滚动块,也可以用鼠标点击滚动条某一位置使滚动块移动。从滚动条的创建形式来分,有标准滚动条和滚动条控件两种。像列表框和组合框设置了WS_HSCROLL 或WS_VSCROLL风格以后出现的滚动条,不是一个独立的窗口,而是这些窗口的一部分,这就是标准滚动条。而滚动条控件是一个独立的窗口,它可以获得焦点,响应某些操作。滚动条控件的创建 MFC也为滚动条控件的操作提供了类,即为CScrollBar类。滚动条控件的创建依然有两种方式,一种是直接在Toolbox中将滚动条控件拖入对话框模板,然后添加控件变量使用,另一种就是用CScrollBar类的Create成员函

3、数动态创建。这两种方式适用于不同的场合。CScrollBar类的成员函数Create的函数原型如下:virtual BOOL Create(DWORD dwStyle,const RECT&rect,CWnd*pParentWnd,UINT nID);此函数与其他控件类的Create函数原型基本相同。参数dwStyle指定滚动条控件的风格,rect指定滚动条控件的位置和尺寸,pParentWnd为指向滚动条控件父窗口的指针,nID指定滚动条控件的ID。下面鸡啄米简单介绍几个主要的滚动条控件风格,更加具体的可以查阅MSDN。SBS_HORZ:指定滚动条为水平滚动条。如果没有指定SBS_BOTTO

4、MALIGN或SBS_TOPALIGN风格,则滚动条的高度、宽度和位置由Create函数的rect参数给出。SBS_VERT:指定滚动条为垂直滚动条。如果没有指定SBS_RIGHTALIGN或SBS_LEFTALIGN风格,则滚动条的高度、宽度和位置由Create函数的rect参数给出。SBS_TOPALIGN:与SBS_HORZ配合使用。滚动条的上边缘与Create函数的rect参数指定矩形的上边缘对齐。滚动条高度为系统滚动条的默认高度。SBS_BOTTOMALIGN:与SBS_HORZ配合使用。滚动条的下边缘与Create函数的rect参数指定矩形的下边缘对齐。滚动条高度为系统滚动条的默认

5、高度。SBS_LEFTALIGN:与SBS_VERT配合使用。滚动条的左边缘与Create函数的rect参数指定矩形首页 软件开发 VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)请输入搜索内容.四川哪所职业学校好?雅慧国际语言 028-85577096顺通无缝异型管价格 质优价廉 OPNET的中国区代理(怡嘉行)四核笔记本500元火热促销中风水大师预测你一生有多少财富10大风水禁忌,你知道多少?2013职称计算机考试题库下载浪潮服务器冠军品质 智能高效123456789 订阅鸡啄米 站内搜索分类标签编程入门(124)VC(72)MFC(62)C(61)VS20

6、10(60)Android(38)苹果(37)平板电脑(31)智能手机(31)谷歌(28)iPhone(18)iPad(17)Windows(17)设计模式(15)三星(12)腾讯(11)程序员(11)微软(10)Facebook(8)新浪(8)Galaxy(7)首页IT互联网数码生活软件开发职场人生娱乐休闲安卓开发留言簿的左边缘对齐。滚动条宽度为系统滚动条的默认宽度。SBS_RIGHTALIGN:与SBS_VERT配合使用。滚动条的右边缘与Create函数的rect参数指定矩形的右边缘对齐。滚动条宽度为系统滚动条的默认宽度。dwStyle参数可以是以上风格中某几个的组合,另外一般也会用到WS

7、_CHILD、WS_VISIBLE风格。例如,创建一个水平滚动条控件,dwStyle参数应该为WS_CHILD|WS_VISIBLE|SBS_HORZ,创建垂直滚动条控件时dwStyle参数应该为WS_CHILD|WS_VISIBLE|SBS_VERT。CScrollBar类的主要成员函数 BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo,UINT nMask=SIF_ALL);获取的滚动条的参数信息,该信息为SCROLLINFO结构体的形式。参数lpScrollInfo为指向SCROLLINFO结构体变量的指针。SCROLLINFO结构体的定义如下:C

8、+代码1.t y p e d e f s t r u c t t a g S C R O L L I N F O 2.U I N T c b S i z e;/结构的尺寸(字节为单位)3.U I N T f M a s k;/说明结构中的哪些参数是有效的,可以是屏蔽值的组合,如S I F _ P O S|S I F _ P A G E,若为S I F _ A L L 则整个结构都有效 4.i n t n M i n;/滚动范围最小值,当f M a s k 中包含S I F _ R A N G E 时有效 5.i n t n M a x;/滚动范围最大值,当f M a s k 中包含S I F

9、_ R A N G E 时有效 6.U I N T n P a g e;/页尺寸,用来确定比例滚动框的大小,当f M a s k 中包含S I F _ P A G E 时有效 7.i n t n P o s;/滚动框的位置,当f M a s k 中包含S I F _ P O S 有效 8.i n t n T r a c k P o s;/滚动时滚动框的位置,当f M a s k 中包含S I F _ T R A C K PO S 时有效,该参数只能查询,不能设置,最好不要用该参数来查询拖动时滚动框的位置 9.S C R O L L I N F O,*L P S C R O L L I N F

10、O;1 0.t y p e d e f S C R O L L I N F O C O N S T *L P C S C R O L L I N F O;参数nMask 的含义与SCROLLINFO 结构体中的fMask一样。该函数在获取信息成功则返回TRUE,否则返回FALSE。BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo,BOOL bRedraw=TRUE);用于设置滚动条的各种参数信息。参数lpScrollInfo为指向SCROLLINFO结构体变量的指针,参数bRedraw表示是否需要重绘滚动条,如果为TRUE,则重绘。该函数操作成功则返回T

11、RUE,否则返回FALSE。int GetScrollPos()const;获取滚动块的当前位置。如果失败则返回0。int SetScrollPos(int nPos,BOOL bRedraw=TRUE);将滚动块移动到指定位置。参数nPos指定了滚动块的新位置,参数bRedraw 表示是否需要重绘滚动条,如果为TRUE,则重绘。函数返回滚动框原来的位置,若操作失败则返回0。void GetScrollRange(LPINT lpMinPos,LPINT lpMaxPos)const;获取滚动条的滚动范围。参数lpMinPos指向滚动条滚动范围的最小值,参数lpMaxPos指向滚动条滚动范围的

12、最大值。void SetScrollRange(int nMinPos,int nMaxPos,BOOL bRedraw=TRUE);用于指定滚动条的滚动范围。参数nMinPos 和nMaxPos 分别指定了滚动范围的最小值和最大值,两者的差不得超过32767。当两者都为0 时,滚动条将被隐藏。参数bRedraw 表示是否需要重绘滚动条,如果为TRUE,则重绘。iOS(7)应用程序(7)微博(7)搜索引擎(7)百度(7)操作系统(6)社交网络(6)诺基亚(6)奇虎360(6)软件架构(5)阿里巴巴(5)亚马逊(5)电子商务(5)Mysql(5)周鸿祎(5)雅虎(4)Google(4)Windo

13、ws Phone(4)黑莓(4)HTC(4)惠普(3)软件工程师(3)娱乐(3)天猫(3)Twitter(3)搜狗(3)京东商城(3)游戏(3)职场攻略(3)更多标签完全随机文章iPhone5上市时间:百思买泄露文件中.鸡啄米:C+编程入门系列之十(函数的.Android在欧洲智能手机市场击败iPh.汇总iPhone5和iPhone4S的传闻报道.Facebook与iPhone诺基亚发布首批Windows Phone智能手.鸡啄米:C+编程入门系列之二十七(数.鸡啄米:C+编程入门系列之三十四(数.鸡啄米:C+编程入门系列之三十九(继.2011年IT互联网大事记鸡啄米:C+编程入门系列之四十四

14、(多.360与新浪微博共享登录账号,实现合.苹果争取域名iP的控制权推荐九款最优秀的Android平板电脑职场人面对升职机会该怎么办移动互联网两强相争:新浪微博VS腾讯.iPhone5将成为苹果败笔的四点理由MFC六大核心机制之二:运行时类型识.Mysql C语言API编程入门讲解之详细.2013年IT互联网行业大预测最新评论及回复gfffffffffffffffff.持续关注。请问鸡啄米交流群在哪呢?31楼说得很合我意有木有。博主写得很.OnSetActive 函数本身有下.照这个说法,什么都有缺点,那么什么都可以替代感谢鸡啄米 呵呵 MFC学得很受用double r(3.0);VS.投资二

15、十元,净赚一千万,免费下载百万.开始学MFC,本节内容蛮多的,有些难.赞一个,不错,就这这博客看完一章后又.OnHScroll()与OnVScroll()函数 无论是标准滚动条,还是滚动条控件,滚动条的通知消息都是用WM_HSCROLL 和WM_VSCROLL消息发送出去的。对这两个消息的默认处理函数是CWnd:OnHScroll和CWnd:OnVScroll,一般需要在派生类中对这两个函数进行重载,以实现滚动功能。也就是说,假设在一个对话框中放入了一个水平滚动条,我们可以在对话框类中重载OnHScroll函数,并在OnHScroll函数中实现滚动功能。这两个函数的声明如下:afx_msg v

16、oid OnHScroll(UINT nSBCode,UINT nPos,CScrollBar*pScrollBar);afx_msg void OnVScroll(UINT nSBCode,UINT nPos,CScrollBar*pScrollBar);参数nSBCode是通知消息码,主要通知码及含义的介绍下面已列出。nPos 是滚动框的位置,只有在nSBCode为SB_THUMBPOSITION或SB_THUMBTRACK时,该参数才有意义。如果通知消息是滚动条控件发来的,那么pScrollBar 是指向该控件的指针,如果是标准滚动条发来的,则pScrollBar 为NULL。SB_BO

17、TTOM/SB_RIGHT:滚动到底端(右端)SB_TOP/SB_LEFT:滚动到顶端(左端)SB_LINEDOWN/SB_LINERIGHT:向下(向右)滚动一行(列)SB_LINEUP/SB_LINELEFT:向上(向左)滚动一行(列)SB_PAGEDOWN/SB_PAGERIGHT:向下(向右)滚动一页 SB_PAGEUP/SB_PAGELEFT:向上(向左)滚动一页 SB_THUMBPOSITION:滚动到指定位置 SB_THUMBTRACK:滚动框被拖动。可利用该消息来跟踪对滚动框的拖动 SB_ENDSCROLL:滚动结束 CScrollBar类应用实例 讲完了基础知识,鸡啄米还是给

18、大家一个简单的实例。例子非常简单,就是在一个对话框中加入一个水平滚动条控件和一个编辑框控件,无论滚动条控件是在滚动还是静止,编辑框中都显示滚动块的当前位置。以下是具体开发步骤:1.创建一个基于对话框的MFC工程,名称设置为“Example26”。2.在自动生成的对话框模板IDD_EXAMPLE26_DIALOG中,删除“TODO:Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个Horizontal Scroll Bar控件,ID设置为IDC_HORI_SCROLLBAR。再添加一个静态文本控件和一个编辑框,静态文本控件的Capt

19、ion属性设为“滚动块当前位置:”,编辑框的ID设为IDC_HSCROLL_EDIT,Read Only属性设为True。此时的对话框模板如下图:3.为滚动条IDC_HORI_SCROLLBAR添加CScrollBar类型的控件变量m_horiScrollbar。4.在对话框初始化时,我们需要设置滚动条的滚动范围和初始位置,并在编辑框中显示初始位置,那么需要修改CExample26Dlg:OnInitDialog()函数为:C+代码1.B O O L C E x a m p l e 2 6 D l g:O n I n i t D i a l o g()2.3.C D i a l o g E x

20、:O n I n i t D i a l o g();4.analogMFC_2.obj:.我复制了后面的代码,为什么运行不了,.请问如何链接MFC库?谢谢哦 看起来有点不懂了我想問下 為什麼我的那個宋體的字體無.看似很简单的一句话,或许都能给人以启.是面向对象吧鸡爷 牛逼 再接再厉 弄出好作品来!顶支持博主 加油了很好的教材,赞一个!最近发表VC+操作Word之简明入门教程VC+文件操作之最全篇小菜和大鸟的编程故事之十四:设计模式不能戏说!设计模式怎就不能戏说?小菜和大鸟的编程故事之十三:门面让程序员的程序更加体面小菜和大鸟的编程故事之十二:无熟人难办事?-聊设计模式之迪米特法则小菜和大鸟的

21、编程故事之十一:三层架构 分层开发小菜和大鸟的编程故事之十:会修电脑不会修收音机?-谈设计模式原则小菜和大鸟的编程故事之九:反射-程序员的快乐小菜和大鸟的编程故事之八:初识策略模式iOS7的扁平化之漫谈小菜和大鸟的编程故事之七:工厂模式不好用了?小菜和大鸟的编程故事之六:简单工厂模式之体验一位离职员工谈谈危机中的中兴小菜和大鸟的编程故事之五:业务和界面分离移动应用七大UI设计经验5./A d d A b o u t.m e n u i t e m t o s y s t e m m e n u.6.7./I D M _ A B O U T B O X m u s t b e i n t h e

22、 s y s t e m c o m m a n d r a n g e.8.A S S E R T(I D M _ A B O U T B O X&0 x F F F 0)=I D M _ A B O U T B O X);9.A S S E R T(I D M _ A B O U T B O X A p p e n d M e n u(M F _ S E P A R A T O R);2 1.p S y s M e n u-A p p e n d M e n u(M F _ S T R I N G,I D M _ A B O U T B O X,s t r A b o u t M en u

23、);2 2.2 3.2 4.2 5./S e t t h e i c o n f o r t h i s d i a l o g.T h e f r a m e w o r k d o e s t h i s a u t o m at i c a l l y 2 6./w h e n t h e a p p l i c a t i o n s m a i n w i n d o w i s n o t a d i a l o g 2 7.S e t I c o n(m _ h I c o n,T R U E);/S e t b i g i c o n 2 8.S e t I c o n(m _

24、 h I c o n,F A L S E);/S e t s m a l l i c o n 2 9.3 0./T O D O:A d d e x t r a i n i t i a l i z a t i o n h e r e 3 1./设置水平滚动条的滚动范围为1 到1 0 0 3 2.m _ h o r i S c r o l l b a r.S e t S c r o l l R a n g e(1,1 0 0);3 3./设置水平滚动条的初始位置为2 0 3 4.m _ h o r i S c r o l l b a r.S e t S c r o l l P o s(2 0);3

25、 5./在编辑框中显示2 0 3 6.S e t D l g I t e m I n t(I D C _ H S C R O L L _ E D I T,2 0);3 7.3 8.r e t u r n T R U E;/r e t u r n T R U E u n l e s s y o u s e t t h e f o c u s t o a c o n tr o l 3 9.5.现在滚动条还不能正常滚动,并且编辑框中数字也不随滚动改变。根据上面所讲,我们可以重载CExample26Dlg类的OnHScroll函数。具体操作为,在CExample26Dlg类的属性页面的工具栏上点“Me

26、ssages”按钮,找到WM_HSCROLL消息,添加响应函数就可以了。OnHScroll函数重写后如下:C+代码1.v o i d C E x a m p l e 2 6 D l g:O n H S c r o l l(U I N T n S B C o d e,U I N T n P o s,C S c r o l l B a r*pS c r o l l B a r)2.3./T O D O:A d d y o u r m e s s a g e h a n d l e r c o d e h e r e a n d/o r c a l l d e f a u l t 4.i n t p

27、 o s =m _ h o r i S c r o l l b a r.G e t S c r o l l P o s();/获取水平滚动条当前位置 5.6.s w i t c h (n S B C o d e)7.8./如果向左滚动一列,则p o s 减1 9.c a s e S B _ L I N E U P:1 0.p o s -=1;1 1.b r e a k;1 2./如果向右滚动一列,则p o s 加1 1 3.c a s e S B _ L I N E D O W N:1 4.p o s +=1;1 5.b r e a k;1 6./如果向左滚动一页,则p o s 减1 0 1

28、7.c a s e S B _ P A G E U P:1 8.p o s -=1 0;1 9.b r e a k;2 0./如果向右滚动一页,则p o s 加1 0 2 1.c a s e S B _ P A G E D O W N:2 2.p o s +=1 0;2 3.b r e a k;2 4./如果滚动到最左端,则p o s 为1 2 5.c a s e S B _ T O P:2 6.p o s =1;2 7.b r e a k;2 8./如果滚动到最右端,则p o s 为1 0 0 2 9.c a s e S B _ B O T T O M:3 0.p o s =1 0 0;3

29、1.b r e a k;3 2./如果拖动滚动块滚动到指定位置,则p o s 赋值为n P o s 的值 3 3.c a s e S B _ T H U M B P O S I T I O N:3 4.p o s =n P o s;3 5.b r e a k;3 6./下面的m _ h o r i S c r o l l b a r.S e t S c r o l l P o s(p o s);执行时会第二次进入此函数,最终确定滚动块位置,并且会直接到d e f a u l t 分支,所以在此处设置编辑框中显示数值 3 7.d e f a u l t:3 8.S e t D l g I t e

30、 m I n t(I D C _ H S C R O L L _ E D I T,p o s);3 9.r e t u r n;4 0.4 1.4 2./设置滚动块位置 4 3.m _ h o r i S c r o l l b a r.S e t S c r o l l P o s(p o s);4 4.4 5.C D i a l o g E x:O n H S c r o l l(n S B C o d e,n P o s,p S c r o l l B a r);4 6.6.编译运行程序,弹出结果对话框,可以自己拖动滚动块看是否能正常滚动,并且编辑框中也显示了正确的数值。效果如下:至于垂

31、直滚动条,其实与水平滚动条类似,大家可以自己写写垂直滚动条的例子,鸡啄米就不再举例了。2012-6-19 21:53:33作者:鸡啄米 分类:软件开发 浏览:28824 评论:10 滚动条控件的内容就讲到这里了,比较基础,但这些是以后应用滚动条控件的必知内容。鸡啄米欢迎大家常来此学习交流,谢谢。您可能也喜欢:无觅关联推荐?除非特别注明,鸡啄米文章均为原创转载请标明本文地址:http:/ 8和Windows Phone 8中下一篇:微软Surface平板电脑能否超越iPad相关文章:VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)(2012-6-16 0:49:15

32、)VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)(2012-6-11 23:21:17)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)(2012-6-5 21:47:59)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)(2012-6-2 0:24:18)VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)(2012-5-26 0:15:31)VS2010/MFC编程入门之二十(常用控件:静态文本框)(2012-5-21 22:29:38)VS201

33、0/MFC编程入门之十九(对话框:颜色对话框)(2012-5-17 21:26:10)VS2010/MFC编程入门之十八(对话框:字体对话框)(2012-5-13 22:25:46)VS2010/MFC编程入门之十七(对话框:文件对话框)(2012-5-9 20:30:21)VS2010/MFC编程入门之十六(对话框:消息对话框)(2012-5-5 21:30:18)1楼.标语大全博主写得都是很专业性。2012-6-20 8:46:58 回复该留言2楼.义乌货代飘过,看到C+就烦躁2012-6-21 8:55:28 回复该留言3楼.1314太高深了。由 鸡啄米 于 2012-06-23 21:

34、26:17 最后编辑2012-6-22 18:43:30 回复该留言4楼.郑州婚纱摄影这个控件很不错啊2012-6-27 9:39:30 回复该留言英语培训【限成都学员】美联英语培训机构,上课时间自由 置身海外的语言学习环境.免费试听中!21VC+/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)VS2010/MFC编程入门之四十一(文档、视图和框架:分

35、割窗口)5楼.大海鸡啄米的东西很精辟啊总结的2012-9-26 9:48:02 回复该留言6楼.HelloWorld继续支持,继续感谢鸡啄米的提供2012-12-6 23:00:43 回复该留言7楼.秦风第一部分的代码段里,第4,第5行的注释 最大、最小,是不是写反了?呵呵。鸡啄米 于 2013-01-09 23:12:44 回复呵呵,确实是写反了,已经更正。谢谢指出问题nianhuadefo 于 2013-05-17 11:19:58 回复添加的是水平滚动条,根据消息通知码的介绍,最后一部分的case条件那是不是写反了,都是垂直滚动条的,不是水平滚动条的,例如滚动到最右端你写的是SB_BOT

36、TOM,不应该是SB_RIGHT?ajie 于 2013-7-16 21:07:57 回复nSBCode是一个UINT值,SB_BOTTOM的SB_RIGHT的值是一样的。2013-1-8 13:45:49 回复该留言8楼.千池在这一节中,我自己将SB_PAGEDOWN和SB_PAGEUP弄反了,还查了好久错,继续努力学习鸡啄米 于 2013-01-29 22:03:18 回复很有上进心,加油!2013-1-29 15:22:08 回复该留言9楼.nianhuadefo写的很好的东西,对于初学者真不错,从第一篇看到这了,继续学习2013-5-17 11:25:04 回复该留言10楼.sephirothty程序能编译过,可是拖动之后又返回原地了,而且编辑框不显示位置,怎么回事啊2013-9-18 15:45:55 回复该留言发表评论:名称(*)邮箱(选填)网站链接(选填)验证(*)正文(*)(留言最长字数:1000)提交 记住我,下次回复时不用重新输入个人信息URL URL2 EMAIL EMAIL2 B I U S QUOTE 显示UBB表情欢迎参与讨论,请在这里发表您的看法、交流您的观点。Copyright 2011-2013 鸡啄米.版权所有.联系邮箱: Powered By Z-Blog

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁