2010-07-19 5 views
1

Я пытаюсь программно переместить полосу прокрутки окна. Я первым посылая:Движение прокрутки SetScrollPos и ​​SendMessage

SetScrollPos(handle, 1, position, true); 

, а затем следуют:

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

WPARAM правильно. Когда я проверяю spy ++, единственная разница между отправкой прокрутки с указанным выше кодом и фактической прокруткой - это то, что в фактической прокрутке уровень вложенности сообщений равен 1, но здесь он равен нулю. Но, кроме того, все остальные свойства и те же, WM_VSCROLL, handle, position, wparam и т. Д. Но программный свиток не перемещает панель. Любые предложения о том, что я делаю неправильно ???

P.S: Попытка сделать это с помощью приложения C# Чин!

EDIT: когда я передаю SB_BOTTOM в wparam, он берет меня правильно до конца свитка.

ответ

1

Лучше использовать функцию SetScrollInfo вместо ручной отправки сообщений.

+0

Я пробовал SetScrollInfo и, похоже, не работает для меня. SendMessage работает во всех случаях, кроме тех случаев, когда я пытаюсь отправить точную позицию с помощью SB_THUMBPOSITION как loword и позицию как hiword в wparam. – kambamsu

+0

Я считаю, что у вас неправильный p/invoke для SetScrollInfo или, возможно, его использование неправильно, потому что эта функция WinApi и 100% работает. Попробуйте сыграть с ним или покажите свои интерфейсы p/invoke для SetScrollInfo и примеров использования. – arbiter

Смежные вопросы