
- •История 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

•средство для переноса настроек и документов между account-ами и для перехода на новый диск или машину;
•значительно улучшена система Plug & Play - автоматический поиск нового оборудования и установка соответствующих драйверов для него (иногда очень сильно «достает»);
•новая более удобная система помощи;
•технология шрифтов ClearType – повышение разрешения при отображении шрифтов по горизонтали (особенно нужно для поворачивающихся TFT-мониторов);
•Internet Explorer 6.0;
•набор новых интернет-игр;
•новая система защиты через ключи активации (усложняющая жизнь пиратам и отечественным пользователям);
•возможность применения несколькими пользователями, работающими на одном компьютере, функции быстрого переключения пользователей;
•упрощен поиск благодаря группировке связанных с выполнением задач поиска на специальной панели поиска (Search Companion);
•упрощены способы отображения файлов благодаря возможности объединения их в различные группы;
•Опытные пользователи могут теперь с помощью планировщика задач (Scheduled Tasks), расположенного в разделе служебных программ, задавать график проведения дефрагментации дисков;
•Файловая система FAT32 на дисках DVD-RAM
Наличие в Windows XP компонента MAC упрощает установку и
администрирование домашних сетей, состоящих из нескольких сегментов. Указанный компонент использует алгоритм STA, с помощью которого прозрачным образом осуществляется подключение сегментов сети друг к другу. Использование
MAC-моста, включенного в состав Windows XP, позволяет домашней сети функционировать в качестве единой IP-подсети
Система Windows XP является наиболее надежной из операционных систем семейства Windows и имеет самые совершенные средства обеспечения безопасности и конфиденциальности. Усовершенствованные средства безопасности системы Windows XP обеспечивают возможность защищенной, безопасной и конфиденциальной работы.
Контрольные вопросы:
1.Назовите основные черты ОС Microsoft Windows. MS-DOS, Windows 1.0 и Windows 2.0, Windows 3.1 и Windows 3.11, Windows 95, Windows 98 и Windows Me, Windows NT, Windows 2000 и Windows XP
Общая архитектура WINDOWS приложения.
Каркас приложения
#include <windows.h> // заголовочный файл

windows.h – обязательно включаемый файл, содержащий директивы #include для всех остальных стандартных файлов заголовков Windows. windows.h включает в себя много других заголовочных файлов, содержащих объявления функций Windows, структур Windows, новые типы данных и числовые константы.
В любом типовом приложении имеется только две функции: WinMain и WndProc.
WinMain
WinMain — это точка входа в программу. Это аналог стандартной функции main языка С. В любой программе для Windows имеется функция WinMain.
//прототип WinMain |
|
|
|
|
int WINAPI WinMain( |
|
|
|
|
HINSTANCE hInstance, |
// Дескриптор экземпляра приложения |
|
||
HINSTANCE hPrevInstance, |
|
// В Win32 всегда равен NULL, |
||
предыдущий экземпляр |
|
|
|
|
LPSTR lpCmdLine, |
|
// Указатель на командную строку. Он |
||
позволяет |
// |
приложению получать данные |
из |
|
командной строки. |
||||
|
|
|
||
int nCmdShow ) |
|
// Определяет, как приложение |
||
первоначально |
// отображается на дисплее: пиктограммой |
|||
|
||||
SW_SHOWMINNOACTIVE) |
// |
(nCmdShow |
= |
|
// или в виде открытого окна |
|
|||
|
|
|||
|
//(nCmdShow = SW_SHOWNORMAL). |
|
! WinMain использует последовательность вызовов WINAPI (паскалевское соглашение о передаче аргументов при вызове функций) и, по своему завершению, возвращает операционной системе Windows целое число.
Функции выполняемые WinMain:
•Сохранение дескриптора экземпляра приложения в глобальной переменной.
•Регистрация класса окна приложения и другие инициализации.
•Создание главного окна приложения и, возможно, других, подчиненных окон.
•Отображение созданного окна и отрисовка содержимого его внутренней части.
•Запуск цикла обработки сообщений, помещаемых в очередь приложения.
•Завершение работы приложения при извлечении из очереди сообщения WM_QUET
Регистрация класса окна
С помощью функции RegisterClassEx регистрируется класс окна.
RegisterClassEx - это расширенная (на что указывает окончание названия Ex, т. е. extended — расширенный) версия функции RegisterClass из предыдущих версий Windows, имеющая указатель на структуру типа WNDCLASS.

Класс окна определяет общее поведение нового типа окон, включая адрес новой оконной процедуры.
WNDCLASS wc; |
// Структурадля |
информацииоклассеокна |
|
// ЗаполнениеструктурыWNDCLASS длярегистрацииклассаокна. |
|
memset(&wc, 0, sizeof(wc)); |
|
wc.lpszClassName=ClassName; |
// Имякласса |
окон |
|
wc.lpfnWndProc=(WNDPROC)WndProc; |
// Адресоконной |
функции |
|
wc.style=CS_HREDRAW|CS_VREDRAW; |
// Стилькласса |
окон |
|
wc.hInstance=hInstance; |
// Экземпляр |
приложения |
|
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); |
// Пиктограмма |
дляокон |
|
wc.hCursor=LoadCursor(NULL,IDC_ARROW); |
// Курсормыши |
дляокон |
|
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); |
// Кистьдляокон |
wc.lpszMenuName=NULL; |
// Ресурсменю |
окон |
|
wc.cbClsExtra=0; |
// |
Дополнительнаяпамять |
|
wc.cbWndExtra=0; |
// |
Дополнительнаяпамять |
|
// Pегистрацияклассаокна. |
|
RegisterClassEx(&wc); |
|
! НаиболееважнымипараметрамиструктурыWNDCLASS являютсяstyle иlpfnWndProc. Основнаячастьтого, чтопредставляетокнокакуникальнуюисложнуюсущность, управляется черезстильклассаокнаиоконнуюпроцедуру. ПараметрlpfnWndProc указываетадресфункции оконнойпроцедуры. Этафункцияотвечаетзаобработкувсехсообщений, получаемыхокном. Онаможетобрабатыватьэтисообщениясамаиливызыватьоконнуюпроцедурупоумолчанию DefWindowProc. некоторыеглобальныехарактеристикиокнауправляютсячерезпараметрстиля окна– style. Дляэтогопараметраможноустановитькомбинациюзначений, используяоперацию поразрядногоИЛИ.
Создание окна.
CreateWindow- этофункция, спомощьюкоторойприложениесамосоздаётокноивозвращает дескрипторсозданногоокна.

Дескрипторокна– этоодинизважнейшихописателей, которымиоперируетпрограммадля Windows. ДлямногихфункцийWindows требуетсядескрипторокна, благодарякоторому Windows знает, ккакомуокнуприменитьфункцию.ЭтотописательхранитсявпеременнойhWnd, котораяимееттипHWND (описательокна— handle to a window).
// созданиеглавногоокнаприложения |
|
hwnd = CreateWindow (szAppName, |
//имяклассаокна |
"The Hello Program", |
//заголовококна |
WS_OVERLAPPEDWINDOW, |
//стильокна |
CW_USEDEFAULT, |
//начальноеположениепоx |
CW_USEDEFAULT, |
//начальноеположениепоy |
CW_USEDEFAULT, |
//начальныйразмерпоx |
CW_USEDEFAULT, |
//начальныйразмерпоy |
NULL, |
//описательродительскогоокна |
NULL, |
//описательменюокна |
hInstance, |
//описательэкземплярапрограммы |
NULL); |
//параметрысоздания |
if(!hWnd) |
|
{ |
|
MessageBox(NULL,"Create: error",AppTitle,MB_OK|MB_ICONSTOP); // Окнонесоздано,
выдаем
//
предупреждение.
return FALSE;
}
! Нельзя путать понятия класс окна и окно, поэтому нельзя все характеристики окна
задать за один раз. Все окна-кнопки создаются на основе одного и того же класса окна. Класс окна определяет оконную процедуру и некоторые другие характеристики окон, создаваемых на основе этого класса. При создании окна, определяются дополнительные характеристики окна, уникальные для него. Оконная процедура, связанная с этим классом окна, находится в самой операционной системе Windows.
Отображение окна.
К тому времени, когда функция CreateWindow возвращает управление программе, окно уже создано внутри Windows. Однако, на экране монитора оно еще не появилось. Необходимы еще два вызова.
ShowWindow(hWnd, nCmdShow); |
// Отображаем окно. |
UpdateWindow(hWnd); |
// Обновляем содержимое клиентской |
области окна. |
|
После вызова функции UpdateWindow, окно окончательно выведено на экран.