- •История 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
В любой момент времени приложение может также определить расположение и размер окна, вызвав функцию:
void GetWindowRect(HWND hwnd, RECT FAR* lprc);
•Эта функция выдает информацию о расположении и размере прямоугольной области, ограничивающей окно, с учетом заголовка, рамки и полос просмотра. Все координаты отсчитываются от верхнего левого угла экрана.
Контрольные вопросы
1.Что определяет (характеризует) стиль класса окна? Что определяет стиль окна?
2.Как задается стиль класса окна?
3.Как создать окно? Последовательность действий?
4.Что такое окно-владелец и подчиненное окно? Чем поведение подчиненного окна отличается от поведения обычного перекрывающегося окна?
5.Для чего чаще всего используются временные (всплывающие, popup) окна?
6.Какой внешний вид обычно имеют временные окна (назвать стиль класса)?
7.Где располагается начало системы координат для перекрывающихся и временных окон?
8.Для чего обычно используются дочерние окна?
9.Где располагается начало системы координат для дочерних окон?
10.Какой внешний вид обычно имеют дочерние окна (назвать стиль класса)?
11.Каковы особенности поведения дочерних окон?
12.Какое значение имеют понятия диапазон полосы прокрутки и ее текущее положение? Как можно изменять эти характеристики?
13.Какие сообщения приходят окну от полос просмотра?
14.При помощи какой функции можно определить системные метрики Windows?
15.Когда окно получает сообщение WM_SIZE и какие дополнительные параметры передаются окну вместе с этим сообщением?
16.Для чего предназначена функция GetClientRect?
17.Когда окно получает сообщение WM_MOVE и какие дополнительные параметры передаются окну вместе с этим сообщением?
18.Для чего предназначена функция GetWindowRect?
Графический интерфейс устройств(GDI).
Графический интерфейс устройства (GDI) — подсистема Windows , отвечающая за отображение графики (включая текст) на видеотерминалах и принтерах.
К совместимым компьютерам может быть подключено множество различных устройств отображения, поэтому одной из основных задач GDI является поддержка аппаратнонезависимой графики.
графические устройства отображения
Растровые устройства |
Веторные устройства |
(представление графических |
(представление графических образов с |
образов как шаблон точек ) |
помощью линий) |
|
|
Видеоадаптеры |
Матричные и |
Плоттеры |
|
лазерные принтеры |
|||
|
|
Таблица 1
Структура GDI
Функции |
Примитивы |
Различные аспекты |
|
(режимы и атрибуты) |
|||
|
|
||
Функции, которые получают (или |
Прямые (отрезки) и кривые. |
Режимы масштабирования и |
|
создают) и освобождают (или |
|
преобразования. |
|
|
|
||
уничтожают) контекст устройства. |
|
|
Функции, которые получают информацию о контексте устройства.
Функции рисования.
Функции, которые устанавливают и получают атрибуты контекста устройства.
Функции, которые работают с объектами GDI.
Таблица 2
Закрашенные области. |
Метафайлы. |
Битовые шаблоны (растровые |
Регионы. |
шаблоны, растровые образы). |
|
Текст. |
Пути. |
|
|
|
Отсечение. |
|
Палитры. |
|
Печать. |
Контекст устройства(device context, DC) - это структура, определяющая набор графических объектов и связанных с ними атрибутов и графических режимов, которые воздействуют на вывод.
Создание (получение) контекста устройств.
•Общая функция для получения описателя контекста устройства - это функция
CreateDC
hdc = CreateDC (pszDriver, pszDevice, pszOutput, pData); [другиестрокипрограммы]
DeleteDC (hdc);
•Получениеописателяконтекстаустройства, относящегосякклиентскойобластиокна
1. приобработкесообщенияWM_PAINT
hdc = BeginPaint (hwnd, &ps);
[другиестрокипрограммы] EndPaint (hwnd, &ps);
2. приобработкедругихсообщений
hdc = GetDC (hwnd); [другиестрокипрограммы] ReleaseDC (hwnd, hdc);
•Получениеописателяконтекстаустройства, относящегосяковсемуокнупрограммы
hdc = GetWindowDC (hwnd); [другиестрокипрограммы] ReleaseDC (hwnd. hdc);
!Получениедругихописателейконтекстов.
•Получениеописателя «информационногоконтекста»(information context), используя функциюCreateIC. Параметрытакиеже, какуфункцииCreateDC.
•Полученияописателя«контекстапамяти» (memory device context) (приработес битовымиобразами).
hdcMem = CreateCompatibleDC (hdc); [другиестрокипрограммы] DeleteDC (hdcMem);
•Получение описателя контекста метафайла, при создании метафайла.
hdcMeta = CreateMetaFile (pszFilename); [другиестрокипрограммы]
hmf = CloseMetaFile (hdcMeta);
Получение информации из контекста устройства.
•С помощью функции GetDeviceCaps:
iValue = GetDeviceCaps (hdc, iIndex); // iIndex - один из 28 идентификаторов,
определенных в заголовочном файле
Получаемаяинформацияобустройствеотображения:
•Размерыобластиотображения(высотаиширина);
•Распознаваниеорганизациипамятивидеоадаптераичислоцветов, которыеонможет отобразить;
Функциидляполученияиизмененияконтекстаустройства:
Атрибут контекста |
Функции для изменения |
Функции для получения |
устройства |
|
|
|
|
|
Режимотображения |
SetMapMode |
GetMapMode |
|
|
GetWindowOrgEx |
Началокоординатокна |
SetViewportOrgEx |
|
|
OffsetViewportOrgEx |
|
|
|
|
Началокоординатобласти |
SetViewportOrgEx |
GetViewportOrgEx |
вывода |
OffsetViewportOrgEx |
|
|
|
|
Протяженностьокна |
SetWindowExtEx |
GetWindowExtEx |
|
SetMapMode |
|
|
|
GetViewportExtEx |
Протяженностьобласти |
SetViewportExtEx |
|
вывода |
SetMapMode |
|
|
ScaleViewportExtEx |
|
|
|
|
Перо |
SelectObject |
SelectObject |
|
|
|
Кисть |
SelectObject |
SelectObject |
|
|
|
Шрифт |
SelectObject |
SelectObject |
|
|
|
Битовыйобраз |
SelectObject |
SelectObject |
|
|
|
Текущаяпозицияпера |
MoveToEx |
GetCurrentPositionEx |
|
LineTo |
|
|
PolylineTo |
|
|
PolyBezierTo |
|
|
|
|
Режимфона |
SetBkMode |
GetBkMode |
|
|
|
Цветфона |
SetBkColor |
GetTextColor |
|
|
|
Цветтекста |
SetTextColor |
GetTextColor |
|
|
|
Режимрисования |
SetROP2 |
GetROP2 |
|
|
|
Режимрастяжения |
SetStretchBltMode |
GetStretchBltMode |
|
|
|
Режимзакрашивания |
SetPolyFillMode |
GetPolyFillMode |
многоугольников |
|
|
|
|
|
Межсимвольныйинтервал |
SetTextCharacterExtra |
GetTextCharacterExtra |
|
|
|
Началокоординаткисти |
SetBrushOrgEx |
GetBrushOrgEx |
|
|
|
