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

Вниз

Перехват cобытий и передача их в MyObject   Найти похожие ветки 

 
Still Swamp   (2003-07-20 14:41) [0]

Есть посторонне окошко. Я знаю его Handle.
Как наилучшим образом соорудить в неком ином MyObject=class обработку событий перемещения мыши, изменения размеров и проч этого самого окошка?


 
Rouse_ ©   (2003-07-20 14:47) [1]

Если окошко из другого приложения, то хуком. Статей на сайте более чем предостаточно. Ну а обработку сообщений от хука обертывайте в нужный Вам класс.

Желаю успехов.

ЗЫ: Или я чего недопонял?


 
Still Swamp   (2003-07-20 14:57) [2]

Не.... извиняюсь. Не пояснил.
Окошко мое, и находится оно в том же приложениии.


 
Rouse_ ©   (2003-07-20 15:11) [3]

Тогда подменой его WindowProc

OldAppWndProc := GetWindowLong(Нужный Handle, GWL_WNDPROC);
{$WARNINGS OFF}
HookAppProc := Integer(MakeObjectInstance(AppHook));
{$WARNINGS ON}
SetWindowLong(Нужный Handle, GWL_WNDPROC, HookAppProc);

Желаю успехов


 
Still Swamp   (2003-07-20 15:22) [4]

Я правильно понял? - HookAppProc адрес моей процедуры, которая вызовется когда с окошком будут выполняться действия?

Что далее делать? Это перехват WM сообщений?


 
Rouse_ ©   (2003-07-20 15:30) [5]

Главным является параметр AppHook

Вот пример кода из моего компонента


protected
procedure AppHook(var Message: TMessage); virtual;

...

procedure TFWTrayIcon.AppHook(var Message: TMessage);
begin
with Message do
case Msg of
WM_SIZE: // Ловим только собщение о минимизации и,
// в зависимости от состояния флага, скрываем форму
if FMinimizeToTray and (wParam = SIZE_MINIMIZED) then HideMainForm;
else
// Все остальные сообщения отправляем в старую оконную процедуру
Result := CallWindowProc(Pointer(OldAppWndProc), Application.Handle,
Msg, wParam, lParam);
end;
inherited;
end;


Желаю успехов


 
Rouse_ ©   (2003-07-20 15:35) [6]

Вам нужно в строке

Result := CallWindowProc(Pointer(OldAppWndProc), Application.Handle,
Msg, wParam, lParam);


вместо Application.Handle указать Нужный Handle

Желаю успехов



 
Still Swamp   (2003-07-20 15:39) [7]

хе... сенкс.


 
Still Swamp   (2003-07-20 15:46) [8]

мне собственно нужно отрисовывать кадры OpenGL из разных объектов, а от окошка этим объектам передавать его состояние и мышиное управление.

думаю стрельнет.


 
Still Swamp   (2003-07-20 15:49) [9]

HookAppProc := Integer(MakeObjectInstance(AppHook));

а что такое AppHook?


 
Rouse_ ©   (2003-07-20 15:57) [10]

Это и есть

procedure AppHook(var Message: TMessage); virtual;

Желаю успехов


 
Still Swamp   (2003-07-20 16:00) [11]

выдал он мне исключение...
Дочерние окна не могут иметь меню.
придется разбираться далее.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
1-10189
stskz
2003-07-23 08:43
2003.08.04
Создание консольного приложения


3-10094
Fast
2003-07-12 21:44
2003.08.04
ADOTable.Delete


14-10424
Кен
2003-07-12 02:50
2003.08.04
Посоветуйте статистическую функцию ? Есть большой текст (Война и


3-10087
Spawn
2003-07-13 12:38
2003.08.04
SQL


4-10513
Dark_Dan
2003-06-02 17:36
2003.08.04
CheckBox