pocket pc 5.0下对对话框ScrollBar消息的响应处理

    技术2022-05-11  80

    void CSettingDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) {  CRect rc;  GetWindowRect(&rc);  SCROLLINFO si = {sizeof(SCROLLINFO),                      SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS, 0, 0, 0, 0,                      0};  ::GetScrollInfo (m_hWnd, SB_VERT, &si);  int iInterval = 0;  int nTemp = si.nPos;     switch (nSBCode)     {  case SB_LINEUP:   nTemp = nTemp - 20;   if(nTemp < MIN_VSCROLL_VALUE)   {    nTemp = MIN_VSCROLL_VALUE;   }   break;  case SB_PAGEUP:   nTemp = nTemp - 60;   if(nTemp < MIN_VSCROLL_VALUE)   {    nTemp = MIN_VSCROLL_VALUE;   }   break;  case SB_LINEDOWN:   nTemp = nTemp + 20;   if(nTemp > MAX_VSCROLL_VALUE)   {    nTemp = MAX_VSCROLL_VALUE;   }   break;  case SB_PAGEDOWN:   nTemp = nTemp + 60;   if(nTemp > MAX_VSCROLL_VALUE)   {    nTemp = MAX_VSCROLL_VALUE;   }   break;  case SB_TOP:   nTemp = MIN_VSCROLL_VALUE;   break;  case SB_BOTTOM:   nTemp = MAX_VSCROLL_VALUE;   break;  case SB_THUMBTRACK:     case SB_THUMBPOSITION:           nTemp = si.nTrackPos;     if(nTemp > MAX_VSCROLL_VALUE)     {      nTemp = MAX_VSCROLL_VALUE;     }           break;     }  iInterval = nTemp - si.nPos;  if(0 != iInterval)  {   si.fMask = SIF_POS;   si.nPos = nTemp;   ::SetScrollInfo (m_hWnd, SB_VERT, &si, TRUE);      ScrollWindowEx(0, -iInterval, NULL, NULL,       NULL, NULL, SW_SCROLLCHILDREN);  }    Invalidate();   }

     水平方向上的依次类推。


    最新回复(0)