|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.06.2010, 21:31 | #1 |
Пользователь
Регистрация: 21.06.2010
Сообщений: 27
|
Одна оконная процедура
Здравствуйте, сижу смотрю через Спай++ на Shell_TrayWnd в ХР. Ничего нормального найти не могу, хочу перехватить сообщения от TrayNotifyWnd, но ничего не хукается. Обратил внимание, что TrayNotifyWnd и Shell_TrayWnd имеют одну и туже оконную процедуру, значит по сути, что приходит в Shell_TrayWnd, то и обрабатывается в TrayNotifyWnd? Но посмотрев логи сообщений в обоих случаях приходят совершенно разные сообщения. Как с этим бороться и добраться до сообщений TrayNotifyWnd?
Спасибо |
21.06.2010, 22:03 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
можно через внедрение своего обработчика в процесс и переопределение оконной функции нужного окна, чуть ниже(в этом разделе) я писал об этом подробно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.06.2010, 22:17 | #3 |
Пользователь
Регистрация: 21.06.2010
Сообщений: 27
|
Имеете ввиду сабкласировать? При нужном мне сообщении делать, то что мне нужно, а иначе вызывать стандартную?
Все это я начал только из-за желания расширить системные часы=) (кстати если есть инфа. как это сделать, буду рад услышать) Так вот, начав попытки, я заметил, что мой глобальный хук не ловит никаких сообщений от чилдов ШеллТрея, потом заметил, что у них еще к тому же один обработчик окна. Вот такая история. Так что, повторюсь, если есть инфа, буду рад. |
21.06.2010, 22:33 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
зачем класс менять?
можно сменить обработчик лишь нужного окна. часы этож TrayClockWClass Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.06.2010, 22:49 | #5 |
Пользователь
Регистрация: 21.06.2010
Сообщений: 27
|
Ну да, я прошиб я и имел ввиду SetWindowLong.
Я знаю, где часы=) Дело в том, что как я написал, то сообщения не ловятся ни от одного от чилдов Трея. Потому я решил для начала попробовать расширить TrayNotifyWnd. А если сразу на прямую расширять часы, то TrayNotifyWnd не расширяется соответственно новому размеру часов, все получается не красиво, налаживается друг на друга. Я подумал раз они имеют одну оконную процедуру, то и работают взаимосвязано. То есть я через Спай++ просмотрел сообщения для этих окон, то при добавлении иконок в Notification Area, шлется Ресайз и т.п. функции к TrayNotifyWnd и так далее. А за часы я прочитал, что надо ловить WM_USER+100 для изменение размеров. В общем сейчас попробую напрямую заменить для часов процедуру, а потом если криво будет, то буду с самого верха пытаться вызвать ресайзы для каждого парента. |
21.06.2010, 22:52 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
в программах на АПИ все BUTTON EDIT и прочее одного класса, имеет один обработчик. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
22.06.2010, 00:30 | #7 |
Пользователь
Регистрация: 21.06.2010
Сообщений: 27
|
Не ну кнопки, Едиты и т.п. Они как бы одинаковы там, как бы делать разные процедуры и нет смысла. А тут же речь идет об окне и мне кажется, что оно не наследник чего-либо, обычное окно, смысл ему делать одинаковые процедуры?! Я не утверждаю обратное, просто я не знаю, как оно там, потому и спрашиваю, расширяю горизонты=)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одна процедура для всех Edit(ов) | SoftKoc | Общие вопросы Delphi | 7 | 23.01.2010 13:44 |
оконная процедура и вложенный switch | Пепел Феникса | Общие вопросы C/C++ | 3 | 09.09.2009 18:56 |
Процедура в процедура в C++ Builder | Ecosasha | C++ Builder | 2 | 06.06.2009 17:17 |
Оконная процедура | HunterMan | Win Api | 5 | 04.06.2008 12:10 |