![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Нужно перетащить кнопку.Если альтернатива отслеживанию MOUSE_MOVE?Может какой-то drop существует
![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Stalk |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 24.1.2004 Где: Украина, харьков Репутация: нет Всего: нет |
Я обычно ставлю очень маленький таймер(11-23 миллисек) и получаю позицию крысы. Интересная штука: вожу мышей по окну-все ок(есть маусмув), вожу мышей по кнопке в окне-нету маусмува! Кто-нить объяснит мне почему?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
OnDragEnter и OnDragLeave, если мне память не изменяет... Но рисовать перетаскиваемый объект рядом с курсором мыши всё равно придётся вручную! -------------------- ![]() |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Ладно,пошел я в обход.При нажатии ставлю флаг на разрешении перетаскивания кнопки.MOUSE_MOVE тащу.При отпускании флаг ставлю на FALSE.Но не перетаскивается
![]() Кто-то подсказал,что это надо обрабатывать в PreTransletMessage .Не знаю,не пробовал... -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Anklav |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
Если я не ошибаюсь, то можно в обработчике события WM_NCHITTEST параметру Message.Result присвоить значение HTCAPTION
(это если используешь VCL, хотя для MFC почти то же самое) Это сообщение отредактировал(а) Anklav - 4.4.2004, 23:39 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Coocky, код - в студию ! А при отпускании что происходит ? Надо бы MoveWindow вызвать с новыми координатами...
Anklav, в VCL не разбираюсь, но в MFC не видел никакого HTCAPTION -------------------- ![]() |
|||
|
||||
Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
А при отпускании ставится флаг FALSE на MoveWindow.Что б при перемещении мыши,при НЕ нажатой кнопке,перемещение последней не происходило(фух сказал... ![]() Скорей всего проблема ,что нажатие кнопки не отрабатывает сообщение о нажатии кнопки ![]() Так же,как и PtInRect не работает на Button_e ![]()
Ну как ты мог такое подумать обо мне ![]()
Ага вот только права члена клуба получу ![]() ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||||
|
|||||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Stalk
Вот и у него проблема.... Coocky
![]() Это сообщение отредактировал(а) Coocky - 5.4.2004, 12:28 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
Anklav |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
Если сделать так:
то такое окно можно будет таскать за любую часть. Аналогично и для и для CButton (нужно только вместо CWnd подставит CButton) Это сообщение отредактировал(а) Anklav - 5.4.2004, 17:00 |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
1. Кнопка то же окно. на firststeps.ru была статья таскаем форму за любое место, сдесь прокатит то же
2. Написать свой класс, порожденн от CButton и в нем обрабатывать сообщение, MouseMove, там в одном из парметров можно посмотреть нажата ли при этом левая кнопка мыши, если да таскайте на здоровье 3. Если вся проблема в том, что в окно родителя не приходит сообщение от мыши при заходе на кнопку, можно использовать GetCapture? ReleaseCapture Надеюсь я правильно поняла о чем речь ![]() -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Coocky, я и забыл предупредить, что Win-сообщения от контролов (маусмув и др.) обрабатывают сами контролы, по причине чего их нужно subclass-ировать (создав производный класс, например от CButton) и обрабатывать сообщения в рамках контрола а не диалога.
Сорри ![]() ![]() ![]() -------------------- ![]() |
|||
|
||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Да,пардон за вопрос,ну что нужно указать(добавить) в производном классе?Функцию по перетаскиванию?Если можно,приведите пример,можно и схематически ![]() ![]()
Первый раз слышу проHTCAPTION;Это видно что-то из WINAPI ![]() Это сообщение отредактировал(а) Coocky - 7.4.2004, 15:10 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
Anklav |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
HTCAPTION - это WinAPI константа кроме неё есть ещё HTBORDER, HTBOTTOM, HTCLIENT, HTCLOSE и др. Метод OnNcHitTest() вызывается всякий раз, когда курсор мыши находится над окном. И вызывается он раньше OnMouseMove(), OnMouseDown() и др. В качестве возвращаемого значения нужно указать в какой области окна произошло событие. Поэтому, если вернуть значение HTCAPTION, то любые действия в любой области окна будут восприниматься как действия над заголовком (Caption) окна. |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Да ,но не хочу я с WINAPI работать
![]() ![]() ![]() ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
В классе от CButton обрабатываешь сообщения мыши, какие взависимости от реализации
LButtonDown, MouseMove. Вечерком, если не забуду, кину прмерчик -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |