![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из своего класса обрабатывать сообщения некого окна? [D5, Win2k, WinXP]
Zilog © (2004-12-16 14:58:00)Как из своего класса обрабатывать сообщения некого окна?
есть у меня класс, возникла нужда обработать некоторые сообщения адресованные форме. В классе известен только handle этого окна.
Каким образом это можно сделать?
Суслик (2004-12-16 16:23:00) [61]
> [12] Zilog © (16.12.04 16:21)
наоборот делай...
ну в общем я написал уже выше
Zilog (2004-12-16 16:21:00) [62]>>Reindeer Moss Eater ©
ну к примеру после обработки сообщений родной оконной процедурой, сообщения (необработанные) передавались мне :)
Или такое невозможно?
Digitman (2004-12-16 16:21:00) [63]
> Получается SetWindowLong полностью переопределяет оконные
> функции?
да.
с условиями, оговоренными в MSDN
Reindeer Moss Eater (2004-12-16 16:20:00) [64]Интересно, а как можно переопределить "неполностью"
Суслик (2004-12-16 16:20:00) [65]
> Получается SetWindowLong полностью переопределяет оконные
> функции?
1 получи старое значене оконной функции
2 определи новую функцию. В случае если есть потребность вызова старой фнукции вызываешь.
Zilog (2004-12-16 16:18:00) [66]>>Digitman © (16.12.04 16:00) [3]
>>см. SetWindowLong() с параметром GWL_WNDPROC
GWL_WNDPROC - Sets a new address for the window procedure.
Получается SetWindowLong полностью переопределяет оконные функции?
Digitman (2004-12-16 16:18:00) [67]SetWindowLong() - самое простое и очевидное решение.
Zilog (2004-12-16 16:08:00) [68]>>ЧТО ТЕБЕ НАДОБНО, СТАРЧЕ ...
делаю компонент, который влияет на визуализацию окна.
Нужно обрабатывать сообщения, которые возникают к примеру при перемещении окна...
Zilog (2004-12-16 16:05:00) [69]>>ЧТО ТЕБЕ НАДОБНО, СТАРЧЕ ...
делаю компонент, который влияет на визуализацию окна.
Нужно обрабатывать сообщения, которые возникают к примеру при перемещении окна...
Суслик (2004-12-16 16:00:00) [70]
> А нет ли возможности переопределить обработку сообщений
> на себя?
переопределить оконную функцию.
Digitman (2004-12-16 16:00:00) [71]Удалено модератором
Zilog (2004-12-16 15:53:00) [72]я так понимаю PeekMessage надо вызывать постоянно, на предмет проверки новых сообщений... мне это не совсем подходит.
Да и PM_REMOVE видимо следует, к тому же поменять на PM_NOREMOVE, чтобы не лишить окошко обрабатывать положенные ей месседжи.
А нет ли возможности переопределить обработку сообщений на себя? Чтобы процедура обработки вызывалась по мере появления новых сообщений.
Digitman (2004-12-16 15:04:00) [73]while PeekMessage(msg, somehandle, 0, 0, PM_REMOVE) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;