- •История Windows
- •Windows 1.0
- •Windows 1.3
- •Windows 2.0
- •Windows 3.0
- •Windows 3.1
- •Windows for Workgroups версии 3.11
- •Windows NT
- •Windows 95
- •Windows NT Workstation 4.0 и Windows NT Server 4.0
- •Windows NT 4.0 Server Enterprise Edition
- •Windows 98
- •Windows 98 Second Edition (SE)
- •Windows 2000
- •Windows 98 Millenium Edition (ME)
- •Windows XP
- •Общая архитектура WINDOWS приложения.
- •Каркас приложения
- •Регистрация класса окна
- •Создание окна.
- •Отображение окна.
- •Цикл обработки очереди сообщений.
- •WndProc
- •Обработка сообщений типового приложения.
- •Контрольные вопросы
- •Сообщения
- •Типы сообщений
- •Обработка клавиатурных сообщений
- •Обработка сообщений от мыши
- •Сообщения таймера
- •Контрольные вопросы
- •Организация ввода
- •Разупорядоченный ввод
- •Разделение потоками виртуальных очередей ввода
- •Локальное состояние ввода
- •Ввод с клавиатуры и фокус
- •Управление курсором мыши
- •Контрольные вопросы
- •Окна
- •Окна Windows
- •Иерархия окон
- •Оконная процедура, стандартные оконные процедуры
- •Стиль класса окна
- •Стили окон, окна основных стилей
- •Перекрывающиеся окна
- •Временные окна
- •Дочерние окна
- •Сообщения управления окнами
- •Окна с полосами прокрутки
- •Системные метрики
- •Определение размера окна
- •Определение расположения окна
- •Контрольные вопросы
- •Графический интерфейс устройств(GDI).
- •Создание (получение) контекста устройств.
- •Сохранение контекста устройства.
- •Прямые (отрезки) и кривые
- •Закрашенные области
- •Битовые шаблоны (растровые шаблоны, растровые образы)
- •Текст и шрифты
- •Режимы масштабирования и преобразования
- •Метафайл
- •Регионы
- •Путь
- •Палитры
- •Контрольные вопросы
- •Объекты ядра
- •Что такое объект ядра
- •Учет пользователей объектов ядра
- •Защита
- •Таблица описателей объектов ядра
- •Создание объекта ядра
- •Закрытие объекта ядра
- •Синхронизация объектов
- •Именованные объекты
- •Дублирование описателей объектов
- •Изменение флагов описателя
- •Синхронизация потоков
- •Критическая секция
- •Мьютексы
- •Семафоры
- •События
- •Ожидаемые таймеры
- •Контрольные вопросы
- •Ресурсы Windows приложения
- •Файлы ресурсов приложения
- •Значки (пиктограммы)
- •Курсоры
- •Битовые образы
- •Символьные строки
- •Ресурсы, определяемые пользователем
- •Таблица акселераторов
- •Меню
- •Диалоговые окна
- •Контрольные вопросы
- •Элементы управления
- •Дочерние окна управления
- •Создание дочерних окон
- •Сообщения дочерних окон родительскому окну
- •Сообщения родительского окна дочерним окнам
- •Дочерние окна и фокус ввода
- •Дочерние окна управления и цвет
- •Кнопки различных стилей (класс BUTTON)
- •Нажимаемые кнопки
- •Флажки-переключатели
- •Переключатели
- •Окна групп
- •Кнопки, определяемые пользователем
- •Статические поля (класс static)
- •Текстовые редакторы (класс edit)
- •Списки разных стилей (класс listbox)
- •Комбинированные списки (класс combobox)
- •Полосы прокрутки (класс scrollbar)
- •Контрольные вопросы
- •Расширенные элементы управления
- •Основы общих элементов управления
- •Инициализация библиотеки элементов общего пользования
- •Создание элементов управления общего пользования
- •Посылка сообщений общим элементам управления
- •Уведомляющие сообщения от общих элементов управления
- •Контрольные вопросы
- •Стандартные диалоговые окна.
- •Окна сообщений
- •Диалоговые окна общего пользования
- •Контрольные вопросы
- •Динамически подключаемые библиотеки
- •Создание DLL
- •Проецирование DLL на адресное пространство процесса
- •Функция входа/выхода
- •Функция DllMain и стандартная библиотека С
- •Функция LibEntry
- •Функция LibMain
- •Функция WEP
- •Экспорт функций и переменных из DLL
- •Импорт функций и переменных из DLL
- •Заголовочный файл DLL
- •Разделы в ЕХЕ- и DLL-файлах
- •Контрольные вопросы
- •Файлы, проецируемые в память
- •Контрольные вопросы
- •Классы, определяющие архитектуру приложения
- •Классы приложения и поддержки потоков
- •Классы приложения и потоков
- •Классы фреймов окон
- •Получение информации о приложении
- •Соглашения об именах MFC
- •Включаемые файлы
- •Функция WinMain
- •Класс CWinApp
- •Класс CWnd
- •Класс CFrameWnd
- •Создание главного окна SDI-приложения
- •Примечание
- •Создание главного окна SDI-приложения
- •Создание дочерних окон
- •Ограничение размеров окна
- •Ограничение доступа к окну
- •Создание многодокументных приложений
- •Класс CMDIChildWnd
- •MDI — пример приложения
- •Категории сообщений
- •Карта сообщений
- •Компоненты карты сообщений
- •Класс CCmdTarget
- •Стандартный маршрут команды
- •Команды обновления и класс CCmdlll
- •Функции для работы с сообщениями
- •Основные положения
- •Класс CDocTemplate
- •Класс CSingleDocTemplate
- •Роль фреймов в архитектуре "документ/представление"
- •Документ и его представления
- •Документы
- •Класс CDocument
- •Класс CArchive
- •Представления
- •Класс CView
- •Панели элементов управления
- •Класс CStatusBar
- •Класс CStatusBarCtrl
- •Класс CDialogBar
- •ControlBars — пример приложения
- •НЕКОТОРЫЕ КЛАССЫ MFC
- •Класс CObject - основной класс MFC
- •Конструкторы класса
- •Оператор присваивания
- •Диагностика
- •Проверка целостности объектов класса
- •Получение дампа объекта класса
- •Сохранение и восстановление состояния объекта
- •Метод IsSerializable
- •Виртуальный метод Serialize
- •Информация о классе
- •Виртуальный метод GetRuntimeClass
- •Метод IsKindOf
- •Класс CPoint - точка на плоскости
- •Класс CSize - относительные координаты
- •Класс CString - текстовые строки
- •Конструктор класса
- •Коллекции
- •Массивы - шаблон CArray
- •Списки - шаблон CList
- •Словари - шаблон CMap
- •Класс CTime - дата и время
- •Файловая система - класс CFile
- •Открытие и создание файлов
- •Идентификатор открытого файла
- •Закрытие файлов
- •Чтение и запись файлов
- •Метод Flush
- •Операции с файлами
- •Блокировка
- •Позиционирование
- •Характеристики открытого файла
- •Файловая система - классы CMemFile и CStdioFile
- •Модификация класса CMemFile
- •Файловая система - класс CStdioFile
- •Запись и восстановление объектов
- •Запись в архивный файл
- •Чтение из архивного файла
- •Исключения - класс CException
- •Класс CException
- •Класс CMemoryException
- •Класс CFileException
- •Приложение Except
- •Класс CArchiveException
- •Класс CNotSupportedException
- •Класс CResourceException
- •Класс CUserException
Стандартные диалоговые окна.
Окна сообщений
Окна сообщений - это специальные диалоговые окна, отображающие указанное сообщение, заголовок и комбинацию кнопок и значков.
Использование: для отображении короткого информационного сообщения для пользователя и представлении ограниченного числа вариантов выбора.
Создание: при помощи функции MessageBox. Приложение, вызывающее эту функцию, определяет текстовую строку для отображения и множество флагов (с префиксом MB_), указывающих тип и внешний вид этого окна сообщения:
int iCode=MessageBox(hWnd,”Текст сообщения”,“Заголовок окна”, MB_OK);
hWnd - дескриптор того окна (обычного или диалогового), которое создает окно сообщения.
Набор флагов ,являющихся 4 параметром функции MessageBox , связанных с помощью поразрядного ИЛИ:
•Первая группа флагов задает кнопки, которые появляются в нижней части окна сообщения: MB_OK (по умолчанию), MB_OKCANCEL, MB_YESNO, MB_YESNOCANCEL, MB_RETRYCANCEL, MB_ABORTRETRYIGNORE и MB_HELP. Эти флаги позволяют использовать максимум четыре кнопки.
•Вторая группа флагов задает то, какая из этих четырех кнопок получит по умолчанию фокус ввода: MB_DEFBUTTON1 (по умолчанию), MB_DEFBUTTON2, MB_DEFBUTTON3 и MB_DEFBUTTON4.
•Третья группа флагов задает пиктограмму, который появится в окне сообщения (пиктограмма по умолчанию не задается): MB_ICONINFIRMATION (или
MB_ICONASTERISK) – информационный значок, MB_ICONWARNING (или MB_ICONEXCLAMATION) – значок напоминания, MB_ICONERROR (или
MB_ICONSTOP, или MB_ICONHAND) – значок выяснения намерений пользователя, MB_ICONQUESTION – значок информирования о наличии серьезных проблем.
•Четвертый набор флагов определяет, является ли окно сообщения модальным окном приложения – MB_APPMODAL, или это системное модальное окно –
MB_SYSTEMMODAL.
Диалоговые окна общего пользования
Диалоговые окна общего пользования – это ряд наиболее часто употребляемых диалоговых окон.
Использование:
•стандартном вид, вызов одной из функций общего диалогового окна как часть
Win32 API.
•Настройка общих диалоговых окон приложения, реализуя специальные функции и создавая шаблоны пользовательских диалоговых окон.
Функции и структуры, которые необходимы для использования диалоговых окон общего пользования, определяются в файле commdlg.h:
#include <commdlg.h>
! Файл comdlg32.lib - библиотека импорта диалоговых окон общего пользования, файл comdlg32.dll - это динамически подключаемая библиотека, в которой содержатся шаблоны и процедуры диалога.
Типы диалоговых окон общего пользования:
•диалоговые окна открытия (“Open”) и сохранения (“Save As”) файлов – предоставление пользователю возможность просмотреть файловую систему и выбрать файл для чтения или записи.
Диалоговое окно “Open” открывается при вызове функции GetOpenFileName. Единственным параметром функции является указатель на структуру OPENFILENAME. Члены этой структуры обеспечивают значения для инициализации диалогового окна.
int iCode=GetOpenFileName(&ofn);
Диалоговое окно “Save As” отображается в ответ на вызов функции GetSaveFileName. Эта функция также имеет единственный параметр - указатель на структуру OPENFILENAME.
int iCode=GetSaveFileName(&ofn);
•выбора цвета (“Color”)
Диалоговое окно “ChooseColor” появляется в ответ на вызов функции ChooseColor. Приложения могут управлять начальным значением в этом диалоговом окне через указатель на структуру CHOOSECOLOR – единственный параметр, передаваемый функции ChooseColor (поле rgbResult этой структуры отвечает за выбранный цвет). Посредством этой структуры приложения могут также настраивать поведение диалогового окна, поддерживая обработчик и имя шаблона пользовательского диалогового окна.
•шрифта (“Font”)
Диалоговое окно “ChooseFont” появляется в ответ на вызов функции ChooseFont. Инициализируется оно через структуру CHOOSEFONT, которую также можно использовать для указания пользовательского обработчика и имени шаблона диалогового окна. Переменная lpLogFont этой структуры указывает на структуру LOGFONT, которая используется для инициализации диалогового окна и получения информации о новом выбранном шрифте при закрытии диалогового окна.
•печати (“Print”) – выбор принтера и его инициализация; и ее настройки (“Page Setup”)- выбор источника и типа бумаги
Для использования диалогового окна “Print” приложение должно сначала подготовить содержимое структуры PRINTDLG, а затем вызвать функцию PrintDlg с указателем на эту структуру – единственным параметром этой функции.
Диалоговое окно “Page Setup” отображается при вызове приложением PageSetupDlg. Единственным параметром этой функции является указатель на структуру PAGESETUPDLG. Через эту структуру приложение может управлять элементами управления диалогового окна, а при его закрытии получать доступ к выбору пользователя.
•поиска (“Find”) и замены (“Replace”) текста - интерфейс, посредством которого пользователь может ввести текстовую строку для поиска и, если необходимо, строку для замены.
!Эти диалоговые окна являются немодальными; все другие общие диалоговые окна работают как модальные.
Диалоговое окно “Find” отображается в ответ на вызов функции FindText. Эта функция возвращает дескриптор диалогового окна, который можно использовать в основном цикле сообщений в вызове функции IsDialogMessage. Инициализация диалогового окна осуществляется через структуру FINDREPLACE, включающую все значения, которые пользователь может ввести в диалоговом окне.Общается со своим окном-владельцем через последовательность сообщений. Перед вызовом FindText приложение должно через вызов функции RegisterWindowMessage зарегистрировать строку сообщения “FINDMSGSTRING”. Диалоговое окно “Find” будет посылать приложению это сообщение при вводе пользователем нового значения поиска.
Диалоговое окно “Replace” очень похоже на “Find” и инициализируется через ту же структуру FINDREPLACE. Это диалоговое окно отображается в ответ на вызов функции ReplaceText.
При получении сообщения FINDMSGSTRING от диалогового окна “Find” и “Replace” приложение может проверить переменную flags структуры FINDREPLACE для определения необходимого пользователю действия.
Контрольные вопросы
1.Чем являются окна сообщений? При помощи какой функции они создаются?
2.Как можно повлиять на состав элементов управления окна сообщений?
3.Для чего приложение используют стандартные диалоговые панели выбора файла? Какие панели такого типа существуют? Какие функции предназначены для их создания?
4.Для чего предназначен диалог выбора цвета? Как его создать?
5.Что приложение может получить в результате работы диалоговой панели выбора шрифта? Как отобразить эту панель на экране?
6.Какие диалоговые окна предназначены для выбора принтера, его инициализации, для выбора источника и типа бумаги?