Главная страница
    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
6-10341
Кен
2003-05-28 02:30
2003.08.04
Где взять TWebBrouser ? У меня раньше был Дельфи 5, и там он


6-10336
Dwemer
2003-05-30 04:05
2003.08.04
NMURL и Дельфи 7


6-10344
MetalFan
2003-05-28 13:43
2003.08.04
TPowersock


14-10459
Knight
2003-07-17 22:38
2003.08.04
Кто знает, что за ошибка?


3-10129
Nikolai_S
2003-07-15 11:14
2003.08.04
Как составить SQL запрос со списком кварталов?





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