CScrollBar 滚动条操作

本文详细介绍了CScrollBar类的创建过程及其成员函数,包括创建滚动条时的风格设置,如SBS_HORZ和SBS_VERT等。此外,还讲解了如何获取和设置滚动信息,如GetScrollInfo和SetScrollInfo函数的使用。同时,讨论了OnHScroll和OnVScroll函数在处理滚动条通知消息中的作用,以及如何在实际应用中重载这些函数以实现自定义滚动功能。最后提供了一个CScrollBar控件在对话框中的简单应用示例,展示如何设置滚动范围和更新滚动位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  CScrollBar类的成员函数Create的函数原型如下:

virtual BOOL Create(
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID 
);

 参数dwStyle指定滚动条控件的风格。rect指定滚动条控件的位置和尺寸。pParentWnd为指向滚动条控件父窗口的指针,nID指定滚动条控件的ID。  滚动条控件风格 :

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

       dwStyle参数可以是以上风格中某几个的组合,另外一般也会用到WS_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++代码
  1. typedef struct tagSCROLLINFO {    
  2.     UINT cbSize;         // 结构的尺寸(字节为单位)    
  3.     UINT fMask;          // 说明结构中的哪些参数是有效的,可以是屏蔽值的组合,如SIF_POS|SIF_PAGE,若为SIF_ALL则整个结构都有效   
  4.     int  nMin;           // 滚动范围最小值,当fMask 中包含SIF_RANGE 时有效  
  5.     int  nMax;           // 滚动范围最大值,当fMask 中包含SIF_RANGE 时有效  
  6.     UINT nPage;          // 页尺寸,用来确定比例滚动框的大小,当fMask中包含SIF_PAGE时有效   
  7.     int  nPos;           // 滚动框的位置,当fMask 中包含SIF_POS 有效   
  8.     int  nTrackPos;      // 滚动时滚动框的位置,当fMask 中包含SIF_TRACKPOS 时有效,该参数只能查询,不能设置,最好不要用该参数来查询拖动时滚动框的位置   
  9. }   SCROLLINFO, *LPSCROLLINFO;    
  10. typedef SCROLLINFO CONST *LPCSCROLLINFO;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值