Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Вниз

Создание сплывающей панельки...   Найти похожие ветки 

 
D@VINCHI   (2003-05-15 16:17) [0]

Мастера, подскажете как мне сделать, чтобы моя форма сварачивалась, когда курсор мыши не на ней. Проблема в том, что я не могу перехватывать события от мыши когда курсор не на форме. Я знаю, что можно поставить мышиный ХУК, но заморачиваться не хочу, може кто знает как это сделать проще ???


 
clickmaker   (2003-05-15 16:32) [1]

А это нужно сделать, пользуясь только Win API?


 
Игорь Шевченко   (2003-05-15 17:41) [2]

TrackMouseEvent не поможет ?


 
jonni   (2003-05-15 20:38) [3]

u menuya bial premernaya problema i ya reswhil vot kaka

procedure WMShowWindow(var message: TWMNCACTIVATE);message WM_NCACTIVATE;

kogda fokus na okne to vse normal"no..kak toka ushli to postupaet eto soobschenie.....
mozet pomozet....


 
nikkie   (2003-05-16 00:09) [4]

я бы сделал SetCapture и после этого спокойно ловил бы WM_MOUSEMOVE


 
Irbi   (2003-05-16 10:21) [5]

Помоему всё просто, лови на свой объект wm_MOuSEENTER ^ wm_MOuSELEAVE(не очень уверен в правильности, чисто, синтаксической: Enter-вводить, Leave- покидать); когда маус покидает форму(или др. объект) приходит wm_mouseleave, когда возвращается на объект wm_mouseENTER


 
Mischka   (2003-05-16 13:04) [6]

а у меня не получается на API перехватить эти события. И TrackMouseEvent не помогает. Хотя с дельфийскими формами работает прекрасно... :(


 
MBo   (2003-05-16 13:14) [7]

>Mischka
Я проверял WM_MOUSELEAVE и говорил тебе об этом - в паре с TrackMouseEvent работает. А про Дельфийские cm_mouseleave и др - смотри в исходниках, как Idle работает.


 
Mischka   (2003-05-16 14:42) [8]

Ну, может, кусок кода кинешь? У меня ж нихрена не работает. (От платформы это не зависит?)


 
MBo   (2003-05-16 14:49) [9]

>Ну, может, кусок кода кинешь
не сохранил, т.к. пробовал во временном проекте в соответствии с msdn без всяких изысков.


 
Mischka   (2003-05-16 14:56) [10]

Ну посмотри, может, у меня чего не так:

MouseEvent.cbSize:=sizeOf(tagTRACKMOUSEEVENT);
MouseEvent.dwFlags:=TME_HOVER or TME_LEAVE;
MouseEvent.hwndTrack:=Window;
MouseEvent.dwHoverTime:=0;
trackMouseEvent(MouseEvent);


И в WindowProc:
case Message of
WM_MOUSELEAVE: beep(440, 40);
не пищит...


 
clickmaker   (2003-05-16 15:22) [11]

А ОС случаем не 95?


 
Mischka   (2003-05-16 15:34) [12]

Случаем ХР. Но хотелось бы чего-нибудь универсального. 95 - не в счет. 98/2000/ХР


 
clickmaker   (2003-05-16 15:44) [13]

А WM_MOUSEHOVER пищит ?


 
Mischka   (2003-05-19 06:55) [14]

ни WM_MOUSEHOVER, ни WM_MOUSELEAVE :(
Мож, они передаются не в сам Message, а в l/wParam? Глупо, конечно...


 
nikkie   (2003-05-19 08:31) [15]

Не мешало бы проверять, что возвращает TrackMouseEvent. Вполне вероятно, что dtHoverTime = 0 не годится. MSDN пишет, что можно использовать HOVER_DEFAULT.


 
Mischka   (2003-05-19 08:57) [16]

Да пробовал уже. Явно не в dtHoverTime дело


 
MBo   (2003-05-19 09:23) [17]

>Mischka
ленив ты, видимо

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
TME:TTrackMouseEvent;
begin
if not OverFlag then begin
Caption:="Over "+IntToStr(GetTickcount);
OverFlag:=True;
end;
if not LeaveFlag then begin
TME.cbSize:=SizeOf(TME);
TME.dwFlags:= TME_LEAVE;
TME.hwndTrack:=Handle;
TME.dwHoverTime:=HOVER_DEFAULT;
TrackMouseEvent(TME);
LeaveFlag:=True;
end;
end;

procedure TForm1.MouseLeave(var m: TMessage);
begin
Caption:="Leave "+IntToStr(GetTickcount);
LeaveFlag:=False;
OverFlag:=False;
end;


 
Mischka   (2003-05-20 06:27) [18]

:) Ленив. Но не до такой же степени. Если б был у меня TForm1, я бы не спрашивал.
Если описать в классе формы
procedure MouseEnter(var m: TMessage); message WM_MOUSEENTER;
procedure MouseLeave(var m: TMessage); message WM_MOUSELEAVE;
все работает нормально. Я уже сто раз так делал.
А на чистый API перевести не могу. В оконной процедуре эти события не хочут обрабатываться!!!


 
MBo   (2003-05-20 06:47) [19]

msdn почитай про TrackMouseEvent. Там и пример был какой-то



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-67894
IronHawk
2003-07-07 19:26
2003.07.21
Приветствую Мастеров! Как в ТМемо сдвинуть курсор в конец строки?


7-68102
Dimaz-z
2003-05-11 21:19
2003.07.21
Команды модема.


3-67684
SergeyI
2003-06-26 17:22
2003.07.21
Memo поле


14-67974
Dmitriy O.
2003-07-07 09:07
2003.07.21
Можно ли творить зло ради добра ?


1-67817
clickmaker
2003-07-07 20:24
2003.07.21
Параметр lcid в TExcelApplication.Workbooks





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский