Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]

     

Программирование на Microsoft Visual C++ 6.0. Для профессионалов

Дэвид Дж. Круглински, Скотт Уингоу, Джордж Шеферд

Издано: 2001, СПб., "Питер", М., "Русская Редакция"
Для профессионалов
ISBN: 5-272-00385-3
Твердый переплет, 864 стр.
Формат: 84x108/16

Начало
Введение
Структура книги
Об авторах
Компакт-диск
[Заказать книгу в магазине "Мистраль"]

Содержание

Благодарности

Введение
  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
    Динамическое создание объектов
    Пример программы

Предметный указатель

Начало
Введение
Структура книги
Об авторах
Компакт-диск
Заказать книгу в магазине "Мистраль"

 

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...