Фролов А.В., Фролов Г.В. Библиотека системного программиста Том 24 Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT Введение Microsoft Visual C++ Microsoft Visual C++ версия 4.0 Следующие версии Microsoft Visual C++ Как связаться с авторами Благодарности 1. Немного о C++ Ввод/вывод Константы Ссылки Распределение памяти Операторы new и delete Перегрузка имен функций Задание параметров функции по умолчанию Встраивание Классы Ключевое слово this Разграничение доступа к элементам класса Методы, входящие в класс Конструкторы и деструкторы класса Методы, не изменяющие объекты класса Статические методы Общие члены объектов класса Наследование Единичное наследование Множественное наследование Разграничение доступа к элементам базового класса Переопределение методов базового класса Виртуальные методы Абстрактные классы Структуры Шаблоны Шаблоны в MFC Перегрузка операторов Обработка исключительных ситуаций Операторы try, throw и catch Универсальный обработчик исключений Тип исключения 2. Введение в MFC Классы библиотеки MFC Самый базовый класс MFC (класс CObject) Основа структуры приложения (класс CCmdTarget) Исключения (класс CException) Массивы, списки и словари Файловая система (класс CFile) Контекст отображения (класс CDC) Объекты графического интерфейса (класс CGdiObject) Меню (класс CMenu) Базы данных (классы для работы с базами данных) Синхронизация задач приложения (класс CSyncObject) Сокеты (классы CAsyncSocket и CSocket) Классы, не имеющие базового класса Простые классы Архивный класс (класс CArchive) Информация о классе объекта (структура CRuntimeClass) Отладка приложения (классы CDumpContext, CMemoryState) Печать документа (класс CPrintInfo) Первое приложение MFC Окно Project Workspace Средства ClassView Добавление к классу нового метода Добавление к классу нового элемента данных Просмотр дерева наследования классов Редактирование методов класса Редактирование элементов данных класса Приложение с единственным окном Обработка сообщений Оконные сообщения Сообщения от органов управления Командные сообщения Таблица сообщений Приложение MFMenu Долгий путь сообщения Диалоговая панель Приложение с модальной диалоговой панелью Приложение с немодальной диалоговой панелью 3. Некоторые классы MFC Класс CObject – основной класс MFC Конструкторы класса Оператор присваивания Диагностика Сохранение и восстановление состояния объекта Информация о классе Класс CPoint – точка на плоскости Класс CSize – относительные координаты Класс CString – текстовые строки Конструктор класса Коллекции Массивы – шаблон CArray Списки – шаблон CList Словари – шаблон CMap Класс CTime – дата и время Файловая система – класс CFile Открытие и создание файлов Идентификатор открытого файла Закрытие файлов Чтение и запись файлов Метод Flush Операции с файлами Блокировка Позиционирование Характеристики открытого файла Файловая система – классы CMemFile и CStdioFile Модификация класса CMemFile Файловая система – класс CStdioFile Приложение TestFile Исключения – класс CException Класс CException Класс CMemoryException Класс CFileException Класс CArchiveException Класс CNotSupportedException Класс CResourceException Класс CUserException Запись и восстановление объектов Запись в архивный файл Чтение из архивного файла Многозадачные приложения 4. Приложение с главной диалоговой панелью Создание приложения средствами MFC AppWizard Приложение Dialog Имена, используемые MFC Ресурсы приложения Исходные тексты приложения Средства ClassWizard Создание нового класса Включение в класс новых методов Включение в класс новых элементов данных Просмотр характеристик класса 5. Однооконный интерфейс Модель “документ – окно просмотра ” Процедура создания однооконного приложения Приложение Single Ресурсы приложения Классы приложения Обработка командных сообщений Порядок обработки сообщений Командные сообщения и приложение Single Изменение порядка обработки сообщений Стандартные команд ные сообщения Простейший графический редактор Создание нового документа Сохранение и восстановление документа на диске Для забывчивых пользователей Простейший текстовый редактор Заключение Литература
Встраивание В некоторых случаях более удобно и эффективно выполнять подстановку тела функции вместо ее вызова. Непосредственная подстановка тела функции позволит сэкономить время процессора на вызове функции. В языке Си этого можно достичь при помощи директивы препроцессора #define. Однако неправильное использование директивы может стать причиной ошибок.
Си++ предусматривает специальный механизм для встраивания функций. Чтобы указать компилятору, что данную функцию необходимо встраивать, перед ее объявлением или определением надо указать ключевое слово inline:
inline unsigned int Invert(unsigned int number) {
return (~number);
}