Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
1

Передвижение окна при нажатии клавишей мышки и перетягивании

24.07.2015, 20:45. Просмотров 1005. Ответов 11
Метки нет (Все метки)

Как на c++ сделать передвижение окна при нажатие и перетягивание клавишей мышки в опредильонной области окна?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2015, 20:45
Ответы с готовыми решениями:

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что...

Как сделать так, чтобы 2 окна двигались синхронно при перетягивании главного?
Есть два окошка, Form1 и Form2. Мне нужно, чтобы при перемещении первого перемещалось и второе?

Почему при на нажатии левой клавишей мыши на QComboBox не срабатывает mousePressEvent
Привет всем. Подскажите почему при на нажатии левой клавишей мыши на QCombobox не срабатывает...

Передвижение картинки при нажатии на экран
подскажите как сделать чтоб картинка начала двигаться в сторону нажатия экрана public class...

11
Don't worry, be happy
16917 / 9793 / 1886
Регистрация: 27.09.2012
Сообщений: 24,271
Записей в блоге: 2
24.07.2015, 21:22 2
Цитата Сообщение от access-to-only Посмотреть сообщение
Как на c++ сделать
Да как угодно...

Какая ОС? Какими средствами пользуетесь? Или Вам тут для всех платформ и фреймворков способы расписывать?
1
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
24.07.2015, 21:32 3
Лучший ответ Сообщение было отмечено access-to-only как решение

Решение

В обработчике сообщений:
C++
1
2
3
4
5
        case WM_LBUTTONDOWN:
            if ( ... если указывающее устройство попадает в нужную область ... ) {
                PostMessage( hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0 );
            }
            return 0;
1
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
24.07.2015, 21:59  [ТС] 4
Я не знаю как описать область, на которую нужно нажымать и перитаскивать. Не могли б вы мне помочь с етим?
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
24.07.2015, 22:02 5
А как у тебя область задаётся?
1
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
24.07.2015, 22:05  [ТС] 6
Пока што никак, я и надеялся на помошь?
0
Don't worry, be happy
16917 / 9793 / 1886
Регистрация: 27.09.2012
Сообщений: 24,271
Записей в блоге: 2
24.07.2015, 22:09 7
Цитата Сообщение от access-to-only Посмотреть сообщение
Пока што никак
ну так если у Вас просто "область", то смотрите, попадает ли курсор в эту область (тут просто геометрия "принадлежит ли точка области") и если попадает, то уже делайте перетаскивание.
1
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
24.07.2015, 22:11 8
Координаты (клиентские, относительно левого верхнего угла клиентской области) указателя мыши получаются так:
C++
1
2
3
4
5
6
        case WM_LBUTTONDOWN: {
            PostMessage( hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0 );
            int x = LOWORD( lParam );
            int y = HIWORD( lParam );
            // ...
        } break;
Думаю что не стоит объяснять элементарные вещи, а именно, как определить попадает ли точка в прямоугольник или нет.
2
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
24.07.2015, 22:51  [ТС] 9
Спасибо што помогли, а дальше буду думать. Если кому будет нужно (видел много тем з схожыми вопросами), то я могу когда дороботаю скинуть исходник, на тему "создание своего стиля окна".
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
24.07.2015, 22:57 10
Я немного перепутал с порядком строк.
C++
1
2
3
4
5
6
7
8
        case WM_LBUTTONDOWN: {
            int x = LOWORD( lParam );
            int y = HIWORD( lParam );
            if ( ... ) {
                // двигаем
                PostMessage( hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0 );
            }
        } break;
А то что дальше готов подумать сам - это правильно.
1
0 / 0 / 0
Регистрация: 21.07.2015
Сообщений: 19
25.07.2015, 06:36  [ТС] 11
Ничево страшного, все бывает ошыбаемся!
0
Модератор
Эксперт С++
10147 / 8497 / 5164
Регистрация: 18.12.2011
Сообщений: 22,734
25.07.2015, 07:06 12
Двигать лучше с помощью функции
BOOL MoveWindow( HWND hWnd,
int X,
int Y,
int nWidth,
int nHeight,
BOOL bRepaint
);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2015, 07:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

При нажатии кнопки закрытия окна, оно должно сворачиваться, а при нажатии на сворачивание - закрываться
привет всем)) задача такая: при нажатии кнопки закрытия окна, оно должно сворачиваться, а при...

Передвижение прямоугольника по экрану при нажатии клавиш перемещения
Ребят, нужно разработать программу передвижения прямоугольника по экрану при нажатии клавиш...

Вылет при нажатии мышки
Возникла такая проблема,что при нажатии на любое место на компьютере,будь это ссылка в...

При нажатии мышки не срабатывает FormClick
Что нужно добавить чтоб работала ета процедура?????Ато при нажатии мышки вобще ничё не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.