2010-07-19 132 views
1

我试图以编程方式移动窗口的滚动条。我首先发送:滚动条移动SetScrollPos和SendMessage

SetScrollPos(handle, 1, position, true); 

,然后依次为:

SendMessage(handle, 0x0115, wparam, new IntPtr(0)); 

的WPARAM是正确的。当我通过spy ++进行检查时,与上述代码一起发送滚动和实际滚动的唯一区别在于,在实际滚动中,消息嵌套级别为1,但此处为零。但除此之外,所有其他属性和WM_VSCROLL,句柄,位置,wparam等都是相同的。但是,程序化滚动不会移动条。 什么即时通讯做什么错误的任何建议?

P.S:试图从c#应用程序中做到这一点 谢谢!

编辑:当我将SB_BOTTOM传递给wparam时,它正确地将我带到滚动的末尾。

回答

1

最好使用SetScrollInfo函数,而不是手动发送消息。

+0

我试过SetScrollInfo,它似乎没有为我工作。 SendMessage适用于所有情况,除了我尝试发送SB_THUMBPOSITION作为loword和位置作为wparam中hiword的位置。 – kambamsu 2010-07-19 12:27:14

+0

我相信你对SetScrollInfo有错误的p/invoke,或者错误地使用它,因为这个函数是WinApi并且100%正常工作。尝试使用它,或显示您的p/invoke接口SetScrollInfo和用法示例。 – arbiter 2010-07-19 13:48:48