Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hook && WM_ERASEBKGND 
:(
    Опции темы
GremlinProg
Дата 25.6.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



конечно можно


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
TGrey
Дата 25.6.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: 1
Всего: 1



Тогда последний вопрос, как же запретить перерисовку фона? Или сообщения типа
Цитата

WM_ERASEBKGND hdc:<........>
WM_ERASEBKGND fErased: True
То после хука
WM_ERASEBKGND fErased: True

и есть признак что перерисовка запрещена? Или как вернуть fErased:false

Это сообщение отредактировал(а) TGrey - 25.6.2010, 12:24
PM MAIL   Вверх
Earnest
Дата 25.6.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Может я ошибаюсь, но, по-моему, WH_CALLWNDPROC ловит все (ну, за исключением, возможно, низкоуровневого ввода). В MSDN написано, что этот хук стоит на входе CallWndProc, а мимо этого, вроде бы, ничего не проскакивает. WH_GETMESSAGE - да, только на очереди. 


--------------------
...
PM   Вверх
GremlinProg
Дата 25.6.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(TGrey @  25.6.2010,  14:22 Найти цитируемый пост)
Или сообщения типа ... и есть признак что перерисовка запрещена?

флага fErased у WM_ERASEBKGND нет, это spy скорее всего интерпретирует результат обработки WH_CALLWNDPROCRET, а конкретно: PAINTSTRUCT::fErase

fErased = TRUE означает что фон закрашивать не надо, он уже закрашен, т.е. если приложение принимает этот флаг во внимание, то ничего закрашивать не будет,

нет - значит не судьба, претензии тут могут быть только к разработчикам этой программы, а не к хукам

Добавлено через 4 минуты и 28 секунд
Цитата(Earnest @  25.6.2010,  14:26 Найти цитируемый пост)
Может я ошибаюсь, но, по-моему, WH_CALLWNDPROC ловит все (ну, за исключением, возможно, низкоуровневого ввода). В MSDN написано, что этот хук стоит на входе CallWndProc, а мимо этого, вроде бы, ничего не проскакивает. WH_GETMESSAGE - да, только на очереди. 

я тоже немного сомневаюсь, это можно проверить, залогировав работу обоих хуков

если DispatchMessage вызывает CallWindowProc, то да - будет ловить все

Добавлено через 5 минут и 35 секунд
TranslateAccelerator, кстати тоже тогда должна звать CallWindowProc в этом случае

Добавлено через 6 минут и 36 секунд
фу ты, CallWndProc, конечно


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
TGrey
Дата 25.6.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: 1
Всего: 1



А такой еще вопрос, написано что WH_CALLWNDPROC 
Цитата

The CallWndProc hook procedure can examine the message, but it cannot modify it. After the hook procedure returns control to the system, the message is passed to the window procedure. 

Как же так, а если я и ставлю хук для того, чтобы изменить что-то. То смысл мне просто словить его?
Вот взять к примеру из моей другой темы, шлется сообщение WM_USER+100, мне надо изменить ширену часов, изменю ее в хуке, а потом оно все равно отправит оригинал дальше?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.