Категория
Информатика
Тип
лекция
Страницы
3 стр.
Дата
11.06.2009
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
134704.zip — 67.21 kb
  • podklassy-okon_134704_1.rtf — 519.77 Kb
  • Readme_docus.me.txt — 125 Bytes
Оцените работу
Хорошо  или  Плохо


Текст работы

Нормальный с отступом;
Пример;
Пример-строка;
MSG шаблон;
MSG комментарий;
;
Основной текст 4;
Основной текст 5;
Лекция 11 Макаров Андрей Владимирович XP GAME 2007
Подклассы окон
Сейчас нам надо рассмотреть один интересный прием -
порождение подкласса окон. Часто бывает так, что возможностей, предоставляемых окном того или иного стандартного класса Вам не хватает, а создавать экви в алентный стандартному класс с небольшими отличиями слишком сложно. В этом случае было бы удобно научиться создавать дополнительные классы окон, основанные на уже известных классах.
Именно это и называется порождением подкласса окон. Основная идея заключается в использовании собственной функции обработки
сообщений, которая выполняла бы требуемую обработку, отличную от стандартной. При этом в качестве процедуры обработки сообщений по умолчанию должна выступать процедура, определенная в уже существующем классе.
Для реализации этого метода нам надо сделать три вещи:
·
узнать адрес процедуры обработки сообщений заданного
окна (или заданного класса).
· научиться вызывать нужную процедуру вместо процедуры обработки сообщений по умолчанию.
· сделать так, что бы сообщения обрабатывала написанная нами процедура, а не определенная в классе.
Первую и третью задачи удобно решать с помощью функции
LONG SetWindowLong( hWnd, GWL_WNDPROC, lpfnNewProc );
эта функция одновременно устанавливает новый адрес процедуры обработки сообщений и возвращает адрес прежней функции. Конечно, когда мы передаем адрес новой процедуры обработки сообщений он должен
быть адресом связанной с нашим приложением функции, то есть он должен быть возвращен процедурой MakeProcInstance



Ваше мнение



CAPTCHA