SW_SMOOTHSCROLL卷轴

发布于 2025-01-24 08:31:24 字数 1432 浏览 3 评论 0 原文

如何使用winapi scrollwindowex

sw_smoothscroll 滚动使用光滑的滚动。使用标志参数的HIWORD部分指示在毫秒中,应采用平滑滚动操作的时间。

独立 i输入的i作为时间 100 9999 ,它继续以相同的速度滚动,想询问是否有人知道如何正确使用此标志?

   case WM_VSCROLL:
   {
        RECT rc;
        int CurPos = scrollY;
        int TemPos = CurPos;
        switch (LOWORD(wParam))
        {
            case SB_TOP:            CurPos = 0; break;
            case SB_LINEUP:         CurPos = (CurPos > 0)? CurPos - 1 : 0; break;
            case SB_THUMBPOSITION:  CurPos = HIWORD(wParam); break;
            case SB_THUMBTRACK:     CurPos = HIWORD(wParam); break;
            case SB_LINEDOWN:       CurPos = (CurPos < 240)? CurPos + 1 : 240; break;
            case SB_BOTTOM:         CurPos = 240; break;
            case SB_ENDSCROLL:      break;
        }
    
      SetScrollPos(hwnd, SB_VERT, CurPos, TRUE);
      TemPos = CurPos - TemPos;

      UINT flags;
      flags = MAKELONG(SW_SCROLLCHILDREN | SW_SMOOTHSCROLL | SW_ERASE |
      SW_INVALIDATE, 100);
        
      ScrollWindowEx(hwnd, 0, -, NULL, NULL, NULL, NULL, flags);
    
      break;
   }

How to use the flag SW_SMOOTHSCROLL of the WinApi ScrollWindowEx?

SW_SMOOTHSCROLL
Scrolls using smooth scrolling. Use the HIWORD portion of the flags parameter to indicate how much time, in milliseconds, the smooth-scrolling operation should take.

Independent of what value I input as the time 100 or 9999, it continues scrolling with the same speed, would like to ask if someone knows how to properly use this flag?

   case WM_VSCROLL:
   {
        RECT rc;
        int CurPos = scrollY;
        int TemPos = CurPos;
        switch (LOWORD(wParam))
        {
            case SB_TOP:            CurPos = 0; break;
            case SB_LINEUP:         CurPos = (CurPos > 0)? CurPos - 1 : 0; break;
            case SB_THUMBPOSITION:  CurPos = HIWORD(wParam); break;
            case SB_THUMBTRACK:     CurPos = HIWORD(wParam); break;
            case SB_LINEDOWN:       CurPos = (CurPos < 240)? CurPos + 1 : 240; break;
            case SB_BOTTOM:         CurPos = 240; break;
            case SB_ENDSCROLL:      break;
        }
    
      SetScrollPos(hwnd, SB_VERT, CurPos, TRUE);
      TemPos = CurPos - TemPos;

      UINT flags;
      flags = MAKELONG(SW_SCROLLCHILDREN | SW_SMOOTHSCROLL | SW_ERASE |
      SW_INVALIDATE, 100);
        
      ScrollWindowEx(hwnd, 0, -, NULL, NULL, NULL, NULL, flags);
    
      break;
   }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文