标准滚动条算法 


#define MINSIZE 20

OnSize(O,G,D,H)
{
  if (H>D)
  {
    if ((H-O)<D)
    {
      O=H-D
      SetViewOffset(-O)
    }

    由 B:G=D:H 得 B=GD/H

    if (B<MINSIZE) B=MINSIZE

    由 P:(G-B)=O:(H-D) 得 P=O(G-B)/(H-D)

    SetScrollButtonTop(P)
    SetScrollButtonHeight(B)

    if(!IsScrollVisible())
    {
      ShowScroll()
    }
  }
  else
  {
    SetViewOffset(-O)
    HideScroll()
  }
  ReDraw()
}

OnScroll(G,D,H,P,B)
{
  由 P:(G-B)=O:(H-D) 得 O=P(H-D)/(G-B)
  SetViewOffset(-O)
  ReDraw()
}










本文转自 yntmdr 51CTO博客,原文链接:http://blog.51cto.com/yntmdr/1657868,如需转载请自行联系原作者

相关文章:

  • 2022-12-23
  • 2021-12-02
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-01
  • 2021-11-02
  • 2021-08-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案