Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизПерехват 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c