Движение полосы прокрутки SetScrollPos и ​​SendMessage

Я пытаюсь программно переместить полосу прокрутки окна. Я сначала отправляю:

SetScrollPos(handle, 1, position, true);

а затем последовало:

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

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

P.S. Попытка сделать это из приложения С# Большое спасибо!

РЕДАКТИРОВАТЬ: когда я передаю SB_BOTTOM в wparam, он правильно переводит меня в конец прокрутки.


person kambamsu    schedule 19.07.2010    source источник


Ответы (1)


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

person arbiter    schedule 19.07.2010
comment
Я пробовал SetScrollInfo, и, похоже, он у меня не работает. SendMessage работает во всех случаях, кроме случаев, когда я пытаюсь отправить точную позицию с SB_THUMBPOSITION в качестве нижнего слова и позицию в качестве старшего слова в wparam. - person kambamsu; 19.07.2010
comment
Я считаю, что у вас неправильный p/invoke для SetScrollInfo, или, возможно, вы используете его неправильно, потому что эта функция WinApi и работает на 100%. Попробуйте поиграть с ним или покажите свои интерфейсы p/invoke для SetScrollInfo и примеры использования. - person arbiter; 19.07.2010