对话框滚动条 (推荐)
来源:互联网 发布:杰拉米格兰特体测数据 编辑:程序博客网 时间:2024/04/29 14:26
出处:http://wenku.baidu.com/link?url=t8Y1cz6RGlNKTtu5HT76JI_9pw9zpEl4m3Cxy4zjk_Le2hSZ9LPeAS7nKxnXlhRyhjCbl66SPZR3Ou-GtJn1RaKIhwQM8Xx1mmZyXeIu8qG
要点: 使用GetScrollPos() 获取当前滑块位置,使用SetScrollPos()设置滑块位置,使用ScrollWindow()来滚动客户区,
不要使用OnHScroll() 方法中的pScrollBar参数,因为对话框好像m_HWnd变量是空,所以这个参数的方法
pScrollBar->GetScrollPos() / pScrollBar->SetScrollPos() 有问题.
并且在对话框的属性页中有垂直/水平滚动条的属性选项,在这里添加的滚动条在项目中是看不到的ID的,在对话框上也不能选中添加 变量的.
BOOL CTestDlgDlg::OnInitDialog()
{
SetScrollRange(SB_HORZ, 0, 100);
SetScrollRange(SB_VERT, 0, 100);
}
void CTestDlgDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nCurPos;
int nPrevPos;
CRect rect;
GetClientRect(&rect);
nPrevPos = GetScrollPos(SB_HORZ);
nCurPos = nPrevPos;
switch(nSBCode)
{
case SB_LEFT:
SetScrollPos(SB_HORZ, 0);
ScrollWindow(0, 0);
break;
case SB_RIGHT:
SetScrollPos(SB_HORZ, 100);
ScrollWindow(-rect.Width(), 0);
break;
case SB_PAGELEFT:
nCurPos = nPrevPos - 10;
if(nCurPos < 0)
nCurPos = 0;
SetScrollPos(SB_HORZ, nCurPos);
break;
case SB_PAGERIGHT:
nCurPos = nPrevPos + 10;
if(nCurPos > 100)
nCurPos = 100;
SetScrollPos(SB_HORZ, nCurPos);
break;
case SB_THUMBPOSITION:
SetScrollPos(SB_HORZ, nPos);
break;
case SB_THUMBTRACK:
break;
case SB_LINELEFT:
nCurPos = nPrevPos - 2;
if(nCurPos < 0)
nCurPos = 0;
SetScrollPos(SB_HORZ, nCurPos);
break;
case SB_LINERIGHT:
nCurPos = nPrevPos + 2;
if(nCurPos > 100)
nCurPos = 100;
SetScrollPos(SB_HORZ, nCurPos);
break;
case SB_ENDSCROLL:
break;
}
nCurPos = GetScrollPos(SB_HORZ);
ScrollWindow(rect.Width() * (nPrevPos - nCurPos) / 100, 0);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CTestDlgDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nCurPos;
int nPrevPos;
CRect rect;
GetClientRect(&rect);
nPrevPos = GetScrollPos(SB_VERT);
nCurPos = nPrevPos;
switch(nSBCode)
{
case SB_LEFT:
SetScrollPos(SB_VERT, 0);
ScrollWindow(0, 0);
break;
case SB_RIGHT:
SetScrollPos(SB_VERT, 100);
ScrollWindow(-rect.Height(), 0);
break;
case SB_PAGELEFT:
nCurPos = nPrevPos - 10;
if(nCurPos < 0)
nCurPos = 0;
SetScrollPos(SB_VERT, nCurPos);
break;
case SB_PAGERIGHT:
nCurPos = nPrevPos + 10;
if(nCurPos > 100)
nCurPos = 100;
SetScrollPos(SB_VERT, nCurPos);
break;
case SB_THUMBPOSITION:
SetScrollPos(SB_VERT, nPos);
break;
case SB_THUMBTRACK:
break;
case SB_LINELEFT:
nCurPos = nPrevPos - 2;
if(nCurPos < 0)
nCurPos = 0;
SetScrollPos(SB_VERT, nCurPos);
break;
case SB_LINERIGHT:
nCurPos = nPrevPos + 2;
if(nCurPos > 100)
nCurPos = 100;
SetScrollPos(SB_VERT, nCurPos);
break;
case SB_ENDSCROLL:
break;
}
nCurPos = GetScrollPos(SB_VERT);
ScrollWindow(0, rect.Height() * (nPrevPos - nCurPos) / 100);
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
- 对话框滚动条 (推荐)
- 关于对话框滚动条,
- 关于对话框滚动条
- 对话框滚动条
- Windows对话框和滚动条
- VC 对话框添加滚动条
- MFC,对话框滚动条使用
- MFC对话框处理滚动条
- windows mobile 学习笔记--对话框滚动条(1)
- 滚动条控件(模式对话框+后台线程处理)
- mfc 切割窗口加入对话框资源(去掉滚动条)
- 给对话框应用程序添加滚动条+处理过界空白区问题(滚动块太小问题)
- PocketPC中对话框的滚动条问题
- 对话框中滚动条方便用
- 对话框实现水平垂直滚动条
- 带滚动条的对话框类
- 对话框中滚动条方便用
- 对话框中滚动条方便用
- hession学习笔记
- 关于3dsmax出现“应用程序无法正常启动0xc000007b”的解决方案
- Expression 获取,设置属性的值
- OpenStack-Cinder 环境安装
- Java编程思想(十一) —— 通过异常处理错误(下)
- 对话框滚动条 (推荐)
- IO流的一些小Demo
- birt报表隔行换色
- 如何给企业制定愿景或目标
- 运输层相关协议的学习笔记
- ibatis maxTransactions 参数配置致使线程堵塞
- uml--依赖和关联的区别
- Javascript定义函数的几种方式
- ios 判断,qq,银行卡,手机号,邮编,生日,数字,字符串,护照, email