Как определить когда курсор мышки
попал/покинул контрол.
Компилятор: C++ Builder
Чтобы определить, когда курсор мышки попал или
покинул пределы контрола, необходимо обработать
VCL сообщения CM_MOUSEENTER и CM_MOUSELEAVE. Это можно сделать
через сабклассинг процедуры либо через
наследование контрола и метода WndProc() (или через
карту сообщений).
// в заголовке...
Controls::TWndMethod OldLabelWP;
void __fastcall NewLabelWP(TMessage
&Msg);
// в исходнике...
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
OldLabelWP = Label1->WindowProc;
Label1->WindowProc = NewLabelWP;
}
void __fastcall
TForm1::NewLabelWP(TMessage &Msg)
{
switch (Msg.Msg)
{
case
CM_MOUSEENTER:
{
// курсор мышки попал в
контрол
break;
}
case
CM_MOUSELEAVE:
{
// курсор мышки покинул
контрол
break;
}
case WM_DESTROY:
{
Label1->WindowProc = OldLabelWP;
break;
}
}
OldLabelWP(Msg);
}
|