Scroll bar 的使用

1)  在对话框上加入scrollbar资源。并加入一个edit control资源,来检测bar的位置。

2)  scrollbar资源添加控制变量m_scrollbar,为edit control资源添加控制变量m_edit

3)  添加消息响应“OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)”。

4)  Dlg对话框的CbarDlg::OnInitDialog()中添加代码如下:

     m_scrollbar.SetScrollRange(0,20);

     m_scrollbar.SetScrollPos(10);

     char sPos[10];

     _itoa_s(m_scrollbar.GetScrollPos(),sPos,10);

     m_edit.SetSel(0,-1);

m_edit.ReplaceSel(sPos, FALSE);

 

5)   OnHScroll(……)函数中,添加如下代码:

     char sPos[10];

     int iNowPos;

     switch(nSBCode)                           //接收scrollbar的消息

     {

         if(pScrollBar==&m_scrollbar)         //找到相对应的scrollbar

         {

     case SB_THUMBTRACK:                       //滚动条拖动到某一位置,参数nPos指明当前位置

         m_scrollbar.SetScrollPos(nPos);

         _itoa_s(nPos,sPos,10);

         m_edit.SetSel(0,-1);

         m_edit.ReplaceSel(sPos);

     case SB_LINEDOWN:                         //向下滚动一行

         iNowPos=m_scrollbar.GetScrollPos();

         iNowPos++;

         if(iNowPos>20)

              iNowPos=20;

         m_scrollbar.SetScrollPos(iNowPos);

         _itoa_s(m_scrollbar.GetScrollPos(),sPos,10);

         m_edit.SetSel(0,-1);

         m_edit.ReplaceSel(sPos);

         break;

     case SB_LINEUP:                           //向上滚动一行

         iNowPos=m_scrollbar.GetScrollPos();

         iNowPos--;

         if(iNowPos<0)

              iNowPos=0;

         m_scrollbar.SetScrollPos(iNowPos);

         _itoa_s(m_scrollbar.GetScrollPos(),sPos,10);

         m_edit.SetSel(0,-1);

         m_edit.ReplaceSel(sPos);

         break;

     case SB_PAGEDOWN:                         //向下滚动一页

         iNowPos=m_scrollbar.GetScrollPos();

         iNowPos+=3;

         if(iNowPos>20)

              iNowPos=20;

         m_scrollbar.SetScrollPos(iNowPos);

         _itoa_s(m_scrollbar.GetScrollPos(),sPos,10);

         m_edit.SetSel(0,-1);

         m_edit.ReplaceSel(sPos);

         break;

     case SB_PAGEUP:                           //向上滚动一页

         iNowPos=m_scrollbar.GetScrollPos();

         iNowPos-=3;

         if(iNowPos<0)

              iNowPos=0;

         m_scrollbar.SetScrollPos(iNowPos);

         _itoa_s(m_scrollbar.GetScrollPos(),sPos,10);

         m_edit.SetSel(0,-1);

         m_edit.ReplaceSel(sPos);

     //   m_edit.Clear();

         break;

         }

     }

 在创建滚动条后需要调用void SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE )设置滚动范围,

int GetScrollPos( )/int SetScrollPos( )
用来得到和设置当前滚动条的位置。

void ShowScrollBar( BOOL bShow = TRUE );
用来显示/隐藏滚动条。

BOOL EnableScrollBar( UINT nArrowFlags = ESB_ENABLE_BOTH )
用来设置滚动条上箭头是否为允许状态。nArrowFlags可取以下值:

ESB_ENABLE_BOTH
两个箭头都为允许状态
ESB_DISABLE_LTUP
/左箭头为禁止状态
ESB_DISABLE_RTDN
/右箭头为禁止状态
ESB_DISABLE_BOTH
两个箭头都为禁止状态


如果需要在滚动条位置被改变时得到通知,需要在父窗口中定义对消息WM_VSCROLL/WM_HSCROLL的映射。方法为在父窗口类中重载afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )/afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ) 所使用的消息映射宏为:ON_WM_VSCROLL( ),ON_WM_HSCROLL( ),在映射宏中不需要指明滚动条的ID,因为所有滚动条的滚动消息都由同样的函数处理。在OnHScroll/OnVScroll的第三个参数会指明当前滚动条的指针。第一个参数表示滚动条上发生的动作,可取以下值:
SB_TOP/SB_BOTTOM
已滚动到顶/底部
SB_LINEUP/SB_LINEDOWN
向上/下滚动一行
SB_PAGEDOWN/SB_PAGEUP
向上/下滚动一页
SB_THUMBPOS
ITION/SB_THUMBTRACK
滚动条拖动到某一位置,参数nPos指明当前位置(参数nPos在其它的情况下是无效的)
SB_ENDSCROLL
滚动条拖动完成

 

 

滚动条(ScrollBar)是一种用户界面控件,用于在可滚动内容中滚动视图。根据引用[1]中的描述,在WPF中,使用ScrollBar控件可以实现滚动功能。在滑动滚动条的过程中获取当前滚动条的值,可以使用ScrollChanged事件来处理。在XAML中,可以使用ScrollViewer.ScrollChanged事件来处理滚动条的滚动事件。 根据引用中的代码示例,可以在XAML中定义ScrollBar控件,并将其与TextBlock控件绑定,以显示当前滚动条的值。通过设置ScrollBar的Minimum和Maximum属性来定义滚动条的范围,通过设置ScrollBar的Value属性来获取或设置当前滚动条的值。 ScrollBar控件还有其他一些属性,例如Orientation属性用于设置滚动条是水平显示还是垂直显示,SmallChange属性用于设置滚动条值的变化最小值,ViewportSize属性用于设置当前可见的可滚动内容的数量。更多关于ScrollBar控件的属性和用法可以参考引用。 注意,引用中提到的FastScrollBar.java是针对Android平台的一个示例,与WPF中的ScrollBar控件不同。 总结回答:滚动条(ScrollBar)是一种用户界面控件,用于在可滚动内容中滚动视图。在WPF中使用ScrollBar控件可以实现滚动功能,可以通过ScrollChanged事件获取当前滚动条的值。通过设置ScrollBar的属性可以定义滚动条的范围和获取当前值。更多关于ScrollBar控件的属性和用法可以参考相关文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值