CScrollBar是滚动条类,滚动条分为水平滚动条(Horizontal ScrollBar)和垂直滚动条(Vertical ScrollBar)。滚动条中包括一个滚动块,用于标识滚动条当前滚动的位置。
初始化滚动条初始化滚动条使用结构体SCROLLINFO,设置范围、初始位置等信息。
typedef struct tagSCROLLINFO {
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO, *LPSCROLLINFO;
OnInitDialog()代码:
SCROLLINFO si = { 0 };
si.cbSize = sizeof(si);
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
si.nMin = 0;
si.nMax = 100;
si.nPage = 10;
si.nPos = 30;
m_scrollbar.SetScrollInfo(&si);
m_static_scrollbar_pos = si.nPos;
UpdateData(FALSE);
滚动条范围0~100,初始位置设置为30。
给对话框添加滚动事件注意:窗口在对话框上点击鼠标右键-选择类向导。
设置左右箭头移动1个单位,翻页移动10个单位。
void CDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
SCROLLINFO si = g_si;
pScrollBar->GetScrollInfo(&si);
int new_pos = si.nPos;
switch (nSBCode) {
case SB_THUMBTRACK:
new_pos = nPos;
break;
case SB_LINELEFT:
new_pos--;
break;
case SB_LINERIGHT:
new_pos ;
break;
case SB_PAGELEFT:
new_pos -= si.nPage;
break;
case SB_PAGERIGHT:
new_pos = si.nPage;
break;
default:
break;
}
pScrollBar->SetScrollPos(new_pos);
m_static_scrollbar_pos = new_pos;
UpdateData(FALSE);
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved