Когда и чем полезен DragDetect? - PullRequest
       14

Когда и чем полезен DragDetect?

2 голосов
/ 10 февраля 2011

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

CWnd::DragDetect возвращает значение true, если пользователь переместил мышь за пределы определенного прямоугольника левой кнопкой вниз.Я думал об использовании возвращаемого значения этого в ::OnMouseMove, чтобы определить, выполняется ли операция перетаскивания, чтобы включить или отключить определенные эффекты и действия GUI.

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

Google не приводил никаких примеров использования этого метода, поэтому SO также не дал результатов, поэтому мне любопытнокогда и если это когда-либо полезный метод или если это не предназначенное использование.

Кто-нибудь использовал это раньше?

1 Ответ

2 голосов
/ 10 февраля 2011

Целью является вызов DragDetect из вашего обработчика WM_LBUTTONDOWN, чтобы узнать, пытается ли пользователь что-то перетащить из вашего приложения.Если он возвращает true, это начало операции перетаскивания;если это неверно, то нет.После возврата истины вы начинаете отслеживать мышь и выполнять тесты попаданий, чтобы обеспечить обратную связь, если таковая имеется;Вы должны по крайней мере изменить курсор в этой точке.Наконец на WM_LBUTTONUP вы проводите финальный тест на попадание, чтобы увидеть, какова цель падения.

...