CWnd::OnHScroll
フレームワークは、ユーザーがウィンドウに水平スクロール バーをクリックすると、このメンバー関数を呼び出します。
afx_msg void OnHScroll(
UINT nSBCode,
UINT nPos,
CScrollBar* pScrollBar
);
パラメーター
nSBCode
ユーザーの要求を示すスクロール バー コードを指定します。このパラメーターには、次のいずれかの値:左端へのSB_LEFT にスクロールします。
SB_ENDSCROLL の末尾にスクロールします。
残りのSB_LINELEFT にスクロールします。
SB_LINERIGHT のスクロールの権限。
左にスクロールSB_PAGELEFT の 1 ページ。
SB_PAGERIGHT のスクロール 1 ページの権限。
右端への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