Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизНе могу поймать WM_MOUSELEAVE Найти похожие ветки
← →
pasha_golub © (2004-03-12 10:28) [0]
TForm1 = class(TForm)
...
procedure WndProc(var Message: TMessage); override;
end;
...
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_MOUSELEAVE then
Application.MessageBox("vl;h",nil); //не срабатывает
inherited;
end;
← →
Serge © (2004-03-12 10:30) [1]cm_mouseleave
← →
pasha_golub © (2004-03-12 10:32) [2]Serge © (12.03.04 10:30) [1]
Сработало. НО чего-то яы не догоняю. Почему все-таки WM_MOUSELEAVE не ловится?
← →
NAlexey © (2004-03-12 10:40) [3]>pasha_golub ©
Ты не так ловишь.
← →
pasha_golub © (2004-03-12 10:43) [4]Я и так ловил:
...
procedure WMMouseLeave(Msg: TMessage); message WM_MouseLEAVE;
ТОже не ловилось.
2NAlexey © (12.03.04 10:40) [3]
А как ловить?
← →
pasha_golub © (2004-03-12 10:55) [5]Вообщем только что сильно удивился. Оказывается Виндоуз не посылает сама сообщения WM_MOUSELEAVE, а их надо генерировать самому. Или я чего-то не так понял?
← →
NAlexey © (2004-03-12 11:09) [6]
procedure TForm1.xOnMessage(var Message: TMsg; var Handled: Boolean);
var
Event: TTrackMouseEvent;
begin
case Message.message of
WM_MOUSEMOVE:
begin
with Event do
begin
cbSize := SizeOf(Event);
dwFlags := TME_LEAVE;
hwndTrack := Message.hwnd;
end;
_TrackMouseEvent(@Event);
end;
WM_MOUSELEAVE:
Caption := "Leave";
end
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := xOnMessage;
end;
← →
pasha_golub © (2004-03-12 11:11) [7]NAlexey © (12.03.04 11:09) [6]
Угу, это я уже нашел спасибо. Ну и геморрой.
А вот еще вопрос. Откуда идет посыл сообщения CM_MOUSELEAVE?
← →
pasha_golub © (2004-03-12 11:17) [8]Вот откуда посыл идет
function TApplication.DoMouseIdle: TControl;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c