ScrollBarInfo不适合我

时间:2016-04-25 22:45:43

标签: c# winforms

我搜索了我可能找到的所有信息,并查看了我发现的几个例子,我认为我做的每件事都是正确的,但结果令人失望。 我是完成目标的最后一站。基本上,我现在需要做的就是找到滚动条到达顶部或停止的时候。

首先,我确保我正在处理正确的窗口。 找到窗口后,我会尝试获取信息。

// get scrollbar info
SCROLLINFO scrollinfo = new SCROLLINFO();
scrollinfo.cbSize = (uint)Marshal.SizeOf(scrollinfo);
scrollinfo.fMask = SIF_ALL; // Get all the scroll bar information.
bool horBar = GetScrollInfo1(windowHandle, SB_HORZ, out scrollinfo);
Console.WriteLine(horBar);
bool vertBar = GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
Console.WriteLine(vertBar);
Console.WriteLine(scrollinfo.nPage + ", " + scrollinfo.nPos);

两者都返回False和0。

// Get current scroller position
Orientation scriptWinSBar = Orientation.Vertical;
GetScrollPos(windowHandle, scriptWinSBar);

这是我唯一一个非零的地方。这将返回1,这是正确的,因为窗口不包含水平条(返回零)。

if ((int)scriptWinSBar > 0)
{
      scrollinfo.fMask = SIF_POS;
      GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
      Console.WriteLine("pos; " + scrollinfo.nPos.ToString());

      scrollinfo.fMask = SIF_RANGE;
      GetScrollInfo1(windowHandle, SB_VERT, out scrollinfo);
      Console.WriteLine("min,max; " + scrollinfo.nMin.ToString() + ", " + scrollinfo.nMax.ToString());
 }
 Console.WriteLine("  scriptWinSBar : " + (int)scriptWinSBar);

这里所有的结果都是零, POS机; 0 最小值,最大值; 0,0   scriptWinSBar:1

...虽然滚动条位于底部或附近。 我不确定我做错了,还是我做的事情不对。 有人可以帮我解决这个问题。或者可能提供一个示例,说明如何获取滚动条的位置,或者知道它是滚动还是已停止滚动?感谢。

0 个答案:

没有答案