MouseEnter vs MouseLeave
C++Builder 2009.
Для примера создаю "чистый" проект. На форме две панели (TPanel). Соединены между собой, так сказать, в стык, без зазора. Всяческие рамки у панелей (бордеры и бевелы) отключены. Для наглядности на форме также имеется TMemo, в котором отображается последовательность возникновения событий MouseEnter и MouseLeave этих двух панелей. Все вроде отлично отрабатывается, до тех пор, пока не проведешь курсором в том самом месте, где панели соединены между собой. При этом происходит сначала MouseEnter панели, на которую мы навели курсор, а затем MouseLeave панели, которую покинули. Я в шоке! Как так? Ведь даже по логике - мы сначала покидаем панель А, затем только происходит "Enter" на панель B. В примере же все в точности до наоборот.
Дальше еще смешнее. Делаю все в точности также, но вместо панелей два TImage... И что вы думаете? С ними все ок. При переводе курсора с имейджа A на имейдж B сначала происходит AMouseLeave и только затем BMouseEnter...
Все перепроверил несколько раз, с моей стороны ошибка исключена.
Я что-то не понимаю? Поясните, кто в курсе... Или же это все таки баг IDE? :(
Выложите ваш проект. У меня в RAD2009 все работает нормально.
Вот исходник этого примера.
Проверил на своем компьютере. Переводил курсор с одной панели на другую через их пересекающиеся границы. Вот результат.
P.S. Проверил только что скомпилированный пример на виртуальной машине с Windows XP - та же беда... Значит винда скорее всего отпадает. Дело в самом билдере.
Такое вот недоразумение, попившее у меня крови, прежде чем я понял, что проблема не во мне... :)
:mad:
Цитата: NetLister
Может это теперь так и должно быть..?
:mad:
:mad:
По идее нет. Попробуйте посмотреть исходники в студии. Или попробуйте залогировать нужные windows сообщения, приходящие в программу.