Отправить другу/подруге по почте ссылку на эту страницуВариант этой страницы для печатиНапишите нам!Карта сайта!Помощь. Как совершить покупку…
московское время23.04.24 16:32:43
На обложку
Новое в синергетике: Взгляд в третье тысячелетиеавторы — Малинецкий Г. Г., Курдюмов С. П., ред.
Тыловое обеспечение подразделений в боюавторы — Кущ И. И., Грибанов И. В., Камышанов И. Г.
Финансовые кризисы на развивающихся рынкахавторы — Горюнова Н. П., Минакир П. А.
б у к и н и с т и ч е с к и й   с а й т
Новинки«Лучшие»Доставка и ОплатаМой КнигоПроводО сайте
Книжная Труба   поиск по словам из названия
Авторский каталог
Каталог издательств
Каталог серий
Моя Корзина
Только цены
Рыбалка
Наука и Техника
Математика
Физика
Радиоэлектроника. Электротехника
Инженерное дело
Химия
Геология
Экология
Биология
Зоология
Ботаника
Медицина
Промышленность
Металлургия
Горное дело
Сельское хозяйство
Транспорт
Архитектура. Строительство
Военная мысль
История
Персоны
Археология
Археография
Восток
Политика
Геополитика
Экономика
Реклама. Маркетинг
Философия
Религия
Социология
Психология. Педагогика
Законодательство. Право
Филология. Словари
Этнология
ИТ-книги
O'REILLY
Дизайнеру
Дом, семья, быт
Детям!
Здоровье
Искусство. Культурология
Синематограф
Альбомы
Литературоведение
Театр
Музыка
КнигоВедение
Литературные памятники
Современные тексты
Худ. литература
NoN Fiction
Природа
Путешествия
Эзотерика
Пурга
Спорт

/ИТ-книги

Модель COM и применение ATL 3.0 — Троелсен Э.
Модель COM и применение ATL 3.0
Эффективная разработка приложений типа клиент/сервер
Троелсен Э.
год издания — 2001, кол-во страниц — 928, ISBN — 5-7791-0096-9, 1-55622-704-3, тираж — 5000, язык — русский, тип обложки — мягк., масса книги — 850 гр., издательство — БХВ-Петербург
серия — Мастер. Руководство для профессионалов
КНИГА СНЯТА С ПРОДАЖИ
Сохранность книги — хорошая. ПРИЛАГАЕМАЯ ДИСКЕТА УТРАЧЕНА

Developer's
Workshop to
COM and
ATL 3.0

Andrew W. Troelsen

2000 by Wordware Publishing, Inc.

Пер. с англ.

Формат 70x100 1/16. Печать офсетная
ключевые слова — com, atl, case, activex, -сервер, объектно-ориентирован, c++, инкапсул, наследован, контейнер, делегирован, полиморф, указател, шаблон, интерфейс, api, hkey_classes_root, dll, idl, java, прокси-объект, маршалинг, hkey_local_machine, mfc, win32, поток

Книга является полным и удобным практическим руководством по изучению модели COM и библиотеки ATL. Последовательно рассматриваются все основные принципы технологии программирования на основе COM. Подробно описывается работа со средствами CASE библиотеки ATL, а также её поддержка традиционных объектов COM, COM-исключений, контейнеров и агрегатов, создание элементов управления ActiveX и некоторые другие менее известные вопросы. Теоретический материал иллюстрируется множеством конкретных примеров. Для закрепления знаний предлагается выполнить лабораторные работы. Широкий спектр затронутых тем наряду с доступностью изложения позволяет рекомендовать книгу как начинающим программистам, так и специалистам, занимающимся разработкой приложений типа клиент-сервер.

Для широкого круга программистов.

ОГЛАВЛЕНИЕ

Глава 1. Классическое объектно-ориентированное программирование21
 
