
- •Министерство образования и науки Российской Федерации
- •Лекция 1. Введение.
- •Лекция 2. Структура подсистемы обмена с ву
- •Лекция 3. Регистры ву
- •3.1. Виды регистров внешних устройств
- •3.2. Виды адресации регистров ву
- •Лекция 4. Алгоритм обмена без прерываний
- •37Bh – не используется
- •Лекция 5. Прерывания
- •5.1. Механизм прерываний
- •5.2. Таблица векторов прерываний
- •Лекция 6. Изменения установок обработки прерываний
- •6.1. Маскирование прерываний
- •6.2. Изменение таблицы векторов прерываний
- •6.3. Обработчики прерываний
- •Лекция 7. Аппаратные прерывания
- •Лекция 8. Дисковые системы (Часть 1) Организация магнитного диска
- •Лекция 9. Дисковые системы (Часть 2) Функции bios для работы с дисками
- •Инициализация контроллера нмд
- •Лекция 10. Файловые системы (Часть 1)
- •Организация логического диска
- •Лекция 11. Файловые системы (Часть 2)
- •Файловые системы Windows
- •Лекция 12. Файловая системаntfs Главная файловая таблица
- •Последовательность обновления
- •Атрибуты
- •Типы атрибутов
- •Лекция 13. Атрибуты ntfs
- •Списки отрезков
- •Лекция 14. Анализ и восстановление файловой системы
- •Лекция 15. Управление памятью
- •Типы адресов
- •Методы распределения памяти без использования дискового пространства
- •Лекция 16. Виртуальная память
- •Лекция 17. Виртуальная память (продолжение)
- •Лекция 18. Иерархия запоминающих устройств
- •Лекция 19. Управление вычислительными процессами
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Лекция 20. Синхронизация и взаимодействие процессов
- •V(b); /* Выход из критической секции */
- •Лекция 21. Архитектура драйвера файловой системы
- •Локальные fsd
- •Удаленные fsd
- •Работа файловой системы
- •Явный файловый ввод-вывод
- •Подсистема отложенной записи
- •Поток, выполняющий опережающее чтение
- •Драйверы фильтров файловой системы
- •Лекция 22. Windows api
- •Windows api— набор функций операционной системы
- •Лекция 23. WindowsApi(продолжение)
- •Окно рабочего стола
- •Приложение Windows
- •Компоненты окна приложения
- •Создание окна
- •Атрибуты окна
- •Класс окна
- •Имя окна
- •Стиль окна
- •Родитель или владелец окна
- •Расположение, размер и позиция в z-порядке
- •Идентификатор дочернего окна или дескриптор меню
- •Дескриптор копии приложения
- •Дополнительные данные
- •Дескрипторы окна
- •Создание главного окна
- •Сообщения, посылаемые при создании окна
- •Многопоточные приложения
- •Общие стили окна
- •Позиционирование
- •Взаимоотношения с родительским окном
- •Рамка окна
- •Компоненты неклиентской области окна
- •Заблокированное окно
- •Окна переднего плана и фоновые окна
- •Активное окно
- •Видимость
- •Свернутые, развернутые и восстановленные окна
- •Размер и позиция окна
- •Размер окна
- •Позиция окна
- •Размер и позиция по умолчанию
- •Системные команды
- •Сообщения, связанные с размером и позицией окна
- •Уничтожение окна
- •Как создать главное окно
- •Работа с дочерними окнами
- •Как уничтожить окно
- •Лекция 24. Ловушки сообщений (Хуки)
- •Лекция 25. Трансляция с языков программирования Сущность трансляции. Компиляция и интерпретация
- •Фазы трансляции и выполнения программы
- •Препроцессор
- •Трансляция и ее фазы
- •Модульное программирование, компоновка
- •Структура транслятора
Как создать главное окно
Как правило, первое окно, создаваемое приложением, является главным окном. Для создания главного окна следует использовать функцию CreateWindowEx(), которая определяет класс окна, имя окна, стили, размер и позицию окна, дескриптор меню, дескриптор копии приложения (instance handle) и дополнительные данные (creation data). Главное окно принадлежит к определяемому приложением классу окна, поэтому Вы должны зарегистрировать класс окна и написать функцию окна прежде чем создавать главное окно.
Большинство приложений используют для главного окна стиль WS_OVERLAPPEDWINDOW. Окна этого стиля имеют заголовок, системное меню, рамку, позволяющую изменять размер окна, кнопки свертывания и развертывания. Функция CreateWindowEx() возвращает дескриптор (handle), который идентифицирует окно уникальным образом.
В приведенном ниже примере создается окно, принадлежащее к определяемому приложением классу окна. Имя окна, "Main Window", появится в заголовке окна. Путем комбинации стилей WS_VSCROLL и WS_HSCROLL со стилем WS_OVERLAPPEDWINDOW приложение создает главное окно с вертикальной и горизонтальной полосами прокрутки в добавление к тем компонентам, которые обеспечивает стиль WS_OVERLAPPEDWINDOW. С помощью константы CW_USEDEFAULT устанавливаются заданные системой по умолчанию позиция и размер окна. Поскольку вместо дескриптора меню указывается NULL, окно будет иметь меню, определенное для класса окна.
HINSTANCE hinst; HWND hwndMain;
// Create the main window. hwndMain = CreateWindowEx( 0, // no extended styles "MainWClass", // class name "Main Window", // window name WS_OVERLAPPEDWINDOW | // overlapped window WS_HSCROLL | // horizontal scroll bar WS_VSCROLL, // vertical scroll bar CW_USEDEFAULT, // default horizontal position CW_USEDEFAULT, // default vertical position CW_USEDEFAULT, // default width CW_USEDEFAULT, // default height (HWND) NULL, // no parent or owner window (HMENU) NULL, // class menu used hinstance, // instance handle NULL); // no window creation data
if (!hwndMain) return FALSE;
// Show the window using the flag specified by the program // that started the application, and send the application // a WM_PAINT message. ShowWindow(hwndMain, SW_SHOWDEFAULT); UpdateWindow(hwndMain);
Обратите внимание, что после создания главного окна вызывается функция ShowWindow(). Это необходимо сделать, т.к. Windows не отображает автоматически окно после его создания. Передавая флаг SW_SHOWDEFAULT функции ShowWindow(), приложение позволяет программе, которая запустила данное приложение, самой устанавливать начальное состояние развернутости (show state) главного окна. Функция UpdateWindow() посылает окну сообщение WM_PAINT.