![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приход / уход мыши [D7, WinXP]
Mischka © (2003-05-14 07:36:00)Пытаюсь в главной оконной функции отловить событие WM_MOUSEHOVER и WM_MOUSELEAVE. Ничего не происходит, как будто мое окно не получает таких сообщений вообще.
Вот код:
function WindowProc(Window: HWND; Message, wParam: Word; lParam: longint): longint; stdcall;
begin
Result:=0;
case Message of
WM_MOUSEHOVER: beep(440, 40);
...
end;
end;
Игорь Шевченко (2003-05-14 15:19:00) [1]Посмотри исходники forms.pas TApplication.DoIdle
или внимательно почитай про TrackMouseEvent
Mischka (2003-05-14 14:31:00) [2]Да нету у меня никаких контролов. Есть только окно созданное API-функциями - HWND
NAlexey (2003-05-14 12:59:00) [3]>И куда их пихать? Я че-то не догоняю...
Э-э-э... М-м-м. Кого прости "пихать"?
Обрабатывай сообщения CM_MOUSELEAVE и CM_MOUSEENTER.
procedure CMMouseLeave(var Message: TMessage);
begin
if Message.LParam = Integer(YourControl) then
begin
(...)
end;
inherited;
end;
Ну и Enter также.
Mischka (2003-05-14 12:29:00) [4]И куда их пихать? Я че-то не догоняю...
NAlexey (2003-05-14 11:37:00) [5]Ну а просто MouseEnter/MouseLeave?
Mischka (2003-05-14 08:32:00) [6]TrackMouseEvent я делаю, ни хрена не помогает
MBo (2003-05-14 08:22:00) [7]просто так они не возникают - для WM_MOUSELEAVE надо TrackMouseEvent делать с TME_LEAVE.
Попробуй то же и с MOUSEHOVER.
IMHO, проще MouseMove отслеживать.
Mischka (2003-05-14 07:52:00) [8]Да хрен его знает. Майкрософт пишет, что такое сообщение должно передаваться окну при приходе мыши.
MBo (2003-05-14 07:41:00) [9]WM_MOUSEHOVER
что это???????????????????