Программирование для Windows 95 и Windows nt Введение
В предыдущих томах серии “Библиотеки системного программиста” мы ориентировались в первую очередь на язык программирования Си. Даже если некоторые программы были написаны на Си++, то богатые возможности этого языка практически не использовались.
Сегодня уровень сложности программного обеспечения настолько высок, что разработка коммерческих приложений Windows с использованием средств одного только языка Си значительно затрудняется. Программист должен будет затратить массу времени на решение стандартных задач по созданию многооконного интерфейса. Реализация технологии связывания и встраивания объектов – OLE потребует от программиста еще более тяжелой работы.
Чтобы облегчить работу программиста практически все современные компиляторы с языка Си++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.
Современные интегрированные средства разработки приложений Windows позволяют автоматизировать процесс создания приложения. Для этого используются генераторы приложений. Вы отвечаете на вопросы генератора приложений и определяете свойства приложения – поддерживает ли оно многооконный режим, технологию OLE, трехмерные органы управления, справочную систему. Генератор приложений создаст приложение, отвечающее вашим требованиям и предоставит вам его исходные тексты. Пользуясь ими как шаблоном, вы сможете быстро разрабатывать свои приложения.
Подобные средства автоматизированного создания приложений включены в компилятор Microsoft Visual C++ и называются MFC AppWizard – волшебник. Действительно, то что делает MFC AppWizard сродни волшебству. Заполнив несколько диалоговых панелей, можно указать характеристики приложения и получить его исходные тексты с обширными комментариями. MFC AppWizard позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющих главного окна – вместо него используется диалоговая панель. Вы можете включить поддержку технологии OLE, баз данных, справочной системы.
Возможности MFC AppWizard позволяют всего за несколько минут создать собственный многооконный редактор текста с возможностью сервера и клиента OLE. При этом вы не напишите ни единой строчки текста, а исходный текст приложения, созданный MFC AppWizard, можно сразу оттранслировать и получить выполнимый модуль приложения, полностью готовый к использованию.
Конечно волшебство MFC AppWizard не всесильно. Прикладную часть приложения вам придется разрабатывать самостоятельно. Исходный текст приложения, созданный MFC AppWizard станет только основой, к которой надо подключить остальное. Но не стоит разочаровываться – работающий шаблон приложения это уже половина всей работы. Исходные тексты приложений автоматически полученных от MFC AppWizard могут составлять сотни строк текста. Набор его вручную был бы очень утомителен.
Надо отметить, что MFC AppWizard создает исходные тексты приложений только с использованием библиотеки классов MFC. Поэтому только изучив MFC вы сможете пользоваться средствами автоматизированной разработки и создавать свои приложения в кратчайшие сроки.
Microsoft Visual C++
Существует несколько версий компилятора Microsoft Visual C++. Наибольшее распространение получили версии 1.51, 2.0 и 2.2. В начале 1996 года появилась новая версия Visual C++ 4.0.
Microsoft Visual C++ версии 1.51 содержит только 16-разрядный компилятор. Он позволяет разрабатывать программы для операционной системы MS-DOS и Windows 3.1. Эта версия компилятора не позволяет создавать приложения, предназначенные специально для 32-х разрядных операционных систем Windows NT и Windows 95.
Версия 2.0 содержит 32-разрядный компилятор. С его помощью можно создавать приложения для Windows NT и Windows 95. Сама среда Microsoft Visual C++ версии 2.0 может работать только в 32-разрядной операционной системе Windows NT или Windows 95. Как это ни печально, но Visual C++ версии 2.0 не позволит вам создать приложения для операционных систем MS-DOS и Windows 3.1. Для этого предлагается воспользоваться предыдущей версией компилятора.
На этом различия между Visual C++ версий 1.51 и 2.0 заканчиваются. В Visual C++ версии 1.51 используется 16-и разрядная библиотека классов MFC версии 2.5, а Visual C++ 2.0 поставляется с 32-разрядной библиотекой MFC версии 3.0.
При переходе к 32-разрядным приложениям фирма Microsoft отказалась поддерживать элементы управления VBX. Вместо них MFC 3.0 позволяет работать с элементами управления OLE. Новый стандарт на элементы управления получил название OCX (OLE Custom Controls).
Фирма Microsoft приложила большие усилия, чтобы организовать совместимость своего компилятора с различными архитектурами компьютеров. Специальные версии Visual C++ работают на компьютерах с MIPS архитектурой, на компьютерах с процессорами Alpha, Motorola PowerPC. Это позволяет легко переносить разработанные приложения с одной аппаратной платформы на другую.
Популярность библиотеки классов MFC настолько высока, что такие фирмы, как Watcom и Symantec, известные своими компиляторами Си и Си++, приобрели у Microsoft лицензии на эту библиотеку. Практически единственной широко известной в России фирмой, которая поставляет компиляторы Си++ с собственной библиотекой классов является Borland. Компиляторы Borland C++ включают библиотеку классов OWL (Object Windows Library). Эта библиотека совершенно не совместима с библиотекой MFC, поэтому программы, построенные с ее использованием, нельзя транслировать компилятором Visual C++. Компилятор Borland C++ версии 5.0 позволяет транслировать приложения, созданные с использованием библиотеки классов MFC.
Microsoft Visual C++ версия 4.0
В конце 1995 года появилась новая версия Microsoft Visual C++ – 4.0. Этот компилятор интегрирован в среду Microsoft Developer Studio , в состав которого могут входить другие программные продукты Microsoft.
Интегрированная среда разработчика объединяет одной оболочкой Microsoft Visual C++ версии 4.0, Microsoft Visual Test, Microsoft Fortran PowerStation, Microsoft Development Library и Microsoft Visual SourceSafe
Для программистов, работающих в среде Visual C++, наиболее интересна возможность интегрирования с базой данных Microsoft Development Library. После того как вы установите в компьютере Microsoft Development Library, вы сможете осуществлять поиск интересующей вас информации не только в справочной базе Visual C++, но и в базе данных Microsoft Development Library. При этом вам не придется переключаться на другое приложение, достаточно выбрать справочную систему в панели Info Viewer.
Следующие версии Microsoft Visual C++
Весной 1996 года вышла новая версия Microsoft Visual C++ 4.1. В состав этой версии продукта включены дополнительные средства для разработки приложений, поддерживающих глобальную сеть Internet, язык моделирования виртуальной реальности (Virtual Reality Modeling Language – VRML), игровое SDK (Windows 95 Games SDK ) и большое количество OCX объектов, которые вы можете включать в свои приложения.
- Фролов а.В., Фролов г.В. Библиотека системного программиста
- Программирование для Windows 95 и Windows nt Введение
- Поддержка сети Internet
- Язык моделирования виртуальной реальности
- Игровое sdk
- Набор ocx объектов
- Как связаться с авторами
- Благодарности
- Ввод/вывод
- Константы
- Распределение памяти
- Операторы new и delete
- Перегрузка имен функций
- Задание параметров функции по умолчанию
- Встраивание
- Ключевое слово this
- Разграничение доступа к элементам класса
- Методы, входящие в класс
- Конструкторы и деструкторы класса
- Методы, не изменяющие объекты класса
- Статические методы
- Общие члены объектов класса
- Дружественные функции и дружественные классы
- Дружественные функции
- Дружественные классы
- Наследование
- Единичное наследование
- Множественное наследование
- Разграничение доступа к элементам базового класса
- Переопределение методов базового класса
- Виртуальные методы
- Абстрактные классы
- Структуры
- Шаблоны
- Шаблоны в mfc
- Перегрузка операторов
- Обработка исключительных ситуаций
- Операторы try, throw и catch
- Листинг 1.1. Файл Exception.Cpp
- Универсальный обработчик исключений
- Тип исключения
- 2. Введение в mfc
- Классы библиотеки mfc
- Самый базовый класс mfc (класс cObject)
- Основа структуры приложения (класс cCmdTarget)
- Подзадачи приложения (классы cWinThread и cWinApp)
- Документ приложения (класс cDocument)
- Шаблон документов (классы cDocTemplate, cSingleDocTemplate и cMultiDocTemplate)
- Окна (класс cWnd)
- Исключения (класс cException)
- Массивы, списки и словари
- Файловая система (класс cFile)
- Контекст отображения (класс cdc)
- Объекты графического интерфейса (класс cGdiObject)
- Меню (класс cMenu)
- Базы данных (классы для работы с базами данных)
- Синхронизация задач приложения (класс cSyncObject)
- Сокеты (классы cAsyncSocket и cSocket)
- Классы, не имеющие базового класса
- Простые классы
- Архивный класс (класс cArchive)
- Информация о классе объекта (структура cRuntimeClass)
- Отладка приложения (классы cDumpContext, cMemoryState)
- Печать документа (класс cPrintInfo)
- Первое приложение mfc
- Окно Project Workspace
- Листинг 2.1. Файл mfHello.Cpp
- Средства ClassView
- Добавление к классу нового метода
- Добавление к классу нового элемента данных
- Просмотр дерева наследования классов
- Редактирование методов класса
- Редактирование элементов данных класса
- Приложение с единственным окном
- Листинг 2.2. Файл mfStart.Cpp
- Листинг 2.3. Файл mfStartApp.H
- Оконные сообщения
- Сообщения от органов управления
- Командные сообщения
- Макрокоманда on_registered_message
- Макрокоманда on_message
- Макрокоманда on_command
- Макрокоманда on_command_range
- Макрокоманда on_update_command_ui
- Макрокоманда on_update_command_ui_range
- Макрокоманда on_control_range
- Забегая вперед
- Приложение mfMenu
- Листинг 2.7. Файл mfMenu.Cpp
- Ресурсы приложения
- Создание меню для приложения mfMenu
- Листинг 2.8. Файл mfMenuRes.H
- Листинг 2.9. Файл mfMenuRes.Rc
- Долгий путь сообщения
- Листинг 2.10. Файл mfMessage.Cpp
- Листинг 2.11. Фрагмент файла mfMessage.Rc
- Листинг 2.12. Файл resource.H
- Диалоговая панель
- Приложение с модальной диалоговой панелью
- Листинг 2.13. Файл mfDialog.Cpp
- Vertical Scroll Bar Вертикальная полоса просмотра
- Листинг 2.14. Фрагмент файла mfDlgRes.Rc
- Листинг 2.15. Файл resource.H
- Главный класс приложения
- Класс диалоговой панели
- Обмен данными
- Приложение с немодальной диалоговой панелью
- 3. Некоторые классы mfc
- Класс cObject – основной класс mfc
- Конструкторы класса
- Оператор присваивания
- Диагностика
- Проверка целостности объектов класса
- Получение дампа объекта класса
- Сохранение и восстановление состояния объекта
- Метод IsSerializable
- Виртуальный метод Serialize
- Информация о классе
- Виртуальный метод GetRuntimeClass
- Метод IsKindOf
- Класс cPoint – точка на плоскости
- Класс cSize – относительные координаты
- Класс cString – текстовые строки
- Конструктор класса
- Коллекции
- Массивы – шаблон cArray
- Списки – шаблон cList
- Словари – шаблон cMap
- Класс cTime – дата и время
- Файловая система – класс cFile
- Открытие и создание файлов
- Идентификатор открытого файла
- Закрытие файлов
- Чтение и запись файлов
- Метод Flush
- Операции с файлами
- Блокировка
- Позиционирование
- Характеристики открытого файла
- Файловая система – классы cMemFile и cStdioFile
- Модификация класса cMemFile
- Файловая система – класс cStdioFile
- Приложение TestFile
- Листинг 3.1. Файл TestFile.Cpp
- Листинг 3.2. Файл fsystem.Dat
- Исключения – класс cException
- Класс cException
- Класс cMemoryException
- Класс cFileException
- Приложение Except
- Листинг 3.3. Файл Except.Cpp
- Класс cArchiveException
- Класс cNotSupportedException
- Класс cResourceException
- Класс cUserException
- Запись и восстановление объектов
- Запись в архивный файл
- Чтение из архивного файла
- Многозадачные приложения
- 4. Приложение с главной диалоговой панелью
- Создание приложения средствами mfc AppWizard
- Приложение Dialog
- Имена, используемые mfc
- Ресурсы приложения
- Icons Пиктограммы
- Version information Сведения о версии приложения
- Диалоговые панели приложения Dialog
- Пиктограмма
- Исходные тексты приложения
- Главный класс приложения dialog
- Листинг 4.1. Файл Dialog.H
- Листинг 4.2. Файл Dialog.Cpp
- Главный объект приложения
- Метод InitInstance
- Класс главной диалоговой панели приложения
- Листинг 4.3. Файл DialogDlg.H
- Листинг 4.4. Файл DialogDlg.Cpp
- Конструктор класса cDialogDlg
- Метод DoDataExchange
- Метод OnInitDialog
- Метод OnSysCommand (системное меню)
- Метод OnPaint (отображение пиктограммы приложения)
- Метод OnQueryDragIcon
- Файлы StdAfx.Cpp и StdAfx.H
- Листинг 4.5. Файл StdAfx.Cpp
- Листинг 4.6. Файл StdAfx.H
- Средства ClassWizard
- Создание нового класса
- Листинг 4.7. Файл NewClass.H
- Листинг 4.8. Файл NewClass.Cpp
- Включение в класс новых методов
- Включение в класс новых элементов данных
- Просмотр характеристик класса
- 5. Однооконный интерфейс
- Модель “документ – окно просмотра ”
- Процедура создания однооконного приложения
- Приложение Single
- Ресурсы приложения
- Шаблон меню
- Панель управления toolbar
- Пиктограмма
- Диалоговая панель
- Общие замечания о ресурсах приложения
- Классы приложения
- Класс cSingleApp
- Главный объект приложения
- Конструктор класса cSingleApp
- Метод InitInstance
- Метод OnAppAbout
- Класс cSingleDoc
- Конструктор и деструктор класса cSingleDoc
- Методы OnNewDocument и Serialize
- Методы AssertValid и Dump
- Класс cSingleView
- Конструктор и деструктор класса cSingleView
- Метод GetDocument
- Метод PreCreateWindow
- Метод OnDraw
- Методы OnPreparePrinting, OnBeginPrinting и OnEndPrinting
- Методы AssertValid и Dump
- Класс cMainFrame
- Конструктор и деструктор класса cMainFrame
- Метод OnCreate
- Панель управления и панель состояния
- Панель управления
- Панель состояния
- Метод PreCreateWindow
- Методы AssertValid и Dump
- Обработка командных сообщений
- Порядок обработки сообщений
- Главное окно однооконного приложения
- Окно просмотра
- Документ
- Диалоговая панель
- Командные сообщения и приложение Single
- Изменение порядка обработки сообщений
- Стандартные команд ные сообщения
- Командные сообщения с идентификаторами id_file_
- Командные сообщения с идентификаторами id_edit_
- Командные сообщения с идентификаторами id_window_
- Командные сообщения с идентификаторами id_app_
- Командные сообщения с идентификаторами id_help_
- Командные сообщения с идентификаторами id_view_
- Простейший графический редактор
- Создание нового документа
- Сохранение и восстановление документа на диске
- Для забывчивых пользователей
- Простейший текстовый редактор
- Заключение
- Литература