Жизнь без объектов: вспомним структурное программирование на С22
Программирование с использованием пользовательских типов23
Заполнение области объявления глобальных идентификаторов24
Лабораторная работа 1.1. Структурное программирование на С25
Шаг 1. Подготовка рабочей области проекта26
Шаг 2. Определение прототипов глобальных функций и структуры CAR26
Шаг 3. Реализация глобальных функций27
Шаг 4. Реализация функции main()29
Проблемы структурного программирования30
Принципы объектно-ориентированных языков32
От структур С к классам C++33
Создание и разрушение объектов: конструкторы и деструкторы35
Строим начальный класс CEmployee36
Принцип инкапсуляции37
Спецификация инкапсуляции в C++38
Методы доступа и методы изменения: безопасное изменение состояния
объекта40
Реализация методов класса: оператор расширения области видимости41
Лабораторная работа 1.2. Хорошо инкапсулированный автомобиль42
Шаг 1. Подготовка рабочей области проекта и вставка класса CCar43
Шаг 2. Определение открытого интерфейса CCar44
Шаг 3. Реализация методов класса CCar45
Шаг 4. Реализация головного блока47
Принцип наследования48
Отношение «А есть В»: классическое наследование49
Несколько слов о RTTI50
Производные классы в C++: расширение функциональных возможностей
базового класса50
Отношение «А содержит В»: контейнеры и делегирование53
Принцип полиморфизма55
Определение виртуальных функций55
Использование чисто виртуальных функций57
Иерархия классов на примере Employee59
Полиморфизм в действии: использование указателей базового класса61
Таблицы виртуальных функций61
Ad hoc полиморфизм62
Visual Basic и ad hoc полиморфизм63
Лабораторная работа 1.3. Иерархия сотрудников в C++64
Шаг 1. Создание рабочего пространства проекта и начальное
    определение классов65
Шаг 2. Реализация абстрактного базового класса CEmployee65
Шаг 3. Реализация класса CFTEmployee67
Шаг 4. Реализация класса CSalesEmployee68
Шаг 5. Полиморфизм на основе указателей базового класса69
Программирование на основе шаблонов72
Шаблоны в качестве контейнеров74
Краткое содержание главы76
 
Глава 2. Программирование на основе интерфейсов78
 
Одиночный открытый сектор78
Разбиение одиночного открытого интерфейса на отдельные интерфейсы79
Действия, выражаемые интерфейсом81
Обозначение классов с множественными интерфейсами на схемах81
Определение интерфейса в C++82
Поддержка интерфейсов в C++84
Обеспечение инкапсуляции86
Обеспечение полиморфности поведения88
Объявление переменных интерфейса89
Определение контракта90
Как удовлетворить клиентов: опубликованные интерфейсы91
Создание версий опубликованных интерфейсов91
Неверный способ создания версий интерфейсов94
Разработка иерархии интерфейсов95
Разработка API на основе пользовательского интерфейса: API Rect97
Идентификация интерфейса98
Использование API 3D Rect: код клиента100
Лабораторная работа 2.1. Программирование на основе интерфейсов102
Шаг 1. Подготовка рабочего пространства проекта и разработка
    интерфейса102
Шаг 2. Реализация класса C3DRect10З
Шаг 3. Разработка начального API Rect104
Шаг 4. Код стороны клиента106
Шаг 5. Создание версий существующего интерфейса106
Шаг 6. Обновление API прямоугольников108
Шаг 7. Модификация кода клиента110
Шаг 8. Полиморфизм на основе интерфейсов (или прелесть работы
    с указателями)111
Краткое содержание главы114
 
Глава 3. Модель компонентных объектов — COM115
 
Рабочее определение модели компонентных объектов116
Преимущества COM116
Независимость COM от языка программирования117
«Прозрачность местонахождения» (Location Transparency)117
Модель COM — объектно-ориентированная121
Контейнеризация и агрегация в модели COM122
Обеспечение моделью COM механизма создания версий компонентов124
Связь COM, OLE и ActiveX124
OLE 1.0124
OLE 2.0124
ActiveX125
Стандартные и пользовательские интерфейсы125
Идентификаторы интерфейсов (IID)127
Создание пользовательских GUID129
IUnknown — базовый интерфейс COM132
Управление временем жизни объекта COM с использованием функций
AddRef() и Released133
Правила вызова функций AddRef() и ReleaseQ135
Получение указателей интерфейса с помощью метода Querylnierface()137
Реализация QueryInterface() с помощью static_cast<>139
Установка «личности» объекта интерфейсом IUnknown139
HRESULT. стандарт возвращаемого типа модели COM140
Анализ HRESULT142
Определение интерфейсов COM с помощью макросов COM143
Определение интерфейса с помощью стандартных макросов COM144
Реализация интерфейсов с использованием стандартных макросов COM146
Строки в модели COM148
Тип данных OLECHAR149
Тип данных BSTR150
Создание новых BSTR в C++151
Операции с BSTR151
Дополнительные функции API для работы с BSTR152
Преобразование из Unicode в ANSI153
Функции преобразования154
Пример текста COM: методы интерфейса, использующие BSTR155
Просмотр строк Unicode158
Правила разработки интерфейсов и классов COM в C++159
Лабораторная работа 3.1. COM как лучший C++159
Шаг 1. Проектирование интерфейса160
Шаг 2. Реализация IUnknown162
Шаг 3. Реализация методов пользовательских интерфейсов164
Шаг 4. Создание функции начальной загрузки166
Шаг 5. Код стороны клиента167
Активизация объектов COM169
Объекты классов COM и интерфейс IClassFactory170
Построение фабрики класса172
Реализация метода IClassFactoryr::Createlnstance()174
Реализация метода IClassFactory::LockServer()175
Реализация DLL176
Экспорт серверных объектов класса: DUGetClassObject() и CLSID176
Управление временем жизни сервера: DllCan UnloadNow()178
Экспорт функций сервера180
Менеджер управления сервисом (SCM) и реестр системы181
Программные идентификаторы (ProgID)181
Необходимый ключ: HKEY_CLASSES_ROOT CLSID183
Регистрация COM-сервера184
Лабораторная работа 3.2. Разработка внутрипроцессного сервера COM
на C++186
Шаг 1. Подготовка рабочего пространства проекта и перенос СоCar186
Шаг 2. Разработка фабрики класса для CoCar188
Шаг 3. Реализация хранилища компонентов DLL192
Шаг 4. Внесение информации в реестр193
Разработка клиента COM194
Начальная загрузка COM Runtime195
Активизация объектов COM195
Доступ к коклассу с помощью метода СоCreateInstanceQ197
Отладка внутрипроцессного COM-сервера198
Лабораторная работа 3.3. Разработка COM-клиента199
Шаг 1. Подготовка рабочего пространства проекта200
Шаг 2. Реализация функции main()200
Краткое содержание главы203
 
