afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
Параметры
nSBCode
Определяет код слайдера, который указывает запроса пользователя на прокрутку. Этот параметр может быть один из следующего:
SB_LEFT Прокрутка к далеко в лево. SB_ENDSCROLL Конечная прокрутка. SB_LINELEFT Левая Прокрутка. SB_LINERIGHT Листают право. SB_PAGELEFT Листают в лево одну страницу. SB_PAGERIGHT Листают одну страницу право. SB_RIGHT Прокрутка далекое в право. SB_THUMBPOSITION Прокрутка к абсолютной позиции. Текущая позиция определена nPos параметром. SB_THUMBTRACK Перетаскивают бегунок к определенной позиции. Текущая позиция определена nPos параметром.
nPos
Определяет позицию бегунка если код слайдера - SB_THUMBPOSITION или SB_THUMBTRACK, иначе не используеться. В зависимости от начального диапазона прокрутки, nPos может быть отрицателен и должен приводиться к int в случае необходимости.
pScrollBar
Если сообщение прокрутки исходило из элемента управления слайдера, содержит указатель на элемент управление. Если пользователь нажал слайдер окна, этот параметр NULL. Указатель может быть временный и не должен быть сохранен для более позднего использования.
Замечания
Рамка вызывает эту функцию, когда пользователь нажимает горизонтальный слайдер окна. SB_THUMBTRACK код слайдера обычно используется прикладными программами, которые дают некоторую обратную связь, в то время как бегунок перемещается. Если прикладная программа листает содержание управляемое слайдером, это должно также сбросить позицию бегунка с SetScrollPos функцией.
Эта функция вызвана рамкой, чтобы позволить Вашей прикладной программе обрабатывать сообщение Windows. Параметры, переданные к Вашей функции отражают параметры, полученные рамкой, когда сообщение было получено. Если Вы вызываете реализацию базового класса этой функции, та реализация использует параметры, первоначально переданные с сообщением и не параметры, которые Вы обеспечиваете функции.
Пример
void CMyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // Получите минимальные и максимальные позиции слайдера. int minpos; int maxpos; pScrollBar->GetScrollRange(&minpos, &maxpos); maxpos = pScrollBar->GetScrollLimit(); // Получите текущую позицию бегунка. int curpos = pScrollBar->GetScrollPos(); // Определите новую позицию бегунка. switch (nSBCode) { case SB_LEFT: // Прокрутка далеко в лево. curpos = minpos; break; case SB_RIGHT: // Прокрутка далеко в право. curpos = maxpos; break; case SB_ENDSCROLL: // Конечная прокрутка. break; case SB_LINELEFT: // Левая Прокрутка. if (curpos > minpos) curpos--; break; case SB_LINERIGHT: // Правaя Прокруткa. if (curpos < maxpos) curpos++; break; case SB_PAGELEFT: // Листайте в лево на одну страницу. { // Получите размер страницы. SCROLLINFO info; pScrollBar->GetScrollInfo(&info, SIF_ALL); if (curpos > minpos) curpos = max(minpos, curpos - (int) info.nPage); } break; case SB_PAGERIGHT: //Листайте одну страницу в право. { // Получите размер страницы. SCROLLINFO info; pScrollBar->GetScrollInfo(&info, SIF_ALL); if (curpos < maxpos) curpos = min(maxpos, curpos + (int) info.nPage); } break; case SB_THUMBPOSITION: // Прокруткa к абсолютной позиции. nPos - позиция curpos = nPos; // Из бегунка в конце перетащенной операции. break; case SB_THUMBTRACK: // Перетащите бегунок к определенной позиции. nPos - curpos = nPos; // Позиция, к которой бегунок перемещен. break; } // Установите новую позицию бегунка pScrollBar->SetScrollPos(curpos); CView::OnHScroll(nSBCode, nPos, pScrollBar); }