Главная страница
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.019 c
1-10226
непомнююююю
2003-07-20 02:40
2003.08.04
Drag n Drop формы


14-10407
Князь Мышкин
2003-07-16 12:38
2003.08.04
Требуется хакер!


7-10482
qwerty2
2003-05-21 22:28
2003.08.04
Настройка DCOM программно через реестр или API


1-10292
Ivolg
2003-07-22 12:00
2003.08.04
Image


4-10524
xn0bys
2003-06-02 16:29
2003.08.04
Как сделать так, чтоб использование процессора было не 100%