Главная страница
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
4-10503
LOX
2003-06-01 17:56
2003.08.04
ListBox


3-10103
anatolyk
2003-07-11 22:47
2003.08.04
Автоинкр. поля в MSSQL


6-10324
BoxTer
2003-05-27 13:04
2003.08.04
Перехват сообщений, посланных Net send или WinPopup..


1-10258
anatolyk
2003-07-20 22:31
2003.08.04
Повторный запуск Word-a


14-10396
tall
2003-07-16 12:46
2003.08.04
Графика в Paradox.