演示垂直滚动条CScrollbar控件的使用
2015-08-11 14:16
375 查看
/*
Title:演示垂直滚动条CScrollbar控件的使用
Description: OnVScroll demo
Environment: VS2010SP1
Author:kagula
Date:2015-8-11
*/
//set scrollbar knob position
void CtestScrollDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nMax;
int nMin;
pScrollBar->GetScrollRange(&nMin,&nMax);
int currentPos = pScrollBar->GetScrollPos();
int stride = (nMax-nMin)/10;
#ifdef _DEBUG
TRACE(L"pScrollBar->GetScrollPos()=%d\n",currentPos);
#endif
switch(nSBCode)
{
case SB_THUMBPOSITION://Drop knob
case SB_THUMBTRACK://Drag knob
pScrollBar->SetScrollPos(nPos);
break;
case SB_LINEUP: //click up arrow
case SB_PAGEUP: //stroke page up in keyboard
if((currentPos-stride)>nMin)
currentPos-=stride;
else
currentPos=nMin;
pScrollBar->SetScrollPos(currentPos);
break;
case SB_LINEDOWN: //click down arrow
case SB_PAGEDOWN: //stroke page down in keyboard
if((currentPos+stride)<nMax)
currentPos+=stride;
else
currentPos=nMax;
pScrollBar->SetScrollPos(currentPos);
break;
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
//create scrollbar controller
void CtestScrollDlg::OnBnClickedBtnAdd()
{
if (m_pScrollbar==nullptr)
{
CRect rect;
GetClientRect(rect);
rect.left = rect.right - GetSystemMetrics(SM_CXVSCROLL);
m_pScrollbar = new CScrollBar;
m_pScrollbar->Create(WS_VISIBLE|SB_VERT,rect,this,IDC_SCROLLBAR1);
m_pScrollbar->SetScrollRange(0,100);
}
}
//release scrollbar controller
void CtestScrollDlg::OnBnClickedBtnDel()
{
if (m_pScrollbar)
{
m_pScrollbar->DestroyWindow();
delete m_pScrollbar;
m_pScrollbar = nullptr;
}
}
void CtestScrollDlg::OnDestroy()
{
CDialogEx::OnDestroy();
OnBnClickedBtnDel();
}
Title:演示垂直滚动条CScrollbar控件的使用
Description: OnVScroll demo
Environment: VS2010SP1
Author:kagula
Date:2015-8-11
*/
//set scrollbar knob position
void CtestScrollDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nMax;
int nMin;
pScrollBar->GetScrollRange(&nMin,&nMax);
int currentPos = pScrollBar->GetScrollPos();
int stride = (nMax-nMin)/10;
#ifdef _DEBUG
TRACE(L"pScrollBar->GetScrollPos()=%d\n",currentPos);
#endif
switch(nSBCode)
{
case SB_THUMBPOSITION://Drop knob
case SB_THUMBTRACK://Drag knob
pScrollBar->SetScrollPos(nPos);
break;
case SB_LINEUP: //click up arrow
case SB_PAGEUP: //stroke page up in keyboard
if((currentPos-stride)>nMin)
currentPos-=stride;
else
currentPos=nMin;
pScrollBar->SetScrollPos(currentPos);
break;
case SB_LINEDOWN: //click down arrow
case SB_PAGEDOWN: //stroke page down in keyboard
if((currentPos+stride)<nMax)
currentPos+=stride;
else
currentPos=nMax;
pScrollBar->SetScrollPos(currentPos);
break;
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
//create scrollbar controller
void CtestScrollDlg::OnBnClickedBtnAdd()
{
if (m_pScrollbar==nullptr)
{
CRect rect;
GetClientRect(rect);
rect.left = rect.right - GetSystemMetrics(SM_CXVSCROLL);
m_pScrollbar = new CScrollBar;
m_pScrollbar->Create(WS_VISIBLE|SB_VERT,rect,this,IDC_SCROLLBAR1);
m_pScrollbar->SetScrollRange(0,100);
}
}
//release scrollbar controller
void CtestScrollDlg::OnBnClickedBtnDel()
{
if (m_pScrollbar)
{
m_pScrollbar->DestroyWindow();
delete m_pScrollbar;
m_pScrollbar = nullptr;
}
}
void CtestScrollDlg::OnDestroy()
{
CDialogEx::OnDestroy();
OnBnClickedBtnDel();
}
相关文章推荐
- 手机淘宝怎么推广?无线流量从0到1万 只需13步
- 初识BeeFramework
- 在android布局中使用include和merge标签
- PAT 1043. Is It a Binary Search Tree (25)
- git config
- Matlab程序设计:批量读取文件(Image, excel, txt .etc)
- Binder与AIDL服务
- iOS入门(三)循环结构
- 浅谈数据压缩简史
- MySqlite基本操作
- 异常与错误
- 【iOS开发系列】颜色渐变
- div和span的区别
- 安卓AndroidManifest.xml介绍
- 【安全】 xss跨站脚本攻击
- phpcms v9 企业黄页系统发布没有表单出现的解决方案
- ThinkPHP 模板 Volist 标签嵌套循环输出多维数组
- Linux 安装jdk
- java中多继承问题
- Oracle数据库优化