Математика | ||||
OLE: создание элементов управления - Джон Пьюполо 1997. - 432 с. | ||||
OLE: создание элементов управления - Джон Пьюполо 1997. - 432 с.
Джон Пьюполо OLE: создание элементов управления: пер. с англ. — К.: Издательская группа BHV, 1997. - 432 с. ISBN 5-7315-0011-8 Практическое руководство для программистов, которые хотят создавать профессиональные элементы управления OLE. Детально рассматриваются основы объектно-ориентированной технологии, модель компонентного объекта (СОМ), СОМ-интерфейсы и технология OLE. Объясняются механизмы интеграции элементов пользовательского интерфейса, таких как меню, панели инструментов, строки состояния и страницы свойств. В книге множество примеров реально работающих программ. Отдельная глава посвящена вопросам наследования стандартных элементов управления Windows. В конце приведен обзор технологий OCX 96 и ActiveX. Содержание Предисловие 1. Объектно-ориентированная технология 9 Зачем нужна объектно-ориентированная технология?................... 9 Что такое объектно-ориентированная технология?.................... 10 Алгоритмическая и объектно-ориентированная декомпозиция........ 10 Пристальный взгляд на объекты............................... 11 Элементы объектно-ориентированного программирования.............. 13 Абстрагирование........................................... 13 Инкапсуляция............................................ 14 Интерфейс............................................... 14 Сообщения............................................... 14 Классы.................................................. 15 Наследование............................................. 16 Полиморфизм и динамическое связывание...................... 18 Объектно-ориентированный анализ и проектирование................. 19 ООП ...................................................... 20 Что такое объектная модель?.................................... 22 2. Модель компонентного объекта (СОМ) 23 Что такое СОМ?.............................................. 23 СОМ - это не OLE........................................... 24 СОМ-объекты................................................ 24 Модель "клиент-сервер"........................................ 26 СОМ-интерфейсы............................................. 26 И это все, что может СОМ?..................................... 27 Локальные и внутризадачные серверы............................. 27 Локальные серверы............................................ 29 Транспортировка данных.................................... 29 Заместители и посредники................................... 29 Типы данных...............'.............................. 30 Стандартная и специальная транспортировка..................... 31 Внутризадачные серверы........................................ 32 GUID...................................................... 32 Использование GUIDGEN................................... 34 Идентификаторы классов....................................... 35 423 Содержание Когда СОМ-объект становится сервером?........................... 35 SCM ...................................................... 36 Фабрики классов.......................................... 37 Кто за что отвечает?........................................... 38 Клиенты................................................. 38 Библиотеки OLE........................................... 38 Серверы................................................. 39 Фабрики классов.......................................... 39 3. СОМ-интерфейсы 41 Что такое интерфейсы?......................................... 41 Отличительные черты интерфейсов............................... 41 Основы реализации СОМ-интерфейсов............................ 42 Имена интерфейсов........................................ 43 Имена методов............................................ 43 Указатели на интерфейс..................................... 43 Интерфейсы — это всего лишь спецификации.................... 43 Технические подробности.................................... 43 Стандартные интерфейсы....................................... 48 [Unknown................................................... 48 lUnknown в чистом виде..................................... 49 lUnknown на практике...................................... 50 Реализация (Unknown....................................... 50 Пример СОМ-сервера.......................................... 51 AddRefQ................................................. 53 ReleaseQ................................................. 54 Querylnterface()............................................ 55 Возвращаемые коды........................................... 57 1ID ...................................................... 59 IClassFactory................................................. 60 Включение, посредничество, агрегация............................. 62 Входные и выходные интерфейсы................................. 65 Пользовательские интерфейсы................................... 66 4. Что такое OLE? 69 Архитектура OLE............................................. 69 Компоненты.................................................. 70 Управление памятью........................................ 72 Структурированное хранение................................. 74 Информация о типах и библиотеки типов....................... 76 Постоянные объекты....................................... 76 Унифицированная передача данных..................t......... 77 Соединяемые объекты...................................... 78 Технология Drag-and-Drop................................... 78 Автоматизация............................................ 78 Составные документы....................................... 79 Имена, псевдонимы и привязка............................... 80 Непосредственная активизация................................ 81 Свойства, страницы свойств и сообщения об изменении свойств...... 82 424 OLE: создание элементов управления Методы.................................................. 82 События................................................. 82 OCX против VBX............................................. 83 5. Элементы управления OLE и системный реестр 85 HKEY_CLASSES_ROOT\CLS1D.................................. 86 Записи реестра для типичных элементов управления OLE.............. 86 Доступ к реестру.............................................. 90 6. Архитектура элементов управления OLE 91 Откуда произошли элементы управления OLE?...................... 91 Что общего у элементов управления OLE?.......................... 93 Реализация в виде внутризадачного DLL-сервера.................. 93 Размещение в контейнере.................................... 93 Программирование извне.................................... 95 Поддержка визуального редактирования......................... 95 Поддержка немедленной активизации.......................... 95 Реализация стандартного набора интерфейсов.................... 95 Каковы атрибуты элементов управления OLE?....................... 96 Что можно делать с элементами управления OLE?.................... 97 IDispatch и OLE-автоматизация............................... 97 DISPID.................................................. 99 Тип VARIANT............................................ 99 Страницы свойств..........................................101 Библиотеки типов..........................................101 Что еще необходимо знать об элементах управления OLE?..............104 Глаголы.................................................104 Флаги MiscStatus...........................................105 Взаимодействие с клавиатурой................................109 Состояния активности......................................111 7. COleControl 113 8. Создание элемента управления Dates Control 117 Предварительный обзор........................................117 Программы, программы и еще раз программы.......................119 Генерация элемента управления...............................119 Исходные тексты.............................................121 DATES.H................................................122 DATES.CPP..............................................123 AFX_MANAGE STATE()....................................126 DATESCTL.H.............................................128 DECLARE OLECREATE EX(CDatesCtrl)........................134 DECLARE_OLETYPELIB(CDatesCtrl)...........................137 DECLARE PROPPAGEIDS(CDatesCtrl) •.........................137 DECLARE OLECTLTYPE(CDatesCtrl)..........................137 DECLARElDISPATCH MAP()................................138 DECLARE_EVENT_MAP()...................................139 DATESCTL.CPP...........................................139 Содержание 425 ON_OLEVERB()...........................................149 BEGIN DISPATCH MAP(theClass, baseClass).....................149 DISP FUNCTION I~D().....................................150 END DISPATCH_MAP()....................................150 BEGIN EVENT MAP(theClass, baseClass)........................150 END EVENT_MAP().......................................151 IMPLEMENT OLECREATE_EX().............................151 IMPLEMENT OLETYPELIBO................................151 IMPLEMENT~OLECTLTYPE()................................152 ODL .........~.............................................152 DATES.ODL..............................................152 Просмотр исходных текртов MFC.................................154 Проверка элемента управления...................................155 9. Усовершенствование элемента управления Dates Control 157 Архитектура элемента управления Dates Control......................157 DATESCTL.H.............................................159 DATESCTL.CPP...........................................162 COMMON.H.............................................170 DAYS.H.................................................170 DAYS.CPP...............................................173 Согласование меню...........................................180 DATES.RC...............................................181 InvalidateControl()..........................................186 Плоды трудов................................................187 10. Добавление свойств к Dates Control 189 Что такое свойства?...........................................189 Базовые свойства..........................................191 Внешние свойства.........................................193 Расширенные свойства......................................198 Пользовательские свойства...................................200 Переменные-члены, методы оповещения и методы чтения/записи.....200 Добавление свойств...........................................201 DATESCTL.H.............................................202 DATESCTL.CPP...........................................205 DATES.ODL..............................................213 Свойства по умолчанию........................................215 Новые свойства..............................................215 Функции GetNotSupported() и SetNotSupportedQ.....................216 Функция ThrowError().........................................216 Ограничение доступа к свойству..................................217 Свойства перечислимого типа....................................217 11. Добавление страниц свойств к Dates Control 223 Что такое страницы свойств?....................................223 Класс COle Property Page........................................224 Страницы базовых свойств......................................225 Пользовательские страницы свойств...............................226 426 OLE: создание элементов управления DATESPPG.H.............................................227 DATESPPG.CPP...........................................229 DATESCTL.H.............................................231 DATESCTL.CPP...........................................234 CUSTOMPR.H............................................243 CUSTOMPR.CPP..........................................244 Некоторые наблюдения........................................247 DDP ......................................................247 Многократное использование страниц свойств.......................249 Тестирование страниц свойств...................................249 Интерфейсы IPropertyPage и I PropertyPage2.........................249 Упражнение.................................................249 12. Добавление функций поддержки постоянства к Dates Control 251 Я постоянен, следовательно, я существую...........................251 Пример из жизни..........................................253 Дилемма сериализации данных................................254 DATES.CPP..............................................256 DATESCTL.H.............................................257 DATESCTL.CPP...........................................260 Из DATES.RC............................................274 Метод DoPropExchangeQ и РХ-функции.........................275 Итоги......................................................275 Проверка функций постоянства..................................277 13. Добавление методов автоматизации к Dates Control 279 Что такое методы?............................................279 У методов есть внешние имена................................279 У методов есть внутренние имена..............................279 У методов есть идентификаторы диспетчеризации (DISPID).........280 Методы могут иметь произвольное число параметров и возвращать значения......................................280 Базовые методы...........................................281 Пользовательские методы....................................281 Реализация методов...........................................282 DATESCTL.H.............................................283 DATESCTL.CPP...........................................286 DATES.ODL..............................................297 Итоги......................................................299 14. Добавление событий к Dates Control 301 Что такое события?............................................301 Виды событий...............................................302 Базовые события....................,.....................303 Поддержка базовых событий в классе COleControl.................303 События-запросы..........................................304 События-предупреждения....................................305 События-следствия.........................................305 События-директивы........................................305 Содержание 427 События и повторные вызовы....................................306 События, соединяемые объекты и точки соединения..................307 Источники и приемники событий................................308 Реализация событий...........................................309 DATESCTL.H.............................................309 DATESCTL.CPP...........................................313 DATES.ODL..............................................325 Итоги......................................................327 Поддержка дополнительных событий..............................328 Тестирование событий.........................................330 15. Поддержка версий 331 Структура VERS1ONINFO......................................333 16. Лицензирование 335 Интерфейс IClassFactory2.......................................335 Когда необходимо лицензирование?...............................336 Лицензирование на этапе проектирования.......................336 Лицензирование на этапе выполнения..........................338 Библиотека MFC и лицензирование............................339 Какой способ лучше?..........................................339 17. Создание элемента управления PicView Control 341 Нарисуй это!......................... Цена: 300руб. |
||||