2010-07-19 137 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