Как двигать содержимое окна скроллбаром?

Тема в разделе "WASM.BEGINNERS", создана пользователем drem1lin, 15 янв 2018.

Метки:
  1. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Всем привет! Я тут решил разобраться со скроллбаром и запутался. Я создал окно в котором много подокон и они занимают площадь больше чем видимая часть окна. Я хочу опуская скроллбар видеть как кнопки едут наверх и наоборот, но прочитав много разной информации запутался. Я создал скролkбар и получаю сообщения с некими параметрами о действиях на нем, дальше что мне надо сделать? сдвинуть кнопки так как говорит скроллбар? Может у кого есть маленький проект с похожей функцией что бы разобраться?
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Да, и еще вызвать SetScrollInfo(), чтобы изменить состояние (позицию) скроллбара. Но для этого надо помнить начальные координаты всех кнопок, так что лучше создать еще одно окно-контейнер, на котором будут находится кнопки, и по приходу WM_VSCROLL двигать только это окно-контейнер.
     
    Mikl___ нравится это.
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Я думаю пусть ТС делает велосипед. А потом как на грабли наступит - перейдет на контейнеры ) Ценный опыт будет
     
  4. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    А вот вы плохо обо мне думаете! Окно контейнер я сделал можно сказать сразу, но вот как его двигать не понял:blush:
     
  5. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    А в качестве контейнера разве не может выступать контролл со штатным скроллбаром ?
     
  6. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Код (C):
    1. MoveWindow (hwndContainer, 0, -scrollPos, containerWidth, containerHeight, TRUE);
     
  7. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    HESH,
    Штатный скроллбар на винапи - это полуфабрикат. Он только уведомляет о том, что юзер двигает ползунок, но если это сообщение должным образом не обработать, то ползунок при отпускании вернется в первоначальное положение.
     
  8. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Типичная событийная модель..
    Надо все по правилам делать :)

    P.S. Я в таких случаях беру софт с реализованной фишкой и в отладчик его.. Смотрю по какому принципу работает и пытаюсь сделать по подобию. По-моему, в проте orien много композитных контроллов, можно попробовать расковырять.
     
  9. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Речь не о том. Если сравнить, к примеру, с контролом "слайдер", то его можно кинуть на окно и он будет полноценно работать даже если мы на его события не реагируем. А скроллбар - нет. Индусы, похоже, его просто не дописали, а потом исправлять не стали для обратной совместимости :)