Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-10239
xRay
2003-07-20 01:56
2003.08.04
TListView


4-10525
ych_boriss
2003-06-03 12:37
2003.08.04
мессаги WM_MOUSELEAVE, WM_MOUSEHOVER.


6-10333
alt7
2003-05-29 15:15
2003.08.04
Глюкавый TIdTelnetServer


1-10276
FlyingHome
2003-07-21 12:55
2003.08.04
Как перетаскивать окна не за заголовок, а за любую точку?


6-10342
AndrewK
2003-05-27 14:45
2003.08.04
Как можно организовать оповещение на другую машину?





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