Как двигать виды(BView) мышкой
bs 27 декабря, 2004 - 19:42.Потребовалась мне такая вишка, сделал так. Сначала регистрируем нажатие кнопки мыши (MouseDown()) потом, отслеживаем перемещение (GetMouse()или MouseMoved()) и премещаем вид(MoveTo()), кнопка отжалась(MouseUp())- пререстали двигать вид. Проблема в том что при перемещении вид калбасит во все стороны, аж рябит в глазах. Что я сдесь делаю не так.
Соорудил второй вариант- через механизм drag'n'drop, но чтука в том что, теперь виды можно выбрасывать за пределы окна, а этого не должно быть по задумке. Помогите.
Re: Как двигать виды(BView) мышкой
Может все же с BDragger разобраться, нельзя ли там ограничения ввести?
Если нет, то придется внимательно смотреть, как у тебя Invalidate и особенно Draw реализованы для всех BView. Особенно родительского, по которому таскаешь.
Обязательно должен быть грамотно реализован Draw(BRect).
app_server вызывает энное количество таких Draw® для родительского вида, где r — набор прямоугольников из того региона, который требуется перерисовать.
Если действительно будешь перерисовывать только «открывшиеся» части, кошмар должен уйти.
Отправить комментарий