Глава 4. Информация о типе и языковая независимость204
 
Жизнь без IDL205
Происхождение MIDL207
Рабочее определение IDL207
Что IDL вносит в COM?208
Конфигурирование проекта Win32 для компиляции IDL209
Результат работы компилятора MIDL210
Базовые типы данных IDL211
Проблемы с основными типами IDL212
Тип данных variant языка Visual Basic213
Набор variant-совместимых типов IDL214
Пример интерфейса, определённого на языке IDL215
Оператор typedef языка IDL216
Ключевое слово import языка IDL217
Определение пользовательских интерфейсов средствами IDL218
Атрибуты параметров, задающие направление обмена данными219
Создание перечислений в IDL220
Автоматическая справка в IDL221
Определение библиотечных команд в IDL222
Определение коклассов в IDL223
Определение интерфейса, задаваемого по умолчанию224
Физические и логические возвращаемые значения: атрибут [retval]225
Полный листинг Shapes.idl227
Файлы, генерируемые компилятором MIDL228
Использование файлов, сгенерированных компилятором MIDL230
Сводка основных ключевых слов IDL231
Регистрация информации о типе: HKEY_CLASSES_ROOTTypeLib232
Средство просмотра объектов OLE/COM234
Использование языка Visual Basic в модели COM236
Создание коклассов в VB237
Вызов QueryInterface() из Visual Basic238
Несколько слов об языке Java для COM240
Включение информации о типе в проекты J++240
Сгенерированный код Java242
Получение @com в Java243
Создание коклассов и доступ к интерфейсам из Java244
Использование директив компилятора Visual C++ COM245
Импортирование информации о типе246
Что такое специальные указатели246
Шаблон _com_ptr_t<>247
Использование специальных указателей в коде COM-клиента248
Использование нового специального указателя248
Дополнительные расширения Visual C++ COM250
Лабораторная работа 4.1. Предоставление информации о типе для СоCar251
Шаг 1. Создание информации о типе251
Шаг 2. Регистрация информации о типе254
Шаг 3. Клиент на Visual Basic255
Шаг 4. COM-клиент на Java258
Шаг 5. Клиентское приложение на C++ с использованием библиотеки
    типов261
Краткое содержание главы263
 
Глава 5. Информация о типе и прозрачность местонахождения264
 
Прозрачность местонахождения265
Прокси-объект268
Объект канала268
Менеджер прокси-объектов270
Заглушка271
А теперь всё вместе!272
Создание заглушек и прокси-объектов: интерфейс IPSFactoryBuffer273
Размещение COM DLL в суррогатном процессе274
Идентификаторы приложения (AppID)275
Установка AppID в реестре: HKEY_CLASSES_ROOTAppID275
Конфигурирование суррогатного процесса с помощью программы OLE/COM
Object Viewer278
Программирование суррогатного клиента279
Маршалинг в модели COM280
Пользовательский маршалинг281
Стандартный маршалинг282
Маршалинг библиотеки типов287
Конфигурирование интерфейса под использование универсального
    маршалинга288
