TWndMethod OldFormWindowProc;
//
void __fastcall TForm1::NewFormWindowProc(TMessage &Msg)
{
switch (Msg.Msg)
{
case CM_MOUSELEAVE: {
Form1->AlphaBlendValue = 100;
}
break;
case CM_MOUSEENTER: {
Form1->AlphaBlendValue = 255;
};
break;
}
OldFormWindowProc(Msg);
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
OldFormWindowProc = Form1->WindowProc;
Form1->WindowProc = NewFormWindowProc;
Form1->Perform(CM_MOUSELEAVE,0,0);
}
косяк с заходом мыша на форму и уходом с неё
Короче, захотелось как-то сделать что-то симпатичное - как окошко у DownLoad Master'а - наведешь мышу - постепенно ярчает, уберёшь - постепенно прозрачнеет. И в самом начале работы на тебе bug!! Если медленно вести мышу - всё пачит, если быстро - срабатывает не всегда, а иногда пролетает, т.е. форма не прозрачнеет. После многочисленных экспериментов выяснилось, что если мыша при уходе с формы попадает на синенький border - всё work, а если пролетает - шиш.
Короче, вот код:
Код:
Юзаю BCB 6. Может, косяк - нужно не CM_* мессаги, а WM_*? А?
Мдя... я занимался подобным года 2 назад, и реализовывал через сообщения WM_* и через Hook. (В DLL) Если нужен будет исходник пиши :)
КОНЕЧНО НУЖЕН!! А есть какая-нибудь толковая документация по хукам? А то что ето - приблизительно представляю, а как использовать - не понятно.. :rolleyes:
Лови: если не разберёщься пиши на мыло: [email]malicex@mail.ru[/email]
Цитата: Malice
Мдя... я занимался подобным года 2 назад, и реализовывал через сообщения WM_* и через Hook. (В DLL) Если нужен будет исходник пиши :)
Не обязательно писать библиотеку :eek:. Можешь использовать SetCaptureControl() - и отслеживать положеие курсора относительно формы. Или во время наведения курсора на компонент делай так
TRACKMOUSEEVENT trEvent;
trEvent.cbSize = sizeof(trEvent);
trEvent.dwFlags = TME_LEAVE;
trEvent.hwndTrack = Handle;
trEvent.dwHoverTime = 10;
TrackMouseEvent(&trEvent);
Тогда событие WM_MOUSELEAVE точно сработает
Это дело вкуса... тебя же никто не заставляет делать именно так... просто пользы от изучения работы с Dll и с хуками будет несоизмеримо больше..
Мыло: [EMAIL="Dominatore@yandex.ru"]Dominatore@yandex.ru[/EMAIL].
Чего-то не пойму - прошлый ответ пропал куда-то, чё за хрень творится, вчера же отвечал!!