Word и WinApi - скроллинг

UnSmiLe
Дата: 19.06.2009 15:11:40
Всем привет, подскажите как с помощью WinApi изменить положение скролбара в word
Ф-я SetScrollPos(wnd, SB_CTL, NewPos, true) перемещает скролбар на указанную позицию, но текст остается в том же положении, т.е. не перескакивает вместе с скролбаром
Кроик Семён
Дата: 19.06.2009 15:29:27
может mouse_event в нужную точку скроллбара?
Кроик Семён
Дата: 19.06.2009 15:31:46
PS
либо WM_LBUTTONDOWN / WM_LBUTTONUP туда же
UnSmiLe
Дата: 19.06.2009 20:12:15
А других вариантов не будет?
Соколинский Борис
Дата: 19.06.2009 20:51:54
UnSmiLe
А других вариантов не будет?
Послать окнy WM_VSCROLL/WM_HSCROLL?
Где то там
Дата: 19.06.2009 23:14:28
Потребуется послать два сообщения: одно для SrollBar`а, другое окну содержащему текст. Примерно так:
SendMessage(Wnd, WM_VSCROLL, MakeWParam(wParam, Pos)), 0);
где wParam одно из значений:
SB_TOP, SB_BOTTOM, SB_LINEUP, SB_LINEDOWN, SB_PAGEUP, SB_PAGEDOWN, SB_THUMBTRACK
Pos - на сколько пиксел сдвинуть.
Senya_L
Дата: 19.06.2009 23:38:29
UnSmiLe
А других вариантов не будет?
Если не очень по времени напрягает, то поройся в объектной модели Word'а. Может что-нибудь и найдешь. Всем расскажешь потом :)
Соколинский Борис
Дата: 20.06.2009 00:02:27
Где то там
Потребуется послать два сообщения:
А первое нафига? Если в Ворде также как в VCL обработчик сделан, он сам позицию сколлбара обновит.
Где то там
Дата: 20.06.2009 01:05:48
Может обновит, а может и нет.
UnSmiLe
Дата: 20.06.2009 11:35:16
Вот что я выполняю
  if (SetScrollPos(FScrollId, SB_CTL, Pos, true) <> -1) then
    begin
     SendMessage(FScrollId, WM_VSCROLL, MakeWparam(SB_THUMBPOSITION, Pos), 0);
    end;
В SendMessage в качестве первого параментра указывал и GetParent(FScrollId), ноль по массе. Позиция скролбара перемещалась, а вот содержимое оствалось старым. А может есть такое сообщение для скролбара, которое заставит его выполнить перерисовку или обновление окна согласно новой позиции скрола?