Как упростить регистрацию интерфейса и библиотеки типов290
Построение локального COM-сервера291
Предоставление фабрик класса из локального сервера291
Удаление объектов класса из таблицы объектов294
Регистрация множественных фабрик класса294
Контрольная точка: GetMessage()296
Время жизни объектов в ЕХЕ-серверах297
Регистрация локальных COM-серверов298
Лабораторная работа 5.1. Разработка локального сервера на C++299
Шаг 1. Создание рабочего пространства проекта299
Шаг 2. Собираем хранилище компонентов для EXE-сервера301
Шаг 3. Создаём и используем глобальные функции блокировки303
Шаг 4. Создание клиента для локального сервера305
Если ((DCOM == COM) && (COM == DCOM)) возвращает S_OK306
Связь локального SCM и удалённого SCM307
Что такое DCOMCNFG?308
Краткий обзор DCOMCNFG309
Новый ключ: HKEY_LOCAL_MACHINE311
Основы безопасного доступа в модели COM312
Установка уровня аутентификации313
Управление доступом314
Установка идентификатора сервера316
Удалённый доступ с помощью DCOMCNFG: конфигурирование машины клиента
и машины сервера316
Программные вызовы функций библиотеки DCOM318
Лабораторная работа 5.2. Доступ к удалённому серверу с
использованием DCOM321
Шаг 1. Регистрация сервера на удалённой машине321
Шаг 2. Безопасность сервера на удалённой машине322
Шаг 3. Конфигурирование машины клиента322
Шаг 4. Программный доступ к удалённому серверу323
Краткое содержание главы326
 
Глава 6. Введение в библиотеку активных шаблонов (ATL)327
 
Необходимость ATL327
Что такое ATL?329
Разделение труда: ATL и вы331
Создание хранилища компонентов с помощью ATL COM AppWizard331
Задание типа сервера333
Вставка кода заглушки/прокси-объекта333
Поддержка MFC336
Поддержка сервера транзакций Microsoft (MTS)337
Подтверждение введённой информации338
Стартовые файлы проекта ATL DLL338
Стартовые ресурсы проекта339
Прекомпилированные заголовочные файлы340
Каркас IDL-файла341
Файл хранилища компонентов: ATLShapesServer.cpp341
Регистрация саморегистрирующихся серверов344
Мастер ATL Object Wizard345
Категория объектов346
Категория элементов управления347
Остальные типы категорий, предоставляемые Object Wizard349
Вставка простого объекта349
Удаление кокласса ATL351
Изменения в файлах проекта352
Новые файлы проекта353
Файл CCoHexagon.h354
Класс CComObjectRootEx<>355
ATL COM-карта355
Класс CComCoClass<>356
Файл CCoHexagon.cpp356
Файл CoHexagon.rgs356
Язык скриптов реестра в ATL357
Вставка методов в интерфейсы359
Добавление интерфейсов362
Добавление (или удаление) интерфейса вручную362
Использование мастера Implement Interface Wizard365
Назначение свойств интерфейсам368
IDL-синтаксис для свойств интерфейса370
Свойства с точки зрения клиента371
ATL и COM-текст372
CComBSTR: изящная упаковка BSTR373
Макросы преобразования строк библиотеки ATL376
Отладка проектов ATL378
Лабораторная работа 6.1. Сервер Car с использованием ATL381
Шаг 1. Разработка хранилища компонентов и проверка кода381
Шаг 2. Вставка простого объекта382
Шаг 3. Реализация интерфейса ICreateCar384
Шаг 4. Добавление интерфейса вручную385
Шаг 5. Использование мастера Implement Interface Wizard388
Шаг 6. Интерфейс со свойствами389
Краткое содержание главы391
 
Глава 7. Объекты ATL COM и COM-исключения392
 
На случай, если вы не знаете392
Потоки в Win32394
Проблема конкурирования и синхронизация потоков395
Потоки и COM397
Апартаменты в модели COM397
Однопотоковый апартамент (STA)398
Многопотоковый апартамент (МТА)399
Выбор модели апартамента400
Задание потоковой модели для ЕХЕ-сервера401
Задание потоковой модели для DLL-сервера402
Ещё раз о маршалинге404
Задание потоковой модели для объекта в ATL405
Базовые потоковые классы ATL407
Поддержка объектов STA в библиотеке ATL407
Поддержка ATL объектов в МТА410
Поддержка модели потока ATL-сервера, устанавливаемой по умолчанию412
Коклассы ATL как абстрактные базовые классы413
Шаблоны CComObject<>413
Простой объект ATL415
Признак объявления класса ATL_NO_VTABLE417
Методы FinalConstruct() и FinalRelease()418
Класс CComObjectRootBase: вспомогательные методы IUnknown419
CComObjectRootBase: поддержка агрегации420
CComObjectRootBase: вспомогательные функции макросов COM-карты421
CComObjectRootEx<>: задание потоковой модели423
CComCoClass<>: фабрики класса, агрегация и обработка ошибок424
CComObject<>: использование425
Метод CComObject::CreateInstance()427
COM-карта в библиотеке ATL428
Макрос BEGIN_COM_MAP429
Массив структур _ATL_INTMAP_ENTRУ431
Вспомогательный метод _GetEntries()431
Метод _InternalQueryInterface()432
Метод _GetRawUnknown()432
Макрос END_COM_MAP433
Макрос COM_INTERFACE_ENTRY: внесение интерфейсов в COM-карту434
AtlInternalQueryInterface(): гуляем по COM-карте436
Обработка ошибок437
Стандартные интерфейсы ошибок и библиотечные функции COM439
Конфигурирование кокласса на C++ для поддержки COM-исключений440
Инициализация COM-исключения442
Клиент на C++: перехват COM-исключения443
Клиент на Visual Basic Client: перехват COM-исключения445
Поддержка ISupportErrorlnfo в ATL447
Поддержка возбуждения COM-исключений в ATL449
Лабораторная работа 7.1. Отправка и получение COM-исключений451
Шаг 1. Поддержка ISupportErrorlnfo451
Шаг 2. Инициализация COM-исключения452
Шаг 3. Клиент на C++454
Шаг 4. Клиент на VB456
Краткое содержание главы457
 
