![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что за сообщения такие [D6, Win95/98]
anod © (2002-08-14 11:48:00)CM_MOUSEENTER и CM_MOUSELEAVE, какие передаются параметры. Я посмотрел хелп, но ничего не нашел.
anod (2002-08-14 23:08:00) [1]2Anatoly Podgoretsky
Ууу, я там много чего смотрел, но блин не понятно, как это все в конкретную задачу вставить.
Anatoly Podgoretsky (2002-08-14 22:25:00) [2]Игорь Шевченко © (14.08.02 18:04)
Тогда плохо дело, но принцип все равно можно посмотреть
anod (2002-08-14 22:08:00) [3]2Набережных С.
Спасибо. Именно в этом и проблема.
Набережных С. (2002-08-14 22:01:00) [4]
> anod © (14.08.02 16:55)
Попробуй так:
var EventTrack: Windows.TTRACKMOUSEEVENT;
Вдруг поможет.
Игорь Шевченко (2002-08-14 18:04:00) [5]Anatoly Podgoretsky © (14.08.02 17:47)
CM_MOUSEENTER/CM_MOUSELEAVE вызываются из Application.Idle (TApplication.DoMouseIdle) Сомневаюсь я, что в программу на WinApi это будет легко и просто перенести...
Anatoly Podgoretsky (2002-08-14 17:47:00) [6]Ты можешь подсмотреть реализацию в исходниках VCL и применить тож метод у себя в WinApi
Skier (2002-08-14 17:38:00) [7]>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;
anod (2002-08-14 17:25:00) [8]>Skier
Нет. тоже самое.
>Anatoly Podgoretsky
Ну я пишу в WM_MOUSEMOVE???
Anatoly Podgoretsky (2002-08-14 17:16:00) [9]anod © (14.08.02 16:31)
Тогда и сообщений этих нет
Skier (2002-08-14 17:05:00) [10]>anod
TrackMouseEvent(@EventTrack) ?
Хотя у меня и так работает...(у меня NT)
anod (2002-08-14 16:55:00) [11]Выдает ошибку
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
И ещё, мне эту функцию всего один раз нужно выполнять (при старте программы)?
anod (2002-08-14 16:37:00) [12]>Skier
Большое спасибо.... и за TrackMouseEvent тоже
Skier (2002-08-14 16:35:00) [13]>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:33:00) [14]Ладно, а как же обрабатывать сообщение, если TButton,
примерчик можно?
Skier (2002-08-14 16:32:00) [15]>anod
Тогда TrackMouseEvent...
The TrackMouseEventfunction 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:31:00) [16]У меня программа на ВинАпи, нет там TButton
Skier (2002-08-14 16:22:00) [17]>Arhangel
Наследуется от TWinControl - значит оконный компонент
(он же визуальный), так что это окно- всё правильно !
Arhangel (2002-08-14 16:20:00) [18]А как это окно типа Button&
Arhangel (2002-08-14 16:20:00) [19]Абалдеть;)
А вы тут распинались:)
Skier (2002-08-14 16:19:00) [20]>anod
TControl-
|-TWinControl-
|-TButtonControl-
|- TButton
Иерархию классов можешь смотреть в Help-е...