Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: CL | DM;

Вниз

Что за сообщения такие   Найти похожие ветки 

 
anod ©   (2002-08-14 11:48) [0]

CM_MOUSEENTER и CM_MOUSELEAVE, какие передаются параметры. Я посмотрел хелп, но ничего не нашел.


 
Sedunov Vitaly   (2002-08-14 12:11) [1]

CM_MOUSELEAVE - возникает когда указатель мыши ушел за пределы формы, CM_MOUSEENTER - когда вернулся. А вот про параметры не подскажу... Скорее всего, MSDN читать надо.


 
Skier ©   (2002-08-14 12:17) [2]

>anod
... LParam = Longint(Self) ... Больше никакой информации :(


 
McSimm ©   (2002-08-14 12:19) [3]

MSDN ни при чем.
Это внутренние сообщения VCL.

Параметры (судя по исходникам) -
(0, 0),
либо (0, Self) при передаче сообщения от контрола своему Parent


 
Внук ©   (2002-08-14 12:19) [4]

MSDN читать не надо, так как сообщения не системные, а определенные в VCL, исходники посмотреть надо, в частности Controls.pas


 
Игорь Шевченко ©   (2002-08-14 12:28) [5]

Лучше forms.pas


 
anod ©   (2002-08-14 16:09) [6]

Но эти сообщения только для формы Мне нужно обработать сообщения от кнопок, но WM_MOUSEMOUVE неудобно.


 
Skier ©   (2002-08-14 16:13) [7]

>anod


> Но эти сообщения только для формы


Не только ! Если у тебя компонет - наследник TControl, то
можешь смело этими сообщениями пользоваться...


 
anod ©   (2002-08-14 16:17) [8]

Нет, не наследник, а обычное окно типа "Button".


 
Skier ©   (2002-08-14 16:19) [9]

>anod
TControl-
|-TWinControl-
|-TButtonControl-
|- TButton

Иерархию классов можешь смотреть в Help-е...


 
Arhangel ©   (2002-08-14 16:20) [10]

Абалдеть;)
А вы тут распинались:)


 
Arhangel ©   (2002-08-14 16:20) [11]

А как это окно типа Button&


 
Skier ©   (2002-08-14 16:22) [12]

>Arhangel
Наследуется от TWinControl - значит оконный компонент
(он же визуальный), так что это окно - всё правильно !


 
anod ©   (2002-08-14 16:31) [13]

У меня программа на ВинАпи, нет там TButton


 
Skier ©   (2002-08-14 16:32) [14]

>anod

Тогда TrackMouseEvent...

The TrackMouseEvent function posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time.


 
anod ©   (2002-08-14 16:33) [15]

Ладно, а как же обрабатывать сообщение, если TButton,
примерчик можно?


 
Skier ©   (2002-08-14 16:35) [16]

>anod


TExButton = class(TButton)
private
procedure CMMouseEnter(var Message: TMessage); message
CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message
CM_MOUSELEAVE;
end; //TExButton

{ TExButton }

procedure TExButton.CMMouseEnter(var Message: TMessage);
begin
inherited;
//your code goes here...
end;

procedure TExButton.CMMouseLeave(var Message: TMessage);
begin
inherited;
//your code goes here...
end;


 
anod ©   (2002-08-14 16:37) [17]

>Skier
Большое спасибо.... и за TrackMouseEvent тоже


 
anod ©   (2002-08-14 16:55) [18]

Выдает ошибку
var EventTrack: TTRACKMOUSEEVENT;

EventTrack.cbSize:=SizeOf(TTrackMouseEvent);
EventTrack.dwFlags:=TME_HOVER or TME_LEAVE;
EventTrack.hwndTrack:=B_Prev;
EventTrack.dwHoverTime:=HOVER_DEFAULT;
TrackMouseEvent(EventTrack);

[Error] MPL2.DPR(172): Types of actual and formal var parameters must be identical

И ещё, мне эту функцию всего один раз нужно выполнять (при старте программы)?


 
Skier ©   (2002-08-14 17:05) [19]

>anod
TrackMouseEvent(@EventTrack) ?
Хотя у меня и так работает...(у меня NT)


 
Anatoly Podgoretsky ©   (2002-08-14 17:16) [20]

anod © (14.08.02 16:31)
Тогда и сообщений этих нет


 
anod ©   (2002-08-14 17:25) [21]

>Skier
Нет. тоже самое.

>Anatoly Podgoretsky
Ну я пишу в WM_MOUSEMOVE???


 
Skier ©   (2002-08-14 17:38) [22]

>anod

Это не поможет ?


var EventTrack: PTRACKMOUSEEVENT;
begin
EventTrack := AllocMem(SizeOf(TTrackMouseEvent));
try
with EventTrack^ do begin
cbSize:=SizeOf(TTrackMouseEvent);
dwFlags:=TME_HOVER or TME_LEAVE;
hwndTrack:=B_Prev;
dwHoverTime:=HOVER_DEFAULT;
end; //with
TrackMouseEvent(EventTrack);
finally
FreeMem(EventTrack, SizeOf(TTrackMouseEvent));
end; //try
end;


 
Anatoly Podgoretsky ©   (2002-08-14 17:47) [23]

Ты можешь подсмотреть реализацию в исходниках VCL и применить тож метод у себя в WinApi


 
Игорь Шевченко ©   (2002-08-14 18:04) [24]

Anatoly Podgoretsky © (14.08.02 17:47)

CM_MOUSEENTER/CM_MOUSELEAVE вызываются из Application.Idle (TApplication.DoMouseIdle) Сомневаюсь я, что в программу на WinApi это будет легко и просто перенести...


 
Набережных С.   (2002-08-14 22:01) [25]


> anod © (14.08.02 16:55)

Попробуй так:
var EventTrack: Windows.TTRACKMOUSEEVENT;
Вдруг поможет.


 
anod ©   (2002-08-14 22:08) [26]

2Набережных С.

Спасибо. Именно в этом и проблема.


 
Anatoly Podgoretsky ©   (2002-08-14 22:25) [27]

Игорь Шевченко © (14.08.02 18:04)
Тогда плохо дело, но принцип все равно можно посмотреть


 
anod ©   (2002-08-14 23:08) [28]

2Anatoly Podgoretsky
Ууу, я там много чего смотрел, но блин не понятно, как это все в конкретную задачу вставить.



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

Текущий архив: 2002.08.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
1-84971
Bartik
2002-08-15 16:23
2002.08.26
Как создать Help`арь?


1-85081
Fissher
2002-08-14 17:10
2002.08.26
Курсор в главном меню


1-85030
VZ-KZ
2002-08-12 15:09
2002.08.26
QuickReport


14-85168
quark
2002-07-28 21:42
2002.08.26
Adept Union Все для программиста (более 60 мб инфы)


3-84911
Andrushk
2002-08-01 10:52
2002.08.26
Как в DBGrid запретить перенос отдельных столбцов