Глава 8. Идентификация COM-объектов и библиотека активных шаблонов458
 
Базовая COM-карта в ATL458
Варианты макросов COM-карты в библиотеке ATL459
Реализация C++ кокласса с использованием множественного наследования461
Реализация объекта COM с использованием вложенных классов462
Определение внутреннего класса464
Реализация внутреннего класса465
Реализация внешнего Querylnterface()466
Использование вложенного класса467
Лабораторная работа 8.1. Проектирование кокласра с вложенными классами468
Шаг 1. Разработка начального проекта и кода на IDL468
Шаг 2. Реализация CoHexagon с использованием вложенных классов469
Шаг 3. Создание фабрики класса473
Шаг 4. Сборка хранилища компонентов474
Шаг 5. Клиент на Visual Basic475
Разрешение конфликтов имён методов интерфейса476
Разрешение конфликта имён в ATL480
Лабораторная работа 8.2. Предотвращение конфликта имён в ATL483
Шаг 1. Создание конфликта имён483
Шаг 2. Разрешение конфликта имён485
Неоднозначности в иерархии интерфейсов487
Макрос COM_INTERFACE_ENTRY_IID490
Макрос COM_INTERFACE_ENTRY2491
Макрос COM_INTERFACE_ENTRY2_IID491
Отрываемые интерфейсы492
Пример отрываемого интерфейса на C++493
Реализация отрываемого интерфейса495
Изменения в классе-владельце497
Использование отрываемого интерфейса499
Создание отрываемого интерфейса средствами ATL500
Реализация в ATL класса-владельца501
Макрос COM_INTERFACE_ENTRY_CACHED_TEAR_OFF502
Задание интерфейса IUnknown класса-владельца503
Вам понравились отрываемые интерфейсы?505
Лабораторная работа 8.3. Создание отрываемого интерфейса средствами
ATL506
Шаг 1. Добавляем к CoCar новый интерфейс506
Шаг 2. Создание «отрываемого» класса508
Шаг 3. Модификация класса-владельца510
Шаг 4. Клиент для тестирования небуферизованного отрываемого
    интерфейса511
Шаг 5. Буферизованный отрываемый интерфейс513
Механизмы повторного использования в COM: контейнеризация и
агрегация513
Контейнеры и делегирование в C++513
Контейнеры и делегирование в COM515
Пример контейнеризации и делегирования517
Использование контейнеризованных объектов518
Лабораторная работа 8.4. Контейнеризация в COM519
Шаг 1. Создание начального кокласса-контейнера519
Шаг 2. Создание внутреннего (контейнеризованного) кокласса520
Шаг 3. Делегирование вызовов внутреннему объекту521
Шаг 4. Модификация IDL-файла523
Агрегация в модели COM524
Поддержка агрегации в ATL526
Конфигурирование внешнего объекта527
Макросы COM-карты, поддерживающие агрегацию529
Макросы COM-карты для автоагрегации530
Лабораторная работа 8.5. Агрегация средствами ATL532
Шаг 1. Создание агрегированного объекта532
Шаг 2. Экспонируем интерфейсы внутреннего объекта533
Шаг 3. Модификация IDL-файла534
Шаг 4. «Слепая» автоагрегация535
Шаг 5. Модификация CoMiniVan537
Шаг 6. Модификация клиента на VB538
Заключительные макросы COM-карты539
Запуск пользовательских функций при вызове интерфейса540
Последний макрос: COM_INTERFACE_ENTRY_CHAIN542
Краткое содержание главы543
 
