Re: Перехват MessageBox-сообщений
Здравствуйте !
> Хочу написать свой компонент, что бы перехватывать все диалоговые
> сообщения функций MessageBox, ShowMessage и другие, и вместо
> стандартных этих окон рисовать свои.
> Кто-нибудь может подсказать, как можно перехватить такие функции и
> выполнить свои действия ?
Перехват API, однако (если надо сделать на уровневсей системы).
Где то встречал примеры именно для перезвата MessageBox.
На RSDN были, кажется, статьи:
http://rsdn.ru/?summary/1383.xml
На codeguru также:
перехват API:
http://codeguru.com/Cpp/W-P/system/misc/article.php/c5667/
использование хука для того, чтобы поймать окно бокса
и расположить его относительно родителя по центру:
http://codeguru.com/Cpp/W-P/win32/messagebox/article.php/c4541/
Вообще это дело неблагодарное, т.к. API кроме всего прочего призвано
создавать некоторый уровень абстракции для разработчика.
В MSDN, например MessageBox описывается так:
The MessageBox function creates, displays, and operates a message box.
The message box contains an application-defined message and title,
plus any combination of predefined icons and push buttons.
И ничего не сказано про то, какого цвета, размера, формы этот самый бокс
будет. Меняется версия ОС, меняется вид пользовательского интерфейса.
А интерфейс программный остается неизменным. Старые приложения работают
как надо. Разработчики могут не боясь использовать старые методы.
Кстати, некоторые приложения сами "кустомизируют" свои окна сообщений
(та же опера). Возможно, она не использует ::MessageBox.
И еще. Как будешь поступать со скинами XP ? Не учитывать скин ?
--
С уважением, Вахтуров Виктор.
Номер выпуска : 4482
Возраст листа : 601 (дней)
Количество подписчиков : 519
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/367704
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru