СообЧа > База Знаний > Программирование

Вопрос

Что такое субклассинг?

Ответ

Оконные сообщения — универсальный способ межпроцессного взаимодействия в винде, те благодаря сообщениям разные программы могут общатся друг с другом, и совершенно не важно 16-ти, 32-х или 64-х они разрядные, и используют ли юникоды. Многие сообщения зарезервированны системой (сообщения о power status) либо используются стандартными компонентами (к примеру горизонтальный скрол посылает WM_HSCROLL окну на котором он находится). Но в МС предусмотрели и то что можно самому создавать сообщения, для этого зарезервирован целый диапазон значений начинающихся с WM_USER.

Сообщения посылаемые системой могут распространятся повсюду, а сообщения посылаемые приложением распространяются только в пределах Decktop~а (или WindowStation~а, уже точно не помню), но такие фичи есть только в НТ, в 9х всего один десктоп и нет оконных станций. С помощью этого механизма НТ защищают те сервисы которые имеют окна и запущены от других учетных записей, вообщето нормальный сервис не должен иметь окон, но бывает всякое.

Любое приложение имеющее хотя бы одно окно, имеет очередь сообщений связанных с этим окном, и обязано обрабатывать приходящие сообщения. Те кто програмирует на С++ и многие другие хорошо знакомы с этим, а от программистов истользующих ВБ это скрыто, так как ВБ сам занимается обработкой этих сообщений, доверяя программисту обрабатывать самые основные (Load, Unload, Click итд). Тем кто пытается выжать из вб больше перехватывая те сообщания которые вб не предоставляет, приходится самим внедрятся в обработчик оконных сообщений, это и называется СУБКЛАССИНГом. Те субклассинг это добавление своего обработчика оконных сообщений к уже существующему обработчику.

Субклассинг используют в основном программисты на ВБ, но и на других языках бывает без него не обойтись, к примеру мне пришлось субкласить окно винампа при написании своего плагина, в противном случае мне бы пришлось создавать еще одно окно и обработчик очереди сообщений чтоб была возможность использовать таймер.

Есть такая книжка: "Windows для профессионалов", автор Джеффри Рихтер, там рассматриваются все тонкости работы винды и програмирования под нее, правда там все на С++; там, в последних главах, рассмотренно подробно то что я кратко описал, кому интересно купите, почитайте, оно того стоит (типа =Крепкий орешек ВБ=, но для С++ и есть описание таких вещей которые я нигде не встречал).

На http://www.vbnet.ru/ есть статья про субклассинг — "Сообщения в Windows"

Ivan Rozhuk



Copyright © 2000-2004 Сообщество Чайников
Контактная информация