Глава 9. Хранилища компонентов и библиотека активных шаблонов544
 
Задачи, выполняемые сервером COM544
Класс CComModule: диспетчер-контролер вашего сервера545
Создание и удаление объектов CComModule546
Отслеживание активных блокировок и активных объектов547
Поддержка регистрации548
Создание фабрик класса548
Экземпляр CComModule, генерируемый по умолчанию549
Что такое карта объектов549
Построение карты объектов550
Структура _ATL_OBJMAP__ENTRY551
Макрос OBJECT_ENTRY553
Определение метода Update Registry()555
Пользовательские версии UpdateRegistry()558
Когда вызывается UpdateRegistry()559
Классы-создатели в ATL560
Задание метода _ClassFactoryCreatorClass::CreateInstance()561
CComClassFactory: реализация IClassFactory по умолчанию565
Лицензионные фабрики класса и IClassFactory2568
Фабрики класса для объекта-одиночки569
Ваша собственная фабрика класса571
Задание метода _CreatorClass::CreateInstance()572
Альтернативные макросы агрегации574
Задание метода GetObjectDescription()576
Категории COM578
Обзор категорий компонентов579
Классификация категорий COM580
Задание метода GetCategoryMap()581
Задание пользовательской карты категорий582
Задание метода ObjectMain()585
Построение моделей объектов сервера585
Макрос OBJECT_ENTRY_NON_CREATEABLE: задание «несоздаваемых»
коклассов587
Краткая справка по карте объектов588
Лабораторная работа 9.1. Полнофункциональный сервер ATL588
Шаг 1. Создание начального сервера589
Шаг 2. Создание пользовательской категории COM591
Шаг 3. Специальная регистрация593
Шаг 4. Несоздаваемый класс595
Шаг 5. Обеспечение доступа к несоздаваемому классу596
Шаг 6. Тестовая программа-клиент на Visual Basic598
Шаг 7. Получение категорий COM599
Краткое содержание главы601
 
Глава 10. Скриптовые объекты и ATL602
 
«Интеллектуальные» клиенты и vTable-интерфейс603
«Глупые» клиенты: языки, не понимающие vTable604
Кому требуется IDispatch?605
Интерфейс IDispatch607
Методы интерфейса IDispatch608
Интерфейс диспетчеризации и константы DISPID609
Способы реализации интерфейса диспетчеризации средствами C++613
Реализация IDispatch средствами C++614
Код стороны клиента и тип данных variant619
Создание типа данных variant в C++621
CComVariant упаковочный класс ATL для типа данных variant623
Структура DISPPARAMS623
Безопасные массивы627
Библиотечные функции COM для работы со структурой SAFEARRAY628
Использование структур SAFEARRAY в качестве параметров629
Лабораторная работа 10.1. Создание скриптового объекта средствами C++632
Шаг 1. Создание начального сервера и кокласса632
Шаг 2. Фабрика класса и хранилище компонентов636
Шаг 3. Клиент C++, использующий позднее связывание637
Шаг 4. Клиент на Visual Basic, использующий позднее связывание638
Шаг 5. Скриптовый клиент, использующий позднее связывание638
Шаг 6. Запуск CoSquiggle из MS Visual Studio640
Дуальные интерфейсы641
Разработка дуальных интерфейсов средствами IDL и C++642
Создание кокласса дуального интерфейса вручную643
Лабораторная работа 10.2. Разработка объекта, поддерживающего
дуальные интерфейсы645
Шаг 1. Добавление информации о типе646
Шаг 2. Модификация CoSquiggle647
Шаг 3. Клиент VB649
Шаг 4. Клиент MFC650
Создание интерфейса диспетчеризации с использованием информации
о типе653
Лабораторная работа 10.3. Дуальный объект, реализованный с
использованием информации о типе657
Шаг 1. Загрузка информации о типе658
Шаг 2. Применение информации о типе659
Шаг 3. Снова используем информацию о типе661
Создание интерфейса диспетчеризации средствами ATL662
Шаблон IDispatchlmpl<>663
Упаковочный класс ATL для информации о типе: CComTypelnfoHolder665
Несколько дуальных интерфейсов в одном коклассе667
Лабораторная работа 10.4. Поддержка интерфейса IDispatch в ATL669
Шаг 1. Модификация существующего кода IDL670
Шаг 2. Модификация кокласса671
Шаг 3. Создание Web-клиента672
Краткое содержание главы675
 
Глава 11. Перечисления и коллекции в COM676
 
Описание сложных параметров интерфейсов в IDL676
Задание массивов IDL в качестве параметров методов677
Безопасные массивы в качестве параметров методов679
Структуры в качестве параметров методов682
COM-интерфейс в качестве параметра метода684
Перечисления в COM685
Стандартные интерфейсы перечислений686
Методы интерфейсов перечислений COM687
Создание пользовательского COM-интерфейса перечислений средствами C++689
Реализация интерфейса IEnumAge691
Использование COM-объекта перечисления693
Поддержка ATL перечислений COM695
Шаблон CComlEnum<>695
Шаблон CComEnumlmpl<>696
Шаблон CComEnum<>697
Шаблоны ATL__Сору<>698
Создание интерфейсов перечислений средствами ATL699
Флаги инициализации перечисления702
Код стороны клиента703
Лабораторная работа 11.1. Создание объекта перечисления ATL704
Шаг 1. Задание связи контейнер/внутренний объект704
Шаг 2. Определение пользовательского COM-интерфейса перечисления707
Шаг 3. Реализация метода GetPersonEnum()707
Шаг 4. Клиент C++708
Коллекции в COM709
Стандартные методы коллекций COM710
Разработка простой коллекции COM711
Реализация метода Count()713
Реализация метода Item()714
Выполнение методов Count() и Item() в Visual Basic715
Реализация метода _NewEnum716
Добавление и удаление объектов718
Лабораторная работа 11.2. Создание коллекции средствами ATL722
Шаг 1. Создание внутреннего объекта722
Шаг 2. Создание интерфейса коллекции723
Шаг 3. Реализация начального объекта коллекции723
Шаг 4. Добавление и удаление элементов726
Шаг 5. Клиент на Visual Basic727
Краткое содержание главы729
 
Глава 12. Косвенно-вызываемые интерфейсы и соединяемые объекты731
 
Односторонний обмен информацией731
Опрос объекта733
Механизм косвенного вызова733
Разработка механизма косвенного вызова в C++734
Использование косвенно-вызываемого интерфейса из Visual Basic738
Использование косвенного вызова в C++739
Лабораторная работа 12.1. Создание косвенно-вызываемого интерфейса740
Шаг 1. Генерация кода IDL741
Шаг 2. Конфигурирование CoCar742
Шаг 3. Клиент на Visual Basic743
Шаг 4. Клиент на C++745
Архитектура соединяемых объектов COM747
Интерфейсы IConnectionPointContainer и IEnum ConnectionPoints748
Интерфейсы IConnectionPoint и IEnumConnections750
Создание соединяемого объекта в C++752
Уведомление и отмена уведомления754
Остальные методы, реализуемые объектом-источником755
Возбуждение события757
Реализация контейнера точек соединения в C++757
IDL и внешние интерфейсы759
Использование соединяемых объектов из Visual Basic760
Использование соединяемых объектов из C++761
Создание соединяемых объектов средствами ATL762
Установление соединения: ещё один мастер ATL766
Изменения в коклассе CoSomeObject768
Подробности о поддержке точек соединения в ATL769
Шаблон ATL IConnectionPointlmpl<>772
Интерфейс IProvideClassInfo(2): облегчение жизни клиента774
Лабораторная работа 12.2. Создание соединяемого объекта средствами
ATL777
Шаг 1. Создание начального кокласса777
Шаг 2. Добавление события777
Шаг 3. Возбуждение события778
Шаг 4. Тестовый клиент на VB779
Краткое содержание главы781
 
Глава 13. Использование ATL при разработке приложений Windows783
 
ATL как набор средств для создания окон784
Составные части окна в Windows785
Формирование цикла обработки сообщений Windows785
Создание структуры WNDCLASSEX786
Отображение окна788
Обработка сообщений: процедура WndProc789
ATL и Windows791
Класс CWindow792
Создание окна средствами ATL795
Использование шаблона CWinTraits<>795
Создание и удаление окна средствами ATL797
Обработка сообщений Windows средствами ATL797
Мастер Add Windows Handler Wizard798
Шаблон CWindowImpl<>801
Модификация полей структуры WNDCLASSEX, установленных по умолчанию803
Реализация функции WndProc в ATL803
Класс CMessageMap и метод Process WindowMessage()805
Карта сообщений в ATL806
Заполнение карты сообщений807
Альтернативные макросы карты сообщений808
Создание блока диалога в ATL809
Использование шаблона CSimpleDialog<>810
Шаблон CSimpleDialog<>811
Создание интерактивного диалога средствами ATL812
Добавление пользовательского обработчика события814
Лабораторная работа 13.1. ATL и Windows816
Шаг 1. Создание исходного проекта816
Шаг 2. Создание ресурсов817
Шаг 3. Создание класса, производного от CWindowImpl<>818
Шаг 4. Создание объекта COM822
Шаг 5. Тестовый клиент на Visual Basic824
Краткое содержание главы826
 
