Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Оконные классы

Читайте также:
  1. АВТОМОБИЛИ УЧАСТНИКОВ. ЗАЧЕТНЫЕ КЛАССЫ
  2. АВТОМОБИЛИ УЧАСТНИКОВ. КЛАССЫ. ОБЯЗАТЕЛЬНЫЕ НАДПИСИ.
  3. Виды туризма и классы обслуживания
  4. Викторина по книге Е. Ильиной «Четвёртая высота». 5 – 6 классы.
  5. Все начинается с CObject. Важнейшие классы библиотеки. Создание приложения MFC Windows. Выбор количества окон, которые будут поддерживаться приложением.
  6. Выставочные классы и сертификаты
  7. Глагольные классы

 

Оконные классы – это шаблоны, хранящие информацию о свойствах окна. Среди этих свойств – начальные размеры окна, его пиктограмма, курсор и меню. Вероятно, самое главное свойство – это адрес функции, называемой оконной процедурой. Приложение обычно выполняет обработку полученных сообщений с помощью вызова функции DispatchMessage из Win API. Функция DispatchMessage, в свою очередь, вызывает соответствующую оконную процедуру. Адрес оконной процедуры при этом извлекается из оконного класса окна, которому послано сообщение. Именно оконная процедура выполняет обработку всех сообщений, посылаемых окну. В Windows есть много стандартных оконных классов, например, стандартные элементы управления вроде кнопок (класс Button) и строк ввода (класс Edit).

Для регистрации новых оконных классов предназначена функция RegisterClass. Т.о. программист может реализовать окно с поведением, которого нет ни у одного из стандартных оконных классов. Например, именно так обычно реализуется главное окно приложения и выполняется регистрация пиктограммы и главного меню приложения.

 

Windows позволяет создавать подклассы и суперклассы для существующих

оконных классов. При создании подкласса выполняется замена оконной процедуры класса. Это делается с помощью функции SetWindowLong (подкласс экземпляра) или SetClassLong (глобальный подкласс). Различие между двумя функциями в том, что в первом случае изменяется поведение только одного экземпляра окна, а во втором случае – поведение всех окон данного класса (в пределах приложения). При создании суперкласса новый класс основывается на существующем, и запоминается адрес старой оконной процедуры. Для создания суперкласса приложение получает информацию о существующем классе с помощью функции GetClassInfo, запоминает адрес старой оконной процедуры, затем модифицирует полученную

структуру WNDCLASS и использует ее при вызове RegisterClass. Сообщения, не обрабатываемые новой оконной процедурой, должны передаваться в старую. Используемые термины похожи на термины объектно-ориентированного программирования, но отличаются от них по смыслу. Не надо путать оконный класс с понятием класса в Си++ (например, с классами библиотеки MFC). Понятие оконного класса было введено в Windows несколькими годами раньше, чем в этой ОС распространились объектно-ориентированные языки.

 

Сообщение WM_PAINT требует от приложения частично или полностью перерисовать содержимое окна. Большинство приложений перерисовывают только те области окна, которые нуждаются в перерисовке. В нашем случае, для простоты, на каждое сообщение WM_PAINT всегда выполняется вывод всей строки "Hello, World!". Сообщение WM_DESTROY поступает в результате действий пользователя, которые приводят к уничтожению окна приложения. В качестве реакции наше приложение вызывает функцию PostQuitMessage. Т.о. гарантируется, что функция GetMessage в WinMain получит сообщение WM_QUIT и главный цикл обработки сообщений завершится. Сообщения, которые не обрабатываются нашей оконной процедурой, с помощью функции DefWindowProc передаются в оконную процедуру по умолчанию. Эта функция реализует поведение окна приложения и многих компонент его неклиентской области (например, строки заголовка).

 

/DEF (указание файла определения модуля)

/DEF:filename

Здесь:

filename

Имя файла определения модуля (DEF) для передачи в компоновщик.

 

Параметр /DEF передает файл определения модуля (.def) в компоновщик. Только DEF-файл можно указать для параметра LINK. Дополнительные сведения о DEF-файлах см. в разделе Файлы определения модулей.

Установка данного параметра компоновщика в среде разработки Visual Studio

1. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Задание свойств проекта C++.

2. Выберите папку Компоновщик.

3. Выберите страницу свойств Ввод.

4. Измените значение свойства Файл определения модуля.

Чтобы указать DEF-файл из среды разработки, следует добавить его в проект наряду с остальными файлами, а затем указать данный файл в параметре /DEF.

88. Простое приложение и шаблон(???). Рисование эллипса. Рисование сегмента. Рисование сектора. Рисование прямоугольника.

 

Рисование эллипса

Функция для отображения эллипса имеет те же параметры, поскольку эллипс определяется ограничивающим его прямоугольником:


Дата добавления: 2015-09-03; просмотров: 106 | Нарушение авторских прав


Читайте в этой же книге: Вывод окна. Изменение вида окна. Часто используемые элементы управления и диалоговые окна. Статические элементы управления. Элементы управления - кнопки. | Модальная диалоговая панель | Обмен данными диалога | Немодальная диалоговая панель | Статические органы управления | Вывод окна | Виртуальные клавиши. Системные таймеры. Срабатывание таймера. Эффективное использование механизма таймеров. | Простое приложение Windows. Оболочка для всех приложений. Эффективное использование описателей. Компоненты приложения Windows. Функция WinMain(). Регистрация класса окна. | Простое приложение Windows. style. lpfnWndProc. cbClsExtra. cbWndExtra. hinstance. hIсоn. hCursor. hbrBackground. IpszMenuName. IpszClassName. | Создание окна с помощью функции CreateWindow |
<== предыдущая страница | следующая страница ==>
Схема последовательного технологического процесса| Подготовительные работы и допуск к работе

mybiblioteka.su - 2015-2024 год. (0.007 сек.)