14. Работа с окнами в ос Windows. Классы окон. Z-порядок окон. Описание окон в ос Windows.
Термин "объект окна" относится к любому интерфейсному объекту, представляющему окно, а в Windows это почти все, что выводится на экран. В качестве шаблона определения большей части фундаментального поведения основного окна и любого всплывающего окна приложения ObjectWindows использует тип TWindow.
TWindow имеет три типа-потомка: TMDIWindow, TControl и TEditWindow, так что все они также являются оконными объектами, хотя на самом деле это не окна в полном смысле слова. Типы MDI используются в приложениях ObjectWindows, которые соответствуют стандарту многодокументального интерфейса Windows. TControl определяет управляющие элементы, такие как командные кнопки и блоки списков. Чаще всего новые оконные типы являются производными от TWindow.
Каждое приложение Windows имеет основное окно. Это окно может выводиться в виде пиктограммы или не выводиться снова (скрытое окно), но существует всегда. Приложения ObjectWindows не являются исключением: они должны иметь основное окно, представленное оконным объектом.
Инициализация объектов окон
Оконные объекты представляют элементы окна, связанные через описатели, сохраненные в наследуемом из TWindowsObject поле HWindow. Так как объект окна имеет две части, его создание требует двух шагов: инициализации объекта и создания визуального элемента.
Инициализация окна - это процесс создания оконного объекта
ObjectWindows путем вызова конструктора Init:
Window1 := New(PWindow,Init(nil, 'Заголовок окна 1'));
Window2 := New(PNewWindowType,Init(nil,'Заголовок окна 2'));
Init создает новый оконный объект и устанавливает поле Title в Attr в передаваемый аргумент PChar. Первый аргумент вызова Init - это оконный объект порождающего окна. Если окно является основным окном (не имеющим порождающего окна), то это nil.
Установка атрибутов создания
Типичное приложение Windows имеет много различных типов окон: перекрывающиеся или всплывающие, окна с рамкой, прокручиваемые окна, окна с заголовком и др. Эти атрибуты стилей, а также заголовок и меню окна задаются при инициализации оконного объекта и используются при создании элементов окна.
Атрибуты создания оконного объекта, такие как стиль, заголовок и меню, записываются в поле Attr объекта - записи типа
TWindowAttr. TWindowAttr содержит следующие поля:
Атрибуты создания окна
| Поле | Тип | Использование |
| Title | PChar | Строка заголовка. |
| Style | Longint | Комбинированная константа стиля. |
| Menu | HMenu | Описатель ресурса меню. |
| X | Integer | Горизонтальная координата экрана|
| | | верхнего левого угла окна. |
| Y | Integer | Вертикальная координата экрана|
| | | верхнего левого угла окна. |
| W | Integer | Начальная ширина окна в координатах экрана |
| H | Integer | Начальная высота окна в координатах экрана |
В Windows используется z-порядок окон. Окна располагаются одно над другим по вертикали. Окно на верху лежит поверх всех. Нижнее окно в самом низу, остальные в промежутке. Для этого в Windows существует специальный список, в котором эти окна расположены. Важность окна зависит от стиля окна. Самую высокую важность имеет стиль WS_EX_TOPMOST.
Когда система создает окно она помещает это окно на самом верху относительно окон того же самого типа. Вы можете использовать функцию BringWindowToTop(), чтобы вывести окно наверх относительно окон того же самого типа. Вы можете реорганизовать порядок, используя функции DeferWindowPos() и SetWindowPos().
Функция GetNextWindow() возвращает указатель к следующему или предыдущему окну в Z-порядке. Для поиска подчиненных окон используется функция GetTopWindow().
Каждое окно имеет дескриптор – переменную типа HWND. Каждый дескриптор является указателем на структуру HWND, в которой хранится информация о каждом окне.
Каждая структура HWND состоит из следующих полей:
указатель на окно того же уровня
указатель на 1-е дочернее окно
структура RECT, которая определяет границы окна
структура RECT, которая определяет границы клиентской области
указатель на начало очереди сообщений для данного окна
указатель на область в куче DDI32.DLL, в которой содержится та часть окна, которую нужно перерисовать
адрес оконной процедуры с данным окном
Процедуры и функции работы с окнами:
FindWindow – получить дескриптор окна
GetNextWindow – получить дескриптор следующего или предыдущего окна в Z-последовательности
GetWindowText – получить заголовок окна.
- Средства аппаратной поддержки управления памятью в микропроцессорах Intel.
- 0000 Смещение
- Стек потока под управлением Windows nt (2000).
- Кучи. Кучи в Windows nt (2000).
- 5. Файлы, проецируемые в память.
- 6.Объекты ядра. Процессы, потоки и модули в Win32.
- Структура modref.
- Основные функции для работы с потоками.
- 7. Распределение времени между потоками. Классы приоритета. Уровни приоритета. Относительный уровень приоритета потока.
- Классы и уровни приоритета.
- Функции Win32 связанные с планированием.
- 8. Учет квантов времени в Windows. Управление величиной кванта. Сценарии планирования процессорного времени.
- Сценарий планирования.
- Поток простоя.
- 9. Динамическое повышение приоритета потока.
- 10 Синхронизация потоков.
- 11. Динамически подключаемые библиотеки (dll). Явная и неявная загрузка dll.
- 12. Обработка сообщения в ос Window.
- 13. Системная очередь аппаратного ввода сообщений.
- 14. Работа с окнами в ос Windows. Классы окон. Z-порядок окон. Описание окон в ос Windows.
- 15. Существующие форматы исполняемых файлов. Формат pe-файла.
- Особенности ре формата:
- Заголовок ре файла.
- Основные секции исполняемого файла.
- Прикладная программа
- 16. Методы отслеживания изменений файловой системы
- 17. Файловая система fat. Структура системной области и области данных в fat.
- Загрузочный сектор.
- 18. Файловая система ntfs. Структура главной файловой таблицы (mft). Атрибуты файла ntfs. Резидентные и нерезидентные атрибуты.
- Особенности ntfs.
- Структура ntfs на диске.
- Атрибуты файла.
- 19. Структура больших файлов и каталогов в ntfs. Индексация файлов в ntfs.
- 20. Восстанавливаемость ntfs. Протоколирование транзакций. Журнал транзакций. Восстановление данных в ntfs.
- Журнал транзакций.
- Восстановление данных в ntfs.