一文详解MFC滚动条

一文详解MFC滚动条

首页休闲益智滚动白块更新时间:2024-06-01
滚动条CScrollBar

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