|
|
|
Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Содержание
Благодарности
Введение
MFC, ATL и WFC - MFC мертва?
C++ и Java
Кому адресована эта книга
Что не вошло в книгу
Как пользоваться книгой
Структура книги
Часть 1: Основные сведения о Windows, Visual C++
и каркасе приложения
Часть 2: Класс "вид" библиотеки MFC
Часть 3: Архитектура "документ-вид"
Часть 4: СОМ, Автоматизация и OLE
Часть 5: Работа с базами данных
Часть 6: Программирование для Интернета
Приложения
Win32 или Win16?
Windows 98 или Windows NT 4.0?
Использование возможностей Windows: вставки "Для тех,
кто программирует в Win32"
Прилагаемый компакт-диск
Технические замечания и примеры программ
Поддержка
ЧАСТЬ 1. Основные сведения о Windows, Visual C++
и каркасе приложения
ГЛАВА 1 Microsoft Windows и Visual C++
Модель программирования в Windows
Обработка сообщений
Интерфейс графического устройства
Программирование, основанное на ресурсах
Управление памятью
Динамически подключаемые библиотеки
Интерфейс прикладных программ Win32
Компоненты Visual C++
Microsoft Visual C++ 6.0 и процесс построения программ
Редакторы ресурсов и просмотр ресурсов проекта
Компилятор C/C++
Редактор исходного текста
Компилятор ресурсов
Компоновщик
Отладчик
AppWizard
ClassWizard
Средство просмотра исходного кода
Интерактивная справочная система
Диагностические утилиты
Контроль исходного кода
Gallery
Microsoft Foundation Class Library 6.0
Microsoft Active Template Library
ГЛАВА 2 Каркас приложений Microsoft
Foundation Class Library
Назначение каркаса приложений
Путь, который Вам предстоит
Понятие каркаса приложений
Каркас приложений и библиотека классов
Пример на базе каркаса приложений
Сопоставление сообщений в библиотеке MFC
Документы и их представление
ЧАСТЬ II. Класс "вид" библиотеки MFC
ГЛАВА 3 Знакомство с AppWizard- "Hello, World!"
Что такое "вид"
Интерфейсы SDI и MDI
Пример ЕХ03А
Класс CEx03aView
Рисование внутри окна представления: Windows GDI
Функция-член OnDraw
Контекст устройства в Windows
Добавление кода рисования в программу ЕХ03А
Первое знакомство с редакторами ресурсов
Содержимое ех03а.rс
Работа с редактором диалоговых окон
Конфигурации Win32 Debug и Win32 Release
Активизация диагностических макросов
Предкомпилированные заголовочные файлы
Два способа запуска программы
ГЛАВА 4 Основы обработки событий, режимы преобразования
координат и окна с прокруткой
Прием пользовательского ввода: функции таблицы сообщений
Таблица сообщений
Хранение состояния объекта "вид": переменные-члены класса
Инициализация переменных-членов класса "вид"
Теория недействительного прямоугольника
Клиентская область окна
Арифметические операции с CRect, CPoint и CSize
Попадает ли точка внутрь прямоугольника?
Оператор LPCRECT
Попадает ли точка внутрь эллипса?
Пример ЕХ04А
EX04AVIEW.H
EX04AVIEW.CPP
Использование ClassWizard с ЕХ04А
Совместное использование AppWizard и ClassWizard
Режимы преобразования координат
Режим преобразования ММ_ТЕХТ
Режимы преобразования координат с постоянным масштабом
Режимы преобразования координат с переменным масштабом
Преобразование координат
Пример ЕХ04В
Окно представления с прокруткой
Окно - это больше, чем видно на экране
Линейки прокрутки
Различные способы прокрутки
Функция OnInitialUpdate
Прием ввода с клавиатуры
Пример ЕХ04С
Другие сообщения Windows
Сообщение WM_CREATE
Сообщение WM_CLOSE
Сообщение WMQUERYENDSESSION
Сообщение WM_DESTROY
Сообщение WM_NCDESTROY
ГЛАВА 5 Интерфейс графического устройства,
цвет и шрифт
Классы "контекст устройства"
Классы контекста дисплея CClientDC и CWindowDC
Создание и уничтожение CDC-объектов
Состояние контекста устройства
Класс CPaintDC
Объекты GDI
Создание и уничтожение GDI-объектов
Управление GDI-объектами
Стандартные GDI-объекты
Время жизни контекста устройства
Преобразование цветов в Windows
Стандартные видеоплаты VGA
Видеоплаты, поддерживающие 256 цветов
Видеоплаты с 16-разрядным цветом
Видеоплаты с 24-разрядным цветом
Шрифты
Шрифты как GDI-объекты
Выбор шрифта
Шрифты и вывод на печать
Отображение шрифтов на дисплее
Логические и физические дюймы на дисплее
Вычисление высоты символа
Пример ЕХ05А
Элементы программы ЕХ05А
Установка режима преобразования
координат в функции OnPrepareDC
Закрытая функция-член SnowFont
Вызов CFont::CreateFont
Пример ЕХ05В
Элементы программы ЕХ05В
Функция-член OnDraw
Вспомогательная функция TraceMetrics
Пример ЕХ05С
Элементы программы ЕХ05С
Переменные-члены m_sizeEllipse и m_pointTopLeft
Переменная-член m_sizeOffset
Переменная-член m_bCaptured
Функции SetCapture и ReleaseCapture
Функции Win32 SetCursor и LoadCursor
Функция-член CScrollView::OnPrepareDC
Преобразование координат в OnMouseMove
Функция OnDraw
Режим SetScaleToFitSize класса CScrollView
Режим преобразования координат "логический твип"
в окне с прокруткой
ГЛАВА 6 Модальные диалоговые окна и стандартные
элементы управления Windows
Модальные и немодальные диалоговые окна
Ресурсы и элементы управления
Программирование модального диалогового окна
Пример ЕХ06А
Построение диалогового ресурса
ClassWizard и класс "диалоговое окно"
Подключение диалогового окна к классу "вид"
Разбор приложения ЕХ06А
Усовершенствование программы ЕХ06А
Перехват контроля при выходе по OnOK
Обработка OnCancel
Подключение элементов управления "полосы прокрутки"
Доступ к элементам управления;
CWnd-указатели и идентификаторы
Выбор фона диалогового окна и цвета элементов управления
Вывод графики в диалоговом окне
Добавление элементов управления в период выполнения
Использование других свойств элементов управления
Стандартные элементы управления Windows
Элемент управления "индикатор продвижения"
Элемент управления "ползунок"
Элемент управления "наборный счетчик"
Элемент управления "графический список"
Элемент управления "древовидный список"
Сообщение WM_NOTIFY
Пример ЕХ06В
Другие стандартные элементы управления Windows
ГЛАВА 7 Немодальные и стандартные
диалоговые окна Windows
Немодальные диалоговые окна
Создание немодальных диалоговых окон
Пользовательские сообщения
Принадлежность диалогового окна
Пример ЕХ07А
Класс CFormView: альтернатива
немодальному диалоговому окну
Стандартные диалоговые окна Windows
Непосредственное использование класса CFileDialog
Производные классы стандартных диалоговых окон
Вложение диалоговых окон
Пример ЕХ07В
Прочие возможности адаптации CFileDialog
ГЛАВА 8 Использование элементов управления ActiveX
ActiveX и обычные элементы управления Windows
Основные характеристики обычных элементов управления
Общие черты ActiveX и обычных элементов управления
Различия ActiveX и обычных элементов управления
Установка элементов управления ActiveX
Элемент управления Calendar
Программирование контейнера ActiveX-элементов
Доступ к свойствам
Классы-оболочки C++, генерируемые
ClassWizard для ActiveX-элемента
Поддержка ActiveX-элементов в AppWizard
ClassWizard и диалоговое окно контейнера
Переменные-члены класса диалогового окна или
использование класса-оболочки?
Привязка событий от элементов управления ActiveX
Блокировка ActiveX-элементов в памяти
Пример ЕХ08А
ACTIVEXDIALOG.H
ACTIVEXDIALOG.CPP
ActiveX-элементы в файлах HTML
Создание ActiveX-элементов в период выполнения
Пример ЕХ08В
Пример ЕХ08С
Свойства-картинки
Связываемые свойства: уведомления об изменении
Другие элементы управления ActiveX
ГЛАВА 9 Стандартные элементы управления
Internet Explorer 4
Основы стандартных элементов управления Internet Explorer 4
Элемент выбора даты и времени
Календарь на месяц
Элемент ввода IP-адреса
Расширенный комбинированный список
Пример ЕХ09А
ГЛАВА 10 Управление памятью в Win32
Процессы и адресное пространство
Адресное пространство процесса Windows 95
Адресное пространство Windows NT
Устройство виртуальной памяти
Функция VirtualAlloc: переданная и
зарезервированная память
Куча Windows и семейство функций GlobalAlloc
Куча библиотеки С периода выполнения, _heapmin и С++ -
операторы new и delete
Файлы, проецируемые в память
Доступ к ресурсам
Советы по работе с кучей
Оптимизация хранения констант
ГЛАВА 11 Растровые изображения
Растровые изображения GDI и DIB
Цветные и монохромные растровые изображения
Использование GDI-растров
Загрузка GDI-растра из ресурса
Влияние режима преобразования координат
Растяжение изображений
Пример ЕХ11А
Растровые изображения и улучшенный вывод на экран
Пример ЕХ11В
Анимация в Windows
DIB-изображения и класс CDib
Несколько слов о программировании палитры
DIB, пикселы и цветовые таблицы
Структура DIB в BMP-файле
Функции для работы с DIB
Класс CDib
CDIB.H
Производительность при выводе DIB-изображения на дисплей
Пример ЕХ11C
Еще несколько слов о DIB
Функция LoadImage
Функция DrawDIBDraw
Растровые изображения на командных кнопках
Пример ЕХ11D
И еще пара слов о растровых изображениях на кнопках
ГЛАВА 12 Обработка сообщений Windows и программирование
многопоточных приложений
Обработка сообщений Windows
Обработка сообщений в однопоточной программе
Передача управления
Таймеры
Пример ЕХ12А
Обработка в периоды простоя
Программирование многопоточных приложений
Функция рабочего потока и запуск потока
Общение основного потока с рабочим
Общение рабочего потока с основным
Пример ЕХ12В
Синхронизация потоков с использованием событий
Пример ЕХ12С
Блокировка потоков
Критические секции
HMS.H
Мьютексы и семафоры
Потоки пользовательского интерфейса
ЧАСТЬ III. Архитектура "документ-вид"
ГЛАВА 13 Меню, быстрые клавиши, поле Классы основного
окна-рамки и документа
Классы основного окна-рамки и документа
Меню Windows
Быстрые клавиши
Обработка команд
Обработка командных сообщений в производных классах
Обновление командного пользовательского интерфейса
Команды, генерируемые диалоговыми окнами
Меню, встроенные в каркас приложений
Включение и отключение команд в меню
Возможности редактирования текста в MFC
Класс CEditView
Класс CRichEditView
Класс CRichEditCtrl
Пример ЕХ13А
Окна свойств
Создание окна свойств
Обмен данными в окне свойств
И снова пример ЕХ1ЗА
PROPERTY.H
PROPERTY.CPP
Обработка кнопки Apply
Класс CMenu
Создание контекстных меню
Расширенная обработка команд
ГЛАВА 14 Панели инструментов и строки состояния
Панели элементов управления и каркас приложений
Панель инструментов
Растровое изображение панели инструментов
Состояния кнопок
Панель инструментов и командные сообщения
Обновление пользовательского интерфейса
для панелей инструментов
Всплывающие подсказки
Поиск основного окна-рамки
Пример ЕХ14А
Строка состояния
Определение секций в строке состояния
Строка сообщений
Индикатор состояния
Управление строкой состояния
Пример ЕХ14В
Панель инструментов Internet Explorer Rebar
Внутренняя структура rebar-панели
Пример ЕХ14С
ГЛАВА 15 Повторно используемый базовый
класс окна-рамки
Причины трудностей при создании повторно
используемых базовых классов
Класс CPersistentFrame
Класс CFrameWnd и функция-член ActivateFrame
Функция-член PreCreateWindow
Реестр Windows
Использование класса CString
Положение развернутого окна
Состояние панелей элементов управления и реестр
Статические переменные-члены
Оконный прямоугольник по умолчанию
Пример ЕХ15А
PERSIST.H
PERSIST.CPP
Устойчивые рамки в MDI-приложениях
ГЛАВА 16 Документ и его представление
Функции взаимодействия "документ-вид"
Функция CView::GetDocument
Функция CDocument::UpdateAllViews
Функция CView::OnUpdate
Функция CView::OnInitialUpdate
Функция CDocument::OnNewDocument
Простейшее приложение на базе архитектуры "документ-вид"
Класс CFormView
Класс CObject
Диагностика
Макрос TRACE
Объект afxDump
Классы CDumpContext и CObject
Автоматическая диагностика неуничтоженных объектов
Пример ЕХ16А
STUDENT.H
STUDENT.CPP
Усложненное взаимодействие "документ-вид"
Функция CDocument::DeleteContents
Класс набора CObList
Применение класса CObList для создания списков типа FIFO
Перебор элементов CObList: переменная типа POSITION
Класс-шаблон набора CTypedPtrList
Диагностика и классы наборов
Пример ЕХ16В
Требования к ресурсам
Панель инструментов
Меню Student
Меню Edit
Диалоговый шаблон IDD_STUDENT
Требования к коду
СЕх16bАрр
CMainFrame
CStudent
CStudentDoc
STUDOC.H
STUDOC.CPP
ClassWizard и CStudentDoc
Переменные-члены
Конструктор
GetList
DeleteContents
Dump
CStudentView
STUVIEW.H
STUVIEW.CPP
ClassWizard и CStudentView
Переменные-члены
OnInitialUpdate
OnUpdate
Защищенные виртуальные функции
Тестирование программы ЕХ16В
Пара упражнений для читателя
ГЛАВА 17 Чтение и запись документов в SDI-приложениях
Понятие сериализации
Дисковые файлы и архивы
Создание сериализуемого класса
Создание функции Serialize
Загрузка из архива: внедренные объекты и указатели
Сериализация наборов
Функция Serialize и каркас приложений
SDI-приложение
Объект-приложение Windows
Класс шаблона документа
Ресурс шаблона документа
Множественное представление документа в SDI-программах
Создание пустого документа: функция CWinApp::OnFileNew
Функция OnNewDocument класса "документ"
Связывание File Open с кодом
сериализации: функция OnFileOpen
Функция DeleteContents класса "документ"
Связывание File Save и File Save As с кодом сериализации
Флажок "документ изменен"
Пример ЕХ17А
CStudent
СЕх17аАрр
ЕХ17А.Н
ЕХ17А.СРР
CMainFrame
MAINFRM.H
MAINFRM.CPP
CStudentDoc
Serialize
DeleteContents
OnOpenDocument
OnUpdateFileSave
CStudentView
Тестирование приложения ЕХ17А
Запуск программ из Windows Explorer и
операция drag-and-drop
Регистрация программы
Двойной щелчок документа
Активизация механизма drag-and-drop
Параметры командной строки
Эксперименты с запуском программы из Windows Explorer
и операцией drag-and-drop
ГЛАВА 18 Чтение и запись документов в MDI-приложениях
MDI-приложение
Типичное MDI-приложение в стиле MFC
Объект "MDI-приложение"
Класс шаблона MDI-документа
Окно-рамка и дочернее окно в MDI-программе
Ресурсы основного окна-рамки и шаблона документа
Создание пустого документа: функция CWinApp::OnFileNew
Создание дополнительного окна представления
для существующего документа
Загрузка и сохранение документов
Множественные шаблоны документов
Запуск MDI-программ из Windows Explorer и
операцией drag-and-drop
Пример ЕХ18А
СЕх18аАрр
ЕХ18А.Н
ЕХ18А.СРР
CMainFrame
MAINFRM.H
MAINFRM.CPP
CChildFrame
CHILDFRM.H
CHILDFRM.CPP
Тестирование приложения ЕХ18А
ГЛАВА 19 Печать и предварительный просмотр
Печать в Windows
Стандартные диалоговые окна печати
Интерактивный выбор страниц для печати
Экранные и отпечатанные страницы
Предварительный просмотр перед печатью
Программирование вывода на печать
Контекст принтера и функция CView::OnDraw
Функция CView::OnPrint
Подготовка контекста устройства:
функция CView::OnPrepareDC
Начало и конец печати
Пример ЕХ19А
Определение области печати
Еще раз о классах-шаблонах наборов: класс CArray
Пример ЕХ19В
ГЛАВА 20 Разделяемые окна и множественное
представление данных
Разделяемое окно
Варианты создания множественных представлений
Динамически и статически разделяемые окна
Пример ЕХ20А
Ресурсы для разделения окна
CMainFrame
Тестирование приложения ЕХ20А
Пример ЕХ20В
CHexView
CMainFrame
Тестирование приложения ЕХ20В
Пример ЕХ20С
Требования к ресурсам
CMainFrame
Тестирование приложения ЕХ20С
Пример EX20D
Требования к ресурсам
CEx20dApp
CMainFrame
Тестирование приложения EX20D
ГЛАВА 21 Контекстно-зависимая справка
Программа WinHelp
Текст с форматированием
Пример ЕХ21А: подготовка простого справочного файла
Совершенствование оглавления
Каркас приложений и WinHelp
Вызов WinHelp
Применение строк для поиска
Вызов WinHelp из меню программы
Синонимы контекстной справки
Определение контекста справки
Вызов справки клавишей F1
Вызов справки сочетанием клавиш Shift+F1
Справка в информационном окне: функция AfxMessageBox
Стандартные справочные разделы
Пример создания справки без программирования
Создание справочной системы
Обработка команд запроса справки
Обработка клавиши F1
Обработка сочетания клавиш Shift+FI
Пример ЕХ21В
Требования к заголовочным файлам
CStringView
CHexView
Требования к ресурсам
Требования к справочному файлу
Тестирование приложения ЕХ21В
ГЛАВА 22 Динамически подключаемые библиотеки
Основы DLL
Согласование импортируемых элементов с экспортируемыми
Явное и неявное связывание
Связывание по символьным именам и порядковым номерам
Точка входа в DLL: функция DLLMain
Описатели экземпляров и загрузка ресурсов
Порядок поиска DLL клиентской программой
Отладка DLL
DLL-расширения и обычные DLL
Общие DLL MFC-библиотеки
DLL-расширения:экспорт классов
Последовательность поиска ресурсов в DLL-расширении
Пример ЕХ22А
Пример ЕХ22В
Обычные DLL: класс, производный от CWinApp
Использование макроса AFX_MANAGE_STATE
Последовательность поиска ресурсов в обычной DLL
Пример ЕХ22С
Коррекция ЕХ22В для проверки ex22c.dll
DLL с пользовательскими элементами управления
Понятие пользовательского элемента управления
Оконный класс пользовательского элемента управления
Библиотека MFC и функция WndProc
Уведомляющие сообщения пользовательских
элементов управления
Пользовательские сообщения, посылаемые
элементу управления
Пример EX22D
ЕХ22.СРР
RYGWND.H
RYGWND.CPP
Коррекция ЕХ22В для проверки ex22d.dll
ГЛАВА 23 MFC-программы без классов "документ" и "вид"
Пример ЕХ23А
Функция InitInstance класса приложения
Класс диалогового окна и значок программы
Пример ЕХ23В
Пример ЕХ23С
ЧАСТЬ IV. СОМ, Автоматизация и OLE
ГЛАВА 24 Модель многокомпонентных объектов
Основы технологии ActiveX
Модель многокомпонентных объектов
Проблема, которую решает СОМ
Сущность СОМ
СОМ-интерфейс
Интерфейс lUnknown и функция-член Querylnterface
Учет ссылок: функции AddFtef и Release
Фабрики класса
Класс CCmdTarget
Пример ЕХ24А
INTERFACE.H
SPACESHIP.H
SPACESHIP.CPP
CLIENT.CPP
Реальная СОМ с применением MFC
СОМ-функция CoGetClassObject
СОМ и Реестр Windows
Регистрация объекта в период выполнения
Вызов СОМ-клиентом внутреннего компонента
Вызов СОМ-клиентом внешнего компонента
MFC-макросы для интерфейсов
MFC-класс COleObjectFactory
Поддержка внутренних СОМ-компонентов со
стороны AppWizard и ClassWizard
СОМ-клиенты на базе MFC
Пример ЕХ24В
INTERFACE.H
SPACESHIPS.H
SPACESHIP.CPP
Пример ЕХ24С
Вложение и агрегирование по сравнению с наследованием
ГЛАВА 25 Автоматизация
Взаимодействие C++ с Visual Basic for Applications
Клиенты и компоненты Автоматизации
Microsoft Excel - лучший Visual Basic, чем сам Visual Basic
Свойства, методы и наборы
Задачи, решаемые Автоматизацией
Интерфейс IDispatch
Варианты программирования Автоматизации
MFC-реализацияIDispatch
Компонент Автоматизации на базе MFC
Клиент Автоматизации на базе MFC
Использование директивы компиляции
#import клиентом Автоматизации
Тип данных VARIANT
Класс COleVariant
Преобразования типов параметров и
возвращаемых значений для Invoke
Примеры Автоматизации
Пример ЕХ25А
Пример ЕХ25В
EX25BAUTO.H
EX25BAUTO.CPP
Пример ЕХ25С
Пример EX25D
Библиотеки типов и ODL-файлы
Класс контроллера для ех25а.ехе
BANKDRIVER.H
BANKDRIVER.CPP
Класс контроллера для ex25b.dll
AUTODRIVER.H
Класс контроллера для ех25с.ехе
CLOCKDRIVER.H
Управление приложением Microsoft Excel
Пример ЕХ25Е
Раннее связывание в VBA
Регистрация библиотеки типов
Регистрация компонентом своей библиотеки типов
ODL-файл
Использование библиотеки типов в Excel
Назначение раннего связывания
Ускорение подсоединения контроллера к компоненту
ГЛАВА 26 Унифицированная передача данных
Интерфейс IDataObject
Преимущества IDataObject по сравнению со стандартной
поддержкой буфера обмена
Структуры FORMATETC и STGMEDIUM
FORMATETC
STGMEDIUM
Функции-члены интерфейса IDataObject
Поддержка унифицированной передачи данных в MFC
Класс COleDataSource
Класс COleDataObject
Передача объекта данных через буфер обмена
MFC-класс CRectTracker
Преобразование координат прямоугольника CRectTracker
Пример ЕХ26А
Класс CMainFrame
Класс CEx26aDoc
Класс CEx26aView
EX26AVIEW.H
EX26AVIEW.CPP
Поддержка drag-and-drop в MFC
Что происходит в источнике
Что происходит в приемнике
Последовательность действий при drag-and-drop
Пример ЕХ26В
Класс CEx26bDoc
Класс CEx26bView
Приложения Windows и drag-and-drop: Dobjview
ГЛАВА 27 Структурированное хранилище
Составные файлы
Хранилища и интерфейс IStorage
Получение указателя на IStorage
Освобождение памяти в STATSTG
Перечисление элементов хранилища
Совместное использование хранилища несколькими процессами
Потоки и интерфейс IStream
Программирование IStream
Интерфейс lLockBytes
Пример ЕХ27А
Меню
Класс CEx27aView
Рабочие потоки кода
THREAD.H
WRITETHREAD.CPP
READTHREAD.CPP
Структурированные хранилища и устойчивые СОМ-объекты
Интерфейс IPersistStorage
Интерфейс IPersistStream
Программирование IPersistStream
Пример ЕХ27В
ТЕХТ.Н
ТЕХТ.СРР
Пример ЕХ27С
WRITETHREAD.CPP
READTHREAD.CPP
Фрагментация составных файлов
Другие преимущества составных файлов
ГЛАВА 28 Внедряемые компоненты и контейнеры OLE
Внедрение и Visual Editing
Полные и мини-серверы: связывание
Обратная сторона Visual Editing
Метафайлы Windows и внедренные объекты
Архитектура OLE-компонента на базе MFC
Пример ЕХ28А
Внедряемый MDI-компонент?
Стратегия масштабирования для компонента,
активизируемого по месту
Взаимодействие контейнер-компонент
Применение интерфейса компонента IOleObject
Загрузка и сохранение внутренних данных компонента:
составные документы
Передача данных через буфер обмена
Получение метафайла от компонента
Роль внутрипроцессного обработчика
Состояния компонента
Интерфейсы контейнера
Уведомления
Метафайл для буфера обмена
Сводка интерфейсов
Интерфейс IOleObject
Интерфейс IViewObject2
Интерфейс IOleClientSite
Интерфейс IAdviseSink
Вспомогательные функции OLE
Контейнерное OLE-приложение с поддержкой внедрения
Поддержка MFC для OLE-контейнеров
Некоторые ограничения контейнера
Возможности контейнера
Пример ЕХ28В
Класс CEx28bView
EX28BVIEW.H
EX28BVIEW.CPP
GetSize
SetNames
SetViewAdvise
MakeMetafilePict
SaveObject
DoPasteObjectDescriptor
DoPasteObject
Класс CEx28bDoc
EX28BDOC.H
EX28BDOC.CPP
Пример ЕХ28С
Класс CEx28cView
Класс CEx28cDoc
EX28CDOC.H
ГЛАВА 29 Основы ATL
Снова СОМ
Базовый интерфейс IUnknown
Написание кода
Классы СОМ на основе множественного наследования
Инфраструктура СОМ
Новый каркас
ActiveX, OLE и СОМ
ActiveX, MFC и СОМ
Путеводитель по ATL
Программирование клиента с помощью ATL
Шаблоны C++
Smart-указатели
Наполнение указателей "интеллектом"
Применение smart-указателей
Smart-указатели и СОМ
Smart-указатели в ATL
CComPtr
Использование CComPtr
CComQIPtr
Использование CComQIPtr
Проблемы применения smart-указателей
Программирование сервера с помощью ATL
ATL и классы СОМ
Параметры ATL СОМ AppWizard
Создание СОМ-класса
Подразделения и потоки
Точки соединения и ISupportErrorInfo
Маршалер свободных потоков
Реализация класса Spaceship с использованием ATL
Базовая архитектура ATL
Управление размером vtbl
ATL-версия IUnknown:CComObjectRootEx
ATL и Querylnterface
Запуск космического корабля
Добавление методов к интерфейсу
Дуальные интерфейсы
ATL и Dispatch
Интерфейсы IMotion и IVisual
Несколько дуальных интерфейсов
ГЛАВА 30 ATL и элементы управления ActiveX
Элементы управления ActiveX
Использование ATL для создания элементов управления
Создание элемента управления
Архитектура элемента управления на основе ATL
CComControl
CComControlBase
CWindowImpl и CWindowImplBase
Окна в ATL
Таблицы сообщений в ATL
Проектирование элемента управления
Отрисовка
Отклик на оконные сообщения
Добавление свойств и страниц свойств
Страницы свойств
Устойчивость свойств
Двустороннее взаимодействие (события)
Использование элемента управления
ЧАСТЬ V. Работа с базами данных
ГЛАВА 31 Microsoft ODBC
Преимущества СУБД
SQL
Стандарт ODBC
Архитектура ODBC
Использование ODBC SDK
MFC-классы ODBC: CRecordset и CDatabase
Подсчет строк в наборе записей
Обработка исключений ODBC
База данных для учета студентов
Пример ЕХ31А
Элементы программы ЕХ31А
Интеграция класса набора записей в приложение
Функция-член OnInitialUpdate класса CEx31aView
Функция-член OnDraw класса CEx31aView
Строки для фильтрации и сортировки
Объединение двух таблиц базы данных
MFC класс CRecordView
Пример ЕХ31В
Несколько наборов записей
Пример ЕХ31С
Параметризованные запросы
Многопоточность в ODBC
Групповая выборка строк
Использование наборов записей без привязки
ГЛАВА 32 Microsoft DAO
DAO, СОМ и ядро баз данных Microsoft Jet
DAO и VBA
DAO и MFC
Варианты работы с базами данных
Использование DAO в режиме ODBC:
снимки и динамические множества
Табличные наборы записей DAO
DAO-классы QueryDef и TableDef
Многопоточность в DAO
Отображение строк базы данных в окне с прокруткой
Варианты прокрутки
Класс строкового представления
ROWVIEW.H
Разделение труда между базовым и производным классами
Чисто виртуальные функции-члены CRowView
Другие функции CRowView
Программирование динамического набора записей
Пример ЕХ32А
СЕх32аАрр
CMainFrame и CChildFrame
CEx32aDoc
Переменные-члены
OnOpenDocument
OnCloseDocument
OnFileDaoOpenOdbc и DaoOpenOdbc
OnFileDaoOpenIsam и DaoOpenIsam
OnFileDaoOpenMdb и DaoOpenMdb
OnFileDaoDisconnect
OpenRecordset
OnRequery
PutQuery и GetQuery
Serialize
CEx32aView
Переменные-члены
OnUpdate
GetRowWidthHeight, GetActiveRow, ChangeSelectionNextRow
и ChangeSelectionToRow
GetRowCount
OnDrawRow и DrawDataRow
OnlnitialUpdate и OnTimer
CTableSelect
Переменные-члены
Конструктор
OnInitDialog
OnDblclkList1
CIsamSelect
Переменные-члены
OnInitDialog
Файл ресурсов ЕХ32А
Работа с программой ЕХ32А
ГЛАВА 33 Шаблоны OLE DB
Понятие OLE DB
Основы архитектуры OLE DB
Основы архитектуры шаблонов OLE DB
Архитектура шаблонов OLE DB-потребителя
Базовая поддержка источников данных
Поддержка доступа к данным и наборов строк
Поддержка таблиц и команд
Архитектура шаблонов OLE DB-поставщика
Совместная работа всех компонентов поставщика
Создание OLE DB-потребителя
Использование OLE DB-потребителя
Создание OLE DB-поставщика
Цель создания OLE DB-поставщика
Написание OLE DB-поставщика
Модификация кода поставщика
Улучшение поставщика
ЧАСТЬ VI. Программирование для Интернета
ГЛАВА 34 TCP/IP, Winsock и WinInet
"СОМ иль не СОМ?"
Основы Интернета
Сетевые протоколы и их уровни
Протокол IP
Протокол UDP
Формат IP-адреса и сетевой порядок байтов
Протокол TCP
Система доменных имен
Серверы и имена доменов
Клиенты и имена доменов
Основы HTTP
Основы FTP
Интернет и интрасеть
Создание интрасети
NTFS или FAT
Сетевое аппаратное обеспечение
Настройка Windows для работы в сети
Имена хостов для интрасети: файл HOSTS
Тестирование интрасети: программа Ping
Интрасеть на одном компьютере: адрес локального хоста
Winsock
Синхронное и асинхронное программирование
Классы Winsock в MFC
Классы блокирующих сокетов
Вспомогательный класс CSockAddr
Класс CBlockingSocketException
Класс CBlockingSocket
BLOCKSOCK.H
Класс CHttpBlockingSocket
Упрощенный сервер HTTP
Инициализация Winsock
Запуск сервера
Серверный поток
Очистка
Упрощенный клиент HTTP
Создание Web-сервера при помощи CHttpBlockingSocket
Ограничения сервера ЕХ34А
Архитектура сервера ЕХ34А
Использование функции Win32 TransmitFile
Сборка и тестирование ЕХ34А
Использование Telnet
Создание Web-клиента с помощью CHttpBlockingSocket
Winsock-клиент ЕХ34А
Поддержка прокси-серверов в ЕХ34А
Тестирование Winsock-клиента ЕХ34А
Wininet
Преимущества WinInet по сравнению с Winsock
WinInet-классы в MFC
CInternetSession
CHttpConnection
CFtpConnection, CGopherConnection
CInternetFile
CHttpFile
CFtpFileFind, CGopherFileFind
CInternetException
Функции обратного вызова
Упрощенный Winlnet-клиент
Создание Web-клиента при помощи Winlnet-классов MFC
Winlnet-клиент No1
Тестирование Winlnet-клиента No1
WinInet-клиент No2
Тестирование Winlnet-клиента No2
Асинхронные файловые моникеры
Моникеры
Класс CAsyncMonikerFile в MFC
Использование класса CAsyncMonikerFile в программе
Асинхронные файловые моникеры или
программирование с помощью WinInet
ГЛАВА 35 Программирование для Microsoft Internet
Information Server
Альтернатива IIS
Microsoft IIS
Установка и управление
Запуск Internet Service Manager
Защита IIS
Каталоги IIS
Регистрация соединений IIS
Тестирование IIS
ISAPI-расширения сервера
CGI и ISAPI
Простой запрос GET к ISAPI-расширению
HTML-формы: GET или POST?
Создание DLL ISAPI-расширения сервера
MFC-классы для ISAPI-расширения сервера
CHttpServer
CHttpServerContext
CHtmlStream
Пример ЕХ35А
Первый шаг: получение заказа
Второй шаг: обработка подтверждения
Сборка и тестирование ex35a.dll
Отладка ЕХ35А DLL
Доступ к базам данных из ISAPI-расширения
Использование подсказок
Работа подсказок
Обработка подсказок ISAPI-расширением сервера
Проблемы при использовании подсказок
Аутентификация
Базовая аутентификация
Аутентификация Windows NT Challenge/Response
Уровень защищенных сокетов
ISAPI-фильтры
Создание DLLISAPI-фильтра
MFC-классы для ISAPI-фильтра
CHttpFilter
CHttpFilterContext
Пример ISAPI-фильтра: ex35b.dll, ex35c.exe
Выбор уведомления
Передача данных о транзакции в программу просмотра
Программа отображения
Сборка и тестирование ISAPI-фильтра ЕХ35В
ГЛАВА 36 Интернет и серверы ActiveX-документов
Основы ActiveX-документов
Сервер ActiveX-документов в сравнении
с внедренным OLE-сервером
Запуск сервера ActiveX-документов в
браузере Internet Explorer
Сервер ActiveX-документов в сравнении
с ActiveX-элементом
Интерфейсы OLE в серверах и контейнерах
ActiveX-документов
Поддержка серверов ActiveX-документов библиотекой MFC
COleServerDoc
CDocObjectServerItem
CDocObjectServer
COleDoclPFrameWnd
Пример ЕХ36А
Этап 1 ЕХ36А: простой сервер
Отладка сервера ActiveX-документов
Этап 2 ЕХ36А: добавление вызовов WinInet
Пример ЕХ36В
Программная генерация POST-запросов
Класс "вид" в примере ЕХ36В
Сборка и тестирование ЕХ36В
Серверы ActiveX-документов и VB Script
Дальнейшее знакомство с серверами ActiveX-документов
ГЛАВА 37 Введение в Dynamic HTML
Модель DHTML-объектов
Visual C++ и DHTML
Примеры ЕХ37А и ЕХ37В
Пример ЕХ37С
Дополнительная информация
ГЛАВА 38 Visual C++для Windows СЕ
Устройства Windows СЕ
Windows СЕ и Windows 98/NT
Visual C++ for Windows CE
MFC для Windows СЕ
Пример ЕХ38А
Пример ЕХ38В
ATL и Windows СЕ
Дополнительная информация
ПРИЛОЖЕНИЕ А
Функции таблицы сообщений в MFC
ПРИЛОЖЕНИЕ Б
Идентификация классов во время выполнения и
динамическое создание объектов
Определение имени класса объекта в период выполнения
Структура CRuntimeClass и макрос RUNTIME_CLASS в MFC
Динамическое создание объектов
Пример программы
Предметный указатель
Начало
Введение
Структура книги
Об авторах
Компакт-диск
Заказать книгу в магазине "Мистраль"
|
|
|
|
|
|
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее... |
|