Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизКак нормально заставить работать CM_MOUSELEAVE Найти похожие ветки
← →
tytus © (2007-03-26 15:01) [0]Доброго дня. Есть форма в длл, показываемая модально. Событие cm_mouseenter срабатывает нормально, а вот CM_MOUSELEAVE - не хочет. Нужно для установки флага (boolean), по которому на канву формы копируется то один, то другой рисунок (BitBlt).
← →
GrayFace © (2007-03-26 15:09) [1]Должно, раз модально показываешь. Проблемы должны быть с другими вещами...
← →
Loginov Dmitry © (2007-03-26 15:15) [2]> а вот CM_MOUSELEAVE - не хочет
Что, прям совсем ни разу не срабатывает?
← →
tytus © (2007-03-26 15:19) [3]private
procedure CmMouseEnter(var Msg:TMessage);message CM_MOUSEENTER;
procedure CmMouseLeave(var Msg:TMessage);message CM_MOUSELEAVE;
begin
...
procedure TSForm.CmMouseEnter(var Msg:TMessage);
begin
MM:=true;
end;
procedure TSForm.CmMouseLeave(var Msg:TMessage);
begin
MM:=false;
//можно вставить
//MessageBox(Handle,"Leave","...",MB_OK+MB_SYSTEMMODAL);
// и масаги небудет. Только если форма потеряет фокус ввода (кликнуть)
// гдето-на десктопе, то сработает и месаг появится!
end;
← →
Жуков Олег (2007-03-26 15:37) [4]В MouseEnter вставь:
var
EventTrack: TTrackMouseEvent;
...
EventTrack.cbSize := SizeOf(EventTrack);
EventTrack.dwFlags := TME_LEAVE;
EventTrack.hwndTrack:= Handle;
EventTrack.dwHoverTime := HOVER_DEFAULT;
TrackMouseEvent(EventTrack);
← →
tytus © (2007-03-26 15:55) [5]>Жуков Олег (26.03.07 15:37) [4]
Супер! Спасибо!
← →
Loginov Dmitry © (2007-03-26 15:56) [6]Добавь таймер. Через каждые 100 - 200 мс проверяй, находится ли мыша на форме, или вне ее пределов.
А сообщением CM_MOUSELEAVE особо не загоняйся. Жди, когда борландцы подправят в VCL способы оповещения с помощью CM_MOUSELEAVE, или же извращайся другими, но работающими способами.
← →
Loginov Dmitry © (2007-03-26 16:59) [7]
> [4] Жуков Олег (26.03.07 15:37)
Работает для голой формы. Если растянуть на форме к примеру TImage, то работать перестает. Технологии, млин!
← →
Eraser © (2007-03-26 19:31) [8]> [0] tytus © (26.03.07 15:01)
> Доброго дня. Есть форма в длл, показываемая модально.
убрать форму из ДЛЛ и проблема решиться сама-собою.
← →
Loginov Dmitry © (2007-03-26 19:59) [9]> убрать форму из ДЛЛ и проблема решиться сама-собою.
Не решится. Дело здесь не в ДЛЛ.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c