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_THUMBPOSITIONSB_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);
}

需求

Header: afxwin.h

請參閱

參考

CWnd 類別

階層架構圖表

CWnd::SetScrollPos

CWnd::OnVScroll

WM_HSCROLL