MFC中ScrollBar滚动条控件的使用
2017-03-14 14:59
956 查看
在MFC需要有时需要用到混动条拖动屏幕和显示。现将滚动条控件ScrollBar的相关用法总结如下。
一、使用的步骤
1、在对话框中拖入CScrollBar控件,并修改ID,
2、在对话框的InitDialog函数中增加如下代码,完成CScrollBar的初始化.
CScrollBar* pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR_HORIZONTAL);
pScrollBar->SetScrollRange(0,100);//滑块移动的位置为0——100;
pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR_VERTICAL);
pScrollBar->SetScrollRange(0,100);
pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR3);
pScrollBar->SetScrollRange(0,100);
3、针对对话框添加WM_HSCROLL和WM_VSCROLL两个消息处理函数,如下所示:
二、滚动条控件的使用方法总结
滚动条分为水平滚动条和竖直滚动条。滚动条通常是通过设置一个数值范围,通常是和其它的控件或视图结合使用。在对话框中加载滚动条方法如下:
1在对话框中加入变量(利用类向导将控件和变量连接):CScrollBar m_scroll;
2初始化滚动条:利用CScrollBar::SetScrollRange(int nMin,int nMax,BOOL bReDraw=TRUE)函数初始化滚动条,即设置滚动条的最大最小值。
3在父窗口中处理滚动条消息:水平滚动条响应OnHScroll函数,竖直滚动条响应OnVScroll函数。一般在函数中必须经过一下步骤:
1)得到滚动条的范围:CScrollBar::GetScrollRange(nMin,nMax);
2)得到当前滚动条的位置,即取值:int nCurpos=pScrollBar->GetScrollPos();
3)处理滚动信息。按左右健,鼠标键。
4)判断滚动后当前值是否大于或小于最大最小值。
5)更新滚动条信息。
6)根据滚动条当前取值,设置其它控件的值(这才是使用滚动条的目的)。
下面给出一个详细的函数:
void CMyDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int nMin,nMax,nCurpos;
pScrollBar->GetScrollRange((&nMin,&nMax); //取得滚动条范围
nCurpos=pScrollBar->GetScrollPos(); //取得当前值
switch(nSBCode) //处理滚动信息
{
case SB_LINELEFT: //向左的箭头被按下
nCurpos=nCurpos-5;break;
case SB_lINERIGHT:
nCurpos++;break; //向右的箭头被按下
case SB_THUMBTRACK: //鼠标拖动
nCurpos=nPos;break;
}
if(nCurpos if(nCurpos>nMax) nCurpos=nMax;
pScrollBar->SetScrollPos(nCurpos); //更新信息
//处理你想处理的东西
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
一、使用的步骤
1、在对话框中拖入CScrollBar控件,并修改ID,
2、在对话框的InitDialog函数中增加如下代码,完成CScrollBar的初始化.
CScrollBar* pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR_HORIZONTAL);
pScrollBar->SetScrollRange(0,100);//滑块移动的位置为0——100;
pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR_VERTICAL);
pScrollBar->SetScrollRange(0,100);
pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR3);
pScrollBar->SetScrollRange(0,100);
3、针对对话框添加WM_HSCROLL和WM_VSCROLL两个消息处理函数,如下所示:
void CTestScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 int TempPos = pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_THUMBPOSITION://拖动滑块 pScrollBar->SetScrollPos(nPos); break; case SB_LINELEFT://点击左边的箭头 if(TempPos > 1) { TempPos--; } pScrollBar->SetScrollPos(TempPos); break; case SB_LINERIGHT://点击右边的箭头 if(TempPos<100) { TempPos++; } pScrollBar->SetScrollPos(TempPos); break; } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); }注意:为对话框的消息添加消息处理函数步骤:打开对话框的类向导,单击消息列表,选择需要添加的消息的,再选择编辑代码即可。中间过程截图如下:
二、滚动条控件的使用方法总结
滚动条分为水平滚动条和竖直滚动条。滚动条通常是通过设置一个数值范围,通常是和其它的控件或视图结合使用。在对话框中加载滚动条方法如下:
1在对话框中加入变量(利用类向导将控件和变量连接):CScrollBar m_scroll;
2初始化滚动条:利用CScrollBar::SetScrollRange(int nMin,int nMax,BOOL bReDraw=TRUE)函数初始化滚动条,即设置滚动条的最大最小值。
3在父窗口中处理滚动条消息:水平滚动条响应OnHScroll函数,竖直滚动条响应OnVScroll函数。一般在函数中必须经过一下步骤:
1)得到滚动条的范围:CScrollBar::GetScrollRange(nMin,nMax);
2)得到当前滚动条的位置,即取值:int nCurpos=pScrollBar->GetScrollPos();
3)处理滚动信息。按左右健,鼠标键。
4)判断滚动后当前值是否大于或小于最大最小值。
5)更新滚动条信息。
6)根据滚动条当前取值,设置其它控件的值(这才是使用滚动条的目的)。
下面给出一个详细的函数:
void CMyDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int nMin,nMax,nCurpos;
pScrollBar->GetScrollRange((&nMin,&nMax); //取得滚动条范围
nCurpos=pScrollBar->GetScrollPos(); //取得当前值
switch(nSBCode) //处理滚动信息
{
case SB_LINELEFT: //向左的箭头被按下
nCurpos=nCurpos-5;break;
case SB_lINERIGHT:
nCurpos++;break; //向右的箭头被按下
case SB_THUMBTRACK: //鼠标拖动
nCurpos=nPos;break;
}
if(nCurpos if(nCurpos>nMax) nCurpos=nMax;
pScrollBar->SetScrollPos(nCurpos); //更新信息
//处理你想处理的东西
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
相关文章推荐
- (MFC)滚动条控件的使用
- VS2010/MFC入门编程二十一(滚动条控件Scroll Bar 的使用)
- 希望控件【解决】mfc grid control问题:无水平滚动条(scrollbar)、垂直滚动条只有向上部分、向下部分看不到
- MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)
- MFC ScrollBar控件的使用方法
- mfc combo box 控件使用方法总结
- VC++的MFC中EditBox控件滚动条保持在底部的实现。
- MFC ImageList控件的使用方法
- MFC中对Windows Media Player 控件使用个性皮肤
- MFC中使用GDI+绘制自定义的控件
- MFCGridCtrl控件的使用
- [VC/MFC]使用CTabCtrl控件实现属性页功能
- mfc中list控件的使用[cherryt笔记]
- MFC控件 状态条的简单介绍及使用 CStatusBar
- ASP.Net2.0小技巧 保持滚动条的位置 焦点移动到某个控件 $符号轻松的使用FindControl
- 使用MFC开发ActiveX控件时修改注册表来标记控件为安全
- MFC中edit控件的使用
- MFC控件 状态条的简单介绍及使用 CStatusBar
- MFC中ListControl控件的使用
- [VC/MFC]使用CTabCtrl控件实现属性页功能