Главная страница
    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
3-25257
PAlexander
2003-12-10 13:18
2004.01.09
Вопросы по подключению к MSSQL через Delphi/BDE


8-25446
gunner
2003-09-03 14:20
2004.01.09
Преобразовать Graphic в BitMap


14-25612
Doc
2003-12-14 19:52
2004.01.09
Уровень преподователей по информатике


3-25262
LinOS
2003-12-08 13:48
2004.01.09
Мигает DBGrid


1-25316
вася
2003-12-22 19:34
2004.01.09
возможности HINT





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