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

Вниз

Как создать обработчик события OnMouseClick у компонента Animate?   Найти похожие ветки 

 
Dido   (2003-11-06 22:32) [0]

Заранее благодарен!


 
Dido   (2003-11-06 23:27) [1]

Удалено модератором


 
DriveSoft   (2003-11-07 00:07) [2]

Удалено модератором


 
Dido   (2003-11-07 00:33) [3]

Помогите пожалуйста!


 
wicked   (2003-11-07 01:09) [4]

см. справку по
TWinControl.Handle, TMessage, WM_LBUTTONDOWN/WM_LBUTTONUP

а вообще-то довольно простая задача... ;)


 
wicked   (2003-11-07 01:10) [5]

ой... забыл добавить в список TControl.WindowProc...
:)


 
Dido   (2003-11-07 02:27) [6]

А можно пример, что-то я не понял...


 
wicked   (2003-11-07 13:17) [7]

примерно так... за качество не ручаюсь - на паскале давно не писал... ;)

TForm1 = class(TForm)
...
fOldProc: TWndMethod;
...
end;

{ инициализация }
procedure TForm1.FormCreate(Sender: TObject);
begin
fOldProc := Animate1.WindowProc;
Animate1.WindowProc := MyWndProc;
end;

{ clean-up (русского термина не подобрал :)) }
procedure TForm1.FormDestroy(Sender: TObject);
begin
Animate1.WindowProc := fOldProc;
end;

{ собственно обработка }
procedure TForm1.MyWndProc(var Msg: TMessage);
var pt: TPoint;
begin
case Msg.Msg of
WM_LBUTTONDOWN: begin
{...пользователь надавил левую кнопку - обрабатываем...}
// курсор мыши в экранных координатах
GetCursorPos(pt);
// переводим в координаты компонента Animate1
MapWindowPoints(NULL, Animate1.Handle, @pt, 1);
end;
WM_LBUTTONUP: begin
{...пользователь отпустил левую кнопку - обрабатываем...}
// курсор мыши в экранных координатах
GetCursorPos(pt);
// переводим в координаты компонента Animate1
MapWindowPoints(NULL, Animate1.Handle, @pt, 1);
end;
else begin
{ другие сообщения }
end;
end;
// отдаем сообщения компоненту
fOldProc(Msg);
end;


 
wicked   (2003-11-07 13:21) [8]

ой... дурная сишная привычка...
вместо

> MapWindowPoints( NULL, Animate1.Handle, @pt, 1);

надо читать

> MapWindowPoints( nil, Animate1.Handle, @pt, 1);

или

> MapWindowPoints( 0, Animate1.Handle, @pt, 1);


 
DillerXX   (2003-11-07 13:39) [9]

Я не понял, кто даёт сообщение и вызывает MyWndProc(var Msg: TMessage) ?


 
wicked   (2003-11-07 13:45) [10]

читай внимательно - цитирую:
> { инициализация }
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> fOldProc := Animate1.WindowProc;
> Animate1.WindowProc := MyWndProc;
> end;

то есть MyWndProc вызывается при приходе любого сообщения на компонент...


 
Dido   (2003-11-07 15:11) [11]

Всеравно не вышло...

Вот код:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
Animate1: TAnimate;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure MyWndProc(var Msg: TMessage);
private
fOldProc: TWndMethod;
public
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
fOldProc := Animate1.WindowProc;
Animate1.WindowProc := MyWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Animate1.WindowProc := fOldProc;
end;

procedure TForm1.MyWndProc(var Msg: TMessage);
var pt: TPoint;
begin
if Msg.Msg=WM_LBUTTONDOWN then
begin
GetCursorPos(pt);
MapWindowPoints(0, Animate1.Handle, pt, 1);
ShowMessage("!");
end;
fOldProc(Msg);
end;

end.


Реагирует на нажатие LMB даже вне компонента Animate.


 
Dido   (2003-11-07 15:36) [12]

А все уже понял, спасибо всем!


 
Dido   (2003-11-07 15:48) [13]

Единственное что, пишет предупреждение: [Warning]method "WndProc" hides virtual method of base type "TCustomForm"

Что это значит, и может нужно что-то исправить...



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
14-25574
BlackTiger
2003-12-16 21:23
2004.01.09
ЛЮДИ!!! Помогите срочно с клавиатурой!


6-25459
stud
2003-11-11 12:29
2004.01.09
вопрос по поводу маршрутизации


3-25243
ss300
2003-12-10 16:24
2004.01.09
ZeosDB


1-25279
Zamik
2003-12-22 12:19
2004.01.09
Поиск файла по расширению


7-25624
Serg
2003-10-27 14:13
2004.01.09
System Folder





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