Windows编程入门(7)--ScrollBar控件的使用
2013-01-24 22:15
281 查看
原文链接http://blog.csdn.net/acdnjjjdjkdckjj/article/details/6024008
在对话框中添加一个垂直滚动条控件,关联一个变量CScrollBar m_vScroll,在头文件定义CRect rt_mvScroll保存滚动条控件的位置,
定义一个int nVscroll,保存滑块的位置在OnInitDialog()里面添加
[c-sharp:firstline[1]]
view plaincopyprint?
CRect rect;
GetClientRect(rect);
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);;
si.nMin = 0;
si.nMax = 100;
si.nPage = 5 ;
si.fMask = SIF_POS|SIF_RANGE|SIF_PAGE;
m_vScroll.SetScrollInfo(&si, TRUE);
m_vScroll.GetWindowRect(rt_mvScroll);//滚动条所在的位置
ScreenToClient(rt_mvScroll);
响应WM_MOUSEWHELL消息
[cpp:firstline[1]]
view plaincopyprint?
BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//向下滚
if (zDelta == -120)
{
nVscroll += 10;
OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
}
else if (zDelta == 120)
{
nVscroll -= 10;
OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
}
m_vScroll.MoveWindow(rt_mvScroll, TRUE);
return CDialog::OnMouseWheel(nFlags, zDelta, pt);
}
BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//向下滚
if (zDelta == -120)
{
nVscroll += 10;
OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
}
else if (zDelta == 120)
{
nVscroll -= 10;
OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
}
m_vScroll.MoveWindow(rt_mvScroll, TRUE);
return CDialog::OnMouseWheel(nFlags, zDelta, pt);
}
在对话框中添加一个垂直滚动条控件,关联一个变量CScrollBar m_vScroll,在头文件定义CRect rt_mvScroll保存滚动条控件的位置,
定义一个int nVscroll,保存滑块的位置在OnInitDialog()里面添加
[c-sharp:firstline[1]]
view plaincopyprint?
CRect rect;
GetClientRect(rect);
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);;
si.nMin = 0;
si.nMax = 100;
si.nPage = 5 ;
si.fMask = SIF_POS|SIF_RANGE|SIF_PAGE;
m_vScroll.SetScrollInfo(&si, TRUE);
m_vScroll.GetWindowRect(rt_mvScroll);//滚动条所在的位置
ScreenToClient(rt_mvScroll);
] [cpp:firstline[1]] view plaincopyprint? void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO si; si.cbSize = sizeof(si); m_vScroll.GetScrollInfo(&si, SIF_POS|SIF_PAGE|SIF_RANGE); nVscroll = si.nPos; switch(nSBCode) { case SB_LINEDOWN: nVscroll += 10; if (nVscroll > (si.nMax - si.nMin - si.nPage )) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_LINEUP: nVscroll -= 10; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_PAGEDOWN: nVscroll += si.nPage; if (nVscroll > (si.nMax - si.nMin - si.nPage)) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_PAGEUP: nVscroll -= si.nPage; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_THUMBTRACK: nVscroll = nPos; break; } ScrollWindow(0, -(nVscroll -si.nPos) , NULL ,NULL); m_vScroll.MoveWindow(rt_mvScroll, TRUE); si.fMask = SIF_POS; si.nPos = nVscroll; m_vScroll.SetScrollInfo(&si, TRUE); CDialog::OnVScroll(nSBCode, nPos, pScrollBar); } void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO si; si.cbSize = sizeof(si); m_vScroll.GetScrollInfo(&si, SIF_POS|SIF_PAGE|SIF_RANGE); nVscroll = si.nPos; switch(nSBCode) { case SB_LINEDOWN: nVscroll += 10; if (nVscroll > (si.nMax - si.nMin - si.nPage )) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_LINEUP: nVscroll -= 10; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_PAGEDOWN: nVscroll += si.nPage; if (nVscroll > (si.nMax - si.nMin - si.nPage)) { nVscroll = si.nMax - si.nMin - si.nPage; } break; case SB_PAGEUP: nVscroll -= si.nPage; if (nVscroll < si.nMin) { nVscroll = 0; } break; case SB_THUMBTRACK: nVscroll = nPos; break; } ScrollWindow(0, -(nVscroll -si.nPos) , NULL ,NULL); m_vScroll.MoveWindow(rt_mvScroll, TRUE); si.fMask = SIF_POS; si.nPos = nVscroll; m_vScroll.SetScrollInfo(&si, TRUE); CDialog::OnVScroll(nSBCode, nPos, pScrollBar); }
响应WM_MOUSEWHELL消息
[cpp:firstline[1]]
view plaincopyprint?
BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//向下滚
if (zDelta == -120)
{
nVscroll += 10;
OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
}
else if (zDelta == 120)
{
nVscroll -= 10;
OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
}
m_vScroll.MoveWindow(rt_mvScroll, TRUE);
return CDialog::OnMouseWheel(nFlags, zDelta, pt);
}
BOOL CScrollDemoDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//向下滚
if (zDelta == -120)
{
nVscroll += 10;
OnVScroll(SB_PAGEDOWN, nVscroll, &m_vScroll);
}
else if (zDelta == 120)
{
nVscroll -= 10;
OnVScroll(SB_PAGEUP, nVscroll, &m_vScroll);
}
m_vScroll.MoveWindow(rt_mvScroll, TRUE);
return CDialog::OnMouseWheel(nFlags, zDelta, pt);
}
相关文章推荐
- VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- Windows编程入门(8)--MFC中ListBox控件的使用
- Windows编程入门(9)--MFC中的ComboBox的使用
- Windows编程入门(6)--MFC常用控件
- VS2010/MFC 入门编程十六(Check Box控件使用)
- 描述性编程中windows控件使用问题
- VS2010/MFC编程入门之三(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)
- VS2010/MFC入门编程二十一(滚动条控件Scroll Bar 的使用)
- VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- VC++ MFC编程中 IP控件的使用
- 如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页
- 在IE浏览器中使用Windows窗体控件(三)
- windows下ruby使用tk编程的方法
- Windows界面编程第五篇 静态控件背景透明化
- 深入浅出C#2008从入门到提高Step By Step(五)Windows应用程序常用控件类(4)-CheckBox
- Android编程 - WebView控件基本使用方法
- [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件