#1 30.05.06 22:49
[C++ MFC] обработка сообщений
Такая ситуация: есть приложение у него соответственно есть рабочая облась (как ни странно :) ). Небходимо отследить премещение мыши вне этой области (например на панели или меню).
Вопрос: как это сделать?
P.S. В общем суть задачи состоит в следующем. необходимо реализовать добавление элементов в рабочую область при помощи панели инструментов.
Т.е. есть допустим у нас панель, каждой кнопке соответствует свой элемент. Принажатии на кнопку под курсором появляется изображение элемента. Далее перетаскиваем его (элемент) в рабочую облась, отпускаем кнопку мыши и необходимое устройство добавляется в рабочую область.
Кто что думает по этому поводу?
Offline
#2 31.05.06 11:07
Re: [C++ MFC] обработка сообщений
Есть специальные функции для работы с drag and drop, я так понимаю тебе это надо?
Хотя впринципе при желании можешь сделать так:
Ловишь на товей панельке, на кнопке скажем WM_LBUTTONDOWN (нажатие левой кнопки мыши)
Делаешь SetCapture() в этом окне, тем самым указывая, что все сообщения от мыши будут теперь обробатываться этим окном, даже если мышь не будет в пределах окна.
Дальше меняешь курсор на новый курсор с твоим элементом.
Как только поймал сообщение WM_LBUTTONUP (кнопку мыши отпустили)
проверяешь если глобальные координаты мыши поподают в глобальные координаты окна с твоей рабочей областью то добавляешь этот элемент в свою рабочую облатсь. И делаешь ReleaseCapture() - тоесть отпускаешь мышь от окна с панелькой.
Исправлено MadSlayer (31.05.06 11:08)
Offline
#4 31.05.06 11:37
Re: [C++ MFC] обработка сообщений
_|ex написал(а):
а что за специяальные функци для работы с драг энд дроп?
Ну я если честно не помню уже как там с ними работать ибо давно не занимался. Возможно правда что они только для работы с файлами. Погляди в MSDN-е в разделе Shell Functions, про drag and drop там вроде ничего сложного не было. Ну и в MFC что то было такое у CWnd были методы над этими функциями типа DragAcceptFiles и т.п.
Я щас это дело на память не вспомню, а разбираться времени нет.
Не получиться - всегда можно сделать, как я описал сначала )
Offline

