CWnd::OnHScroll
창의 가로 스크롤 막대를 클릭할 때 프레임 워크는이 멤버 함수를 호출 합니다.
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 CMdiView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// Get the minimum and maximum scroll-bar positions.
int minpos;
int maxpos;
GetScrollRange(SB_HORZ, &minpos, &maxpos);
maxpos = GetScrollLimit(SB_HORZ);
// Get the current position of scroll box.
int curpos = GetScrollPos(SB_HORZ);
// Determine the new position of scroll box.
switch (nSBCode)
{
case SB_LEFT: // Scroll to far left.
curpos = minpos;
break;
case SB_RIGHT: // Scroll to far right.
curpos = maxpos;
break;
case SB_ENDSCROLL: // End scroll.
break;
case SB_LINELEFT: // Scroll left.
if (curpos > minpos)
curpos--;
break;
case SB_LINERIGHT: // Scroll right.
if (curpos < maxpos)
curpos++;
break;
case SB_PAGELEFT: // Scroll one page left.
{
// Get the page size.
SCROLLINFO info;
GetScrollInfo(SB_HORZ, &info, SIF_ALL);
if (curpos > minpos)
curpos = max(minpos, curpos - (int) info.nPage);
}
break;
case SB_PAGERIGHT: // Scroll one page right.
{
// Get the page size.
SCROLLINFO info;
GetScrollInfo(SB_HORZ, &info, SIF_ALL);
if (curpos < maxpos)
curpos = min(maxpos, curpos + (int) info.nPage);
}
break;
case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
curpos = nPos; // of the scroll box at the end of the drag operation.
break;
case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
curpos = nPos; // position that the scroll box has been dragged to.
break;
}
// Set the new position of the thumb (scroll box).
SetScrollPos(SB_HORZ, curpos);
CView::OnHScroll(nSBCode, nPos, pScrollBar);
}
요구 사항
헤더: afxwin.h