Глава 14. Разработка элементов управления ActiveX с помощью ATL828
 
Элемент управления ActiveX829
Страницы свойств830
Элементы управления, невидимые во время выполнения программы831
Структура стандартного элемента управления ActiveX832
Типы объектов, предоставляемых мастером ATL Object Wizard834
Конфигурирование полного элемента управления с помощью мастера ATL
Object Wizard836
Опции вкладки Miscellaneous837
Выбор базовых свойств839
Полный элемент управления: начальный код IDL841
Модифицированный файл скрипта реестра (RGS)842
Цепочка наследования для полнофункционального элемента управления844
Карты, сгенерированные мастером ATL846
Полнофункциональный элемент управления и категории COM848
Добавление специального свойства к классу CShapesControl849
Отображение элемента управления с помощью OnDraw()851
Пользовательская версия метода OnDraw()853
Реализация базовых свойств Caption и Font855
Установка цвета фона856
Инициализация специального события858
Задание постоянства свойств860
Добавление метода AboutBox к элементу управления Shapes Control861
Тестовый клиент на VB862
Отладка элементов управления ActiveX863
Лабораторная работа 14.1. Создание полнофункционального элемента
управления ActiveX средствами ATL864
Шаг 1. Подготовка рабочего пространства и ресурсов864
Шаг 2. Проектирование пользовательского интерфейса867
Шаг 3. Реализация пользовательских свойств869
Шаг 4. Реализация методов CreateCar() и AboutBox()869
Шаг 5. Сборка [default, source]-интерфейса870
Шаг 6. Добавление переменных для управления анимацией871
Шаг 7. Конфигурирование таймера873
Шаг 8. Рисуем изображения875
Шаг 9. Visual Basic как контейнер876
Поддержка ActiveX в ATL: шаблоны CComControl<> и IPropertyNotifySinkСР<>878
Поддержка свойств [bindable] и [requestedit]880
Поддержка ActiveX в ATL: CComControlBase882
Свойства окружающей среды883
Реакция на изменение свойств окружения886
Базовые свойства и шаблон CStockPropImpl<> в ATL886
Макросы базовых свойств в ATL888
Шаблон IViewObjectExImpl<>890
Постоянство объектов COM и библиотека ATL891
Макросы карты свойств в ATL893
Элементы управления ActiveX, страницы свойств и контейнер895
Создание страниц свойств в ATL898
Шаблон IPropertyPagelmpl<>900
Программирование метода Apply()901
Шаг в другом направлении: отображение текущих свойств в элементах GUI905
Использование элемента управления ActiveX на Web-странице906
Манипулирование элемента управления ShapesControl в Web907
Лицензионная фабрика класса и интерфейс IClassFactory2909
Лабораторная работа 14.2. Добавление в проект страниц свойств
и постоянства свойств912
Шаг 1. Расширим наши специальные свойства912
Шаг 2. Поддержка постоянства свойств914
Шаг 3. Создание страницы пользовательских свойств915
Краткое содержание главы920
 
Приложение. Описание дискеты921
 
Предметный указатель922

Книги на ту же тему

  1. Объектно-ориентированное программирование в C++. — 4-е изд., Лафоре Р., 2003
  2. ASP компоненты. Для профессионалов, Пауэрс Ш., 2002
  3. C# и платформа .NET, Троелсен Э., 2004
  4. Мультипарадигменное проектирование для C++, Коплиен Д., 2005
  5. Разработка приложений на C++ и С#. Библиотека программиста, Секунов Н. Ю., 2003
  6. C++ Boost Graph Library, Сик Д., Ли Л., Ламсдэйн Э., 2006
  7. STL. Карманный справочник, Лишнер Р., 2005
  8. Программирование на C++ в Linux, Секунов Н. Ю., 2003
  9. C++. Карманный справочник, Лоудон К., 2004
  10. Конструирование распределённых объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/COM и Java/RMI, Эммерих В., 2002
  11. Java. Сборник рецептов для профессионалов, Дарвин Я. Ф., 2002
  12. Java в примерах. Справочник, 2-е издание, Флэнаган Д., 2003
  13. Java сервлеты и JSP: сборник рецептов, Перри Б. У., 2005
  14. Введение в Java-технологию, Сафонов В. О., 2002
  15. Платформа .NET для Java-программистов, Гиббонз П., 2003
  16. Философия Java, Эккель Б., 2001
  17. Java 2, Ноутон П., Шилдт Г., 2000

Напишите нам!© 1913—2013
КнигоПровод.Ru
Рейтинг@Mail.ru работаем на движке KINETIX :)
elapsed time 0.022 secработаем на движке KINETIX :)