Можно ли отменить сообщение WM_MOUSELEAVE
из текстового поля?
У меня есть еще один элемент управления прямо над ним (я пытаюсь получить нарисованную Windows границу).Я вручную вызываю WM_MOUSEMOVE
в событии MouseMove
этого элемента управления, чтобы синяя рамка Aero вокруг текстового поля загорелась.Используя Spy ++, я вижу его запуск WM_MOUSELEAVE
, хотя я все еще в его границах.Это приводит к исчезновению / повторному появлению синей границы в мерцании.
edit Я попытался ответить @ Jeroen, и это уменьшило мерцание, но я по-прежнему не могу держать свечение или оно застреваетслишком долго.
if (m.Msg == (int)Win32Api.WindowsMessages.MouseLeave)
{
var mousePosition = PointToClient(MousePosition);
if (mousePosition.X < 0 || mousePosition.X > Width ||
mousePosition.Y < 0 || mousePosition.Y > Height)
base.WndProc(ref m);
return;
}
base.WndProc(ref m);