- •Часть II. Проектирование пользовательских интерфейсов средствами win32 api п 1. Основы приложений для Windows. П 1.1 Типы данных Windows.
- •П. 1.2 Главная функция приложения WinMain().
- •П. 1.3 Оконная функция.
- •П. 1.4 Сообщения от окна
- •П. 1.5 Сообщения от мыши
- •1.5.1 Сообщения мыши, связанные с рабочей областью окна
- •1.5.3 Двойные щелчки мыши
- •1.5.4 Сообщения мыши, связанные с нерабочей областью окна
- •1.5.5 Захват мыши
- •П. 1.6 Сообщения от клавиатуры
- •1.6.1 Синхронизация событий клавиатуры
- •1.6.2 Игнорирование событий клавиатуры
- •1.6.3 Понятие фокуса ввода
- •1.6.4 Категории клавиатурных сообщений
- •1.6.5 Аппаратные сообщения
- •1.6.6 Символьные сообщения
- •П. 1.7 Таймеры Windows и служба времени.
- •П. 1.8 Классы окон
- •1.8.1. Описание используемых классом окон ресурсов
- •1.8.2. Регистрация класса окон
- •1.8.3. Создание окон
- •1.8.4. Стили окна
- •П. 1.9 Цикл обработки сообщений
- •П. 1.10 Структура текста приложения
- •П. 1.11 Вспомогательные функции создания окон
- •1.11.1 Функции отображения и перерисовки окон
- •1.11.2 Функции поиска и определения состояния окон
- •1.11.3 Функции перемещения окон
- •1.11.4 Сообщения приложения для пользователя
- •П. 1.12 Примеры создания окон
- •П 2. Органы управления
- •П 2.1. Кнопки
- •2.1.1. Создание кнопок
- •2.1.2. Кнопки и сообщения
- •2.1.3. Флажки и переключатели
- •П 2.2. Статический орган управления
- •П 2.3. Полоса прокрутки
- •2.3.1. Общие сведения
- •2.3.2. Создание полосы прокрутки
- •2.3.3. Простейшие полосы прокрутки
- •2.3.4. Сообщения от полосы прокрутки
- •2.3.5. Управление полосой прокрутки
- •П 2.4 Редактор текста
- •2.4.1. Создание редактора
- •2.4.2. Сообщения для редактора текста
- •2.4.3. Сообщения от редактора текста
- •П 2.5. Списки строк
- •2.5.1. Создание списка
- •2.5.2. Сообщения от списка
- •2.5.3. Сообщения для списка
- •П. 2.6. Комбинированный список
- •2.6.1. Создание комбинированного списка
- •2.6.2. Коды извещения
- •2.6.3. Сообщения для комбинированного списка
- •П 3. Вывод в окно
- •П. 3.1. Виды контекста отображения
- •П 3.2. Сообщение wm_paint
- •П 3.3. Установка атрибутов контекста отображения для текста
- •П 3.4. Вывод текста
- •3.4.1. Настройка параметров шрифта
- •3.4.2. Выбор шрифта в контекст отображения
- •3.4.3. Функции вывода текста
- •3.4.4. Определение метрик шрифта
- •П 3.5. Рисование геометрических фигур
- •3.5.1 Установка атрибутов контекста отображения для рисования.
- •3.5.1. Функции рисования точки
- •3.5.2. Функции рисования линий
- •3.5.3. Функции рисования замкнутых фигур
- •3.5.4 Функции создания и рисования регионов
- •П. 4 Ресурсы приложения и их использование. П. 4.1 Файл ресурсов.
- •П 4.2 Главное меню
- •П. 4.2.1 Элементы меню
- •П. 4.2.2 Создание меню
- •П. 4.2.3 Сообщения от меню
- •П. 4.3. Плавающее меню
- •П. 4.4. Акселераторы
- •П. 4.5. Панель инструментов
- •4.5.1. Создание панели инструментов
- •4.5.2. Управление состоянием кнопок панели
- •4.5.3. Вывод подсказок в панели инструментов
- •П. 4.6. Строка состояния
- •4.6.1. Создание строки состояния
- •4.6.2. Сообщения о меню в строке состояний
- •П 5. Диалоговые панели п. 5.1. Характеристики диалоговых панелей
- •5.1.1. Единицы диалоговой панели '
- •5.1.2. Стили диалоговой панели
- •5.1.3. Функция окна диалоговой панели
- •П. 5.2. Создание диалоговой панели
- •5.2.1 Создание окна модальной диалоговой панели
- •5.2.2 Создание окна немодальной диалоговой панели
- •П. 5.3 Разработка и компоновка диалоговых панелей.
- •П. 5.4 Сообщения и диалоговые панели
- •П. 5.5. Стандартные диалоговые панели
- •5.5.1. Панели для открытия или сохранения файлов
- •5.5.2. Панель для выбора цветов
- •5.5.3. Панель для выбора шрифта
1.8.2. Регистрация класса окон
Регистрирует класс в операционной системе функция RegisterClass. Ее аргументом является адрес подготовленной структуры. При успешной регистрации класса она возвращает ненулевое значение, иначе -нуль.
Регистрация класса окна не означает, что окно начинает существовать. Чтобы создать окно, нужно выполнить дополнительные шаги.
1.8.3. Создание окон
Для создания окна вызывают функцию CreateWindow. Она создает перекрывающееся, временное или дочернее окно и устанавливает начальные значения некоторых его параметров. Эта функция объявлена следующим образом:
HWND CreateWindow(
LPCTSTR IpClassName, //Указатель на имя класса
LPCTSTR IpWindowName, //Указатель на имя окна
DWORD dwStyte, //Стиль окна
int x, //Координата левого края окна
int у, //Координата верхнего края окна
int nWidth, //Ширина окна
int nHeight, //Высота окна
HWND hWndParent, //Дескриптор окна-родителя или окна-владельца
HMENU hMenu, //Дескриптор меню или идентификатор
// создаваемого дочернего окна
HANDLE hinstance, //Дескриптор приложения
LPVOID IpParam //Указатель на данные окна
);
Назначение аргументов вызова этой функции:
1. LpClassName указывает на имя зарегистрированного функцией RegisterClass или определенного операционной системой класса
2. dwStyle задает стиль окна. Стиль окон будет отдельно рассмотрен ниже
3. х - координата левого края окна в пикселях. Для перекрывающихся или временных окон х отсчитывают от левого края экрана, дочерних окон - от левого края рабочей области родительского окна. Если для перекрывающегося окна со стилем WS_VISIBLE в качестве х задать константу CW_USEDEFAULT, Windows устанавливает не обязательно нулевую позицию по умолчанию для левого верхнего угла окна и игнорирует координату у верхнего края окна. Для временного и дочернего окна такая позиция по умолчанию равна (О, О).
4. у - координата верхнего края окна в пикселях. Для перекрывающихся и временных окон ее отсчитывают от верхнего края экрана, дочерних окон - от верхнего края рабочей области родительского окна.
5. nWidth -ширина окна в пикселях. Для перекрывающихся окон можно задать равной CW_USEDEFAULT. В этом случае система устанавливает ненулевые значения ширины и высоты по умолчанию и игнорирует заданную высоту nHeight окна. Ширина и высота временного и дочернего окна по умолчанию равны нулю.
6. hWndParent может указывать только на инициированное окно. Дескриптор окна-родителя обязательно указывают при создании дочернего окна. Дескриптор окна-владельца для временного окна указывать необязательно.
7. hMenu - дескриптор меню или идентификатор создаваемого дочернего окна.
Меню перекрывающегося или временного окна можно задать тремя способами:
1) в классе окон указывают имя меню, и все окна этого класса могут пользоваться этим меню;
2) имя меню указывают как аргумент функции CreateWindow, и создаваемое окно будет пользоваться этим меню, игнорируя меню класса;
3) меню создают в процессе или после создания окна.
В первом и третьем случаях аргумент hMenu равен NULL. Если создается дочернее окно, то аргументом hMenu задают идентификатор этого окна (целочисленную константу).
Перед созданием окна функция CreateWindow посылает код сообщения wm_create функции создаваемого окна. Она затем обрабатывает возвращаемое функцией окна значение и создает окно, если это значение равно 0, или не создает окна, если значение равно -1. Соответственно функция Create Window возвращает дескриптор созданного окна или NULL.