Главная

Как двигать виды(BView) мышкой

Потребовалась мне такая вишка, сделал так. Сначала регистрируем нажатие кнопки мыши (MouseDown()) потом, отслеживаем перемещение (GetMouse()или MouseMoved()) и премещаем вид(MoveTo()), кнопка отжалась(MouseUp())- пререстали двигать вид. Проблема в том что при перемещении вид калбасит во все стороны, аж рябит в глазах. Что я сдесь делаю не так.

Соорудил второй вариант- через механизм drag'n'drop, но чтука в том что, теперь виды можно выбрасывать за пределы окна, а этого не должно быть по задумке. Помогите.

Re: Как двигать виды(BView) мышкой

Может все же с BDragger разобраться, нельзя ли там ограничения ввести?
Если нет, то придется внимательно смотреть, как у тебя Invalidate и особенно Draw реализованы для всех BView. Особенно родительского, по которому таскаешь.
Обязательно должен быть грамотно реализован Draw(BRect).
app_server вызывает энное количество таких Draw® для родительского вида, где r — набор прямоугольников из того региона, который требуется перерисовать.
Если действительно будешь перерисовывать только «открывшиеся» части, кошмар должен уйти.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
7
V
G
g
y
G
Enter the code without spaces and pay attention to upper/lower case.