SetScrollRange

函数功能:该函数设置所指定滚动条位置的最大最小值。
  函数原型:BOOL SetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,BOOL bRedraw);
  参数:
  hWnd:滚动条控制或带有标准滚动条窗体的句柄,由nBar参数值确定。
  nBar:指定滚动条将被设置。这个参数可以是下面值,含义如下:
  SB_CTL:设置滚动条控制的范围。而参数hwnd必须是滚动条控制的句柄。
  SB_HORZ:设置窗体上标准水平滚动翻页盒的范围。
  SB_VERT:设置窗体上标准垂直滚动翻页盒的范围。
  nMinPos:指定滚动位置的最小值。
  nMaxPos:指定滚动位置的最大值。
  bRedraw:指定滚动条是否被重画以反映变化。如果这个参数为TRUE,滚动条将被重化;如果为FALSE则不被重画。
  返回值:如果函数运行成功,返回值为非零;如果函数运行失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
  注意:可以使用setScrollRange函数把nMinPos和nMaxPos设置为一样的值从而隐藏起滚动条。在处理滚动条消息时,应用程序可以不用调用函数SetScrollRange来隐藏滚动条。新的应用程序使用函数ShowScrollBar来隐藏滚动条。
  如果调用函数SetScrollPos之后马上调用函数SetScrollRange,则SetScrollPos中的bRedraw参数一定为零,以防止滚动条被画两次。
  标准滚动条的缺省范围时0到100。滚动条控制的缺省值为NULL(参数nMinPos和nMaxPos的值均为零)。两个范围值之间的不同之处在于由参数nMinPos和nMaxPos指定的值不能超过MAXLONG的值。
  因为说明滚动条位置的消息WM_HSCROLL和 WM_VSCROLL只能为16位数据,那些只依赖于说明位置数据消息的应用程序在函数SetScrollRange的参数nMaxPos中有一个实际最大值65,535。但是,因为函数SetScrolllnfo,SetScrollPos, SetScrollRange,GetScrolllnfo,GetScrollPos,和GetScrollRange都支持32位的滚动条位置数据,所以有一个解决16位WM_HSCROLL和WM_VSCROLL消息阻碍的途径,请参见函数GetScrolllnfo的有关技术说明。
  速查:Windows NT 3.1、Windows CE 2.0以上,头文件:winuser.h;库文件:user32.lib。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使两个GridControl的滚动位置一致,可以使用GridControl的Scroll事件和SetScrollInfo函数。具体实现步骤如下: 1. 在两个GridControl的Scroll事件中,获取滚动条的位置信息: ``` private void gridControl1_Scroll(object sender, ScrollEventArgs e) { int scrollPos = GetScrollPos(gridControl1.Handle, SB_VERT); SetScrollPos(gridControl2.Handle, SB_VERT, scrollPos, true); SendMessage(gridControl2.Handle, WM_VSCROLL, (IntPtr)SB_THUMBPOSITION + 0x10000 * scrollPos, IntPtr.Zero); } private void gridControl2_Scroll(object sender, ScrollEventArgs e) { int scrollPos = GetScrollPos(gridControl2.Handle, SB_VERT); SetScrollPos(gridControl1.Handle, SB_VERT, scrollPos, true); SendMessage(gridControl1.Handle, WM_VSCROLL, (IntPtr)SB_THUMBPOSITION + 0x10000 * scrollPos, IntPtr.Zero); } ``` 2. 在窗体Load事件中,注册滚动条信息: ``` private void Form1_Load(object sender, EventArgs e) { SetScrollRange(gridControl1.Handle, SB_VERT, 0, 100, true); SetScrollRange(gridControl2.Handle, SB_VERT, 0, 100, true); } ``` 3. 在窗体关闭前,注销滚动条信息: ``` private void Form1_FormClosing(object sender, FormClosingEventArgs e) { SetScrollRange(gridControl1.Handle, SB_VERT, 0, 0, true); SetScrollRange(gridControl2.Handle, SB_VERT, 0, 0, true); } ``` 其中,GetScrollPos、SetScrollPos、SetScrollRange和SendMessage是Win32 API函数,定义如下: ``` [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int GetScrollPos(IntPtr hWnd, int nBar); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SetScrollRange(IntPtr hWnd, int nBar, int nMinPos, int nMaxPos, bool bRedraw); [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); ``` 其中,nBar参数表示滚动条类型,可以是SB_HORZ(水平滚动条)或SB_VERT(垂直滚动条);nPos参数表示滚动条的位置;nMinPos和nMaxPos参数表示滚动条的最小值和最大值;bRedraw参数表示是否重绘滚动条。wMsg参数表示消息类型,可以是WM_VSCROLL(垂直滚动条消息)或WM_HSCROLL(水平滚动条消息);wParam和lParam参数表示消息参数,具体取决于消息类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值