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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.006 c
1-84963
vlv
2002-08-15 15:40
2002.08.26
Преобразование URL


6-85150
Evgenyk
2002-06-17 12:05
2002.08.26
Как программно отредактировать реестры всех компов в сети


1-85053
BOBAH
2002-08-14 11:44
2002.08.26
Как бы так сделать.


1-84998
First_May
2002-08-16 09:10
2002.08.26
Опять Excel


4-85299
Начинающий1
2002-05-24 21:55
2002.08.26
Handle





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский