Лекция Архитектура 32-разрядных ос windows 7




Скачать 2.1 Mb.
Название Лекция Архитектура 32-разрядных ос windows 7
страница 8/35
Дата публикации 20.05.2014
Размер 2.1 Mb.
Тип Лекция
literature-edu.ru > Информатика > Лекция
1   ...   4   5   6   7   8   9   10   11   ...   35

4. Регистрация оконного класса и создание окна

4.1 Функция RegisterClass и структура WNDCLASS


Оконный класс задает общее поведение окон нового типа, главное, он содержит адрес оконной процедуры. Для регистрации нового оконного класса предназначена функция:

ATOM RegisterClass( CONST WNDCLASS* lpwc );

Единственный параметр этой функции, lpwc, является указателем на структуру типа WNDCLASS, описывающую новый тип окна. Возвращаемое значение имеет тип Windows atom, это 16-разрядное число, являющееся идентификатором уникальной символьной строки в служебной внутренней таблице Windows. Структура WNDCLASS имеет следующее описание:
typedef struct _WNDCLASS {

  UINT style;

  WNDPROC lpfnWndProc;

  int cbClsExtra;

  int cbWndExtra;

  HANDLE hInstance;

  HICON hIcon;

  HCURSOR hCursor;

  HBRUSH hbrBackground;

  LPCTSTR lpszMenuName;

  LPCTSTR lpszClassName;

} WNDCLASS;
Смысл некоторых переменных очевиден. Например, hIcon является дескриптором пиктограммы, используемой для отображения окон данного класса в свернутом виде. hCursor – это дескриптор стандартного указателя мыши, который устанавливается при перемещении указателя над областью окна; hbrBackground – дескриптор кисти (это объект модуля GDI), применяемой для рисования фона окна. Cтрока lpszMenuName является идентификатором ресурса меню (символьное имя меню или целочисленный идентификатор, присваиваемый с помощью макроса MAKEINTRESOURCE), которое будет стандартным верхним меню для окон данного класса. Строка lpszClassName является именем оконного класса.

Переменные cbClsExtra и cbWndExtra можно использовать для выделения под оконный класс или для каждого экземпляра окна некоторой дополнительной памяти. Приложения могут пользоваться ею для хранения некоторой собственной информации, имеющей отношение к оконному классу или конкретным окнам.

Особенно важны первые две переменные структуры WNDCLASS. Большая часть свойств, делающих окно уникальным и сложным объектом, управляется именно этими переменными. В них хранится стиль (style) оконного класса и адрес оконной процедуры (lpfnWndProc).

Оконная процедура – это функция, ответственна за обработку всех сообщений, получаемых окном. Она может обрабатывать эти сообщения самостоятельно, или передавать их оконной процедуре "по умолчанию", DefWindowProc. Сообщения несут самую разнообразную информацию: об изменении размеров и местоположения окна, о событиях мыши, клавиатуры, командах пользователя, требования перерисовки, события таймера и других аппаратных устройств и т.п.

Существует аналог DefWindowProc, применяемый для диалоговых окон – функция DefDlgProc. Эта оконная процедура "по умолчанию" разработана специально для диалоговых окон. Она обеспечивает обслуживание элементов управления, например, переключение фокуса ввода.

С помощью стиля оконного класса, переменной style, задаются некоторые глобальные свойства оконного класса. Значение стиля является комбинацией значений битовых флагов (эта комбинация получается с помощью побитовой операции ИЛИ, т.е. оператора |). Например, флаг CS_DBLCLKS указывает Windows, что для окон данного класса надо генерировать сообщения о двойном щелчке мышью. Пара флагов CS_HREDRAW и CS_VREDRAW означают, что окно должно полностью перерисовываться после любого изменения горизонтального или вертикального размера.

4.2 Создание окна с помощью функции CreateWindow


Регистрация нового оконного класса – это только первый шаг в создании окна. Затем приложения обычно создают окна с помощью функции CreateWindow. Параметры этой функции задают более частные свойства экземпляра нового окна, например, его размеры, местоположение и внешний вид.

HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName,

DWORD dwStyle, int x, int y, int nWidth, int nHeight,

HWND hWndParent, HMENU hMenu, HANDLE hInstance,

LPVOID lpParam );

Параметр lpClassName – это имя класса, чье поведение и свойства унаследует новое окно. Это может быть класс, зарегистрированный функцией RegisterClass, или один из стандартных оконных классов (например, классы элементов управления: BUTTON, COMBOBOX, EDIT, SCROLLBAR, STATIC).

Параметр dwStyle задает стиль окна. Его не следует путать со стилем оконного класса, который при регистрации оконного класса передается функции RegisterClass внутри структуры WNDCLASS. Стиль класса задает некоторые постоянные свойства окон данного класса, общие для всех окон. Стиль окна, передаваемый в CreateWindow, используется для инициализации более кратковременных свойств конкретного окна. Например, dwStyle можно применять для задания начального вида окна (свернутое, развернутое, видимое или скрытое). Как и для стиля класса, стиль окна обычно является комбинацией битовых флагов (которая строится с помощью оператора |). Кроме общих флагов, имеющих смысл для окон всех классов, некоторые флаги имеют смысл только для стандартных оконных классов. Например, стиль BS_PUSHBUTTON используется для окон класса BUTTON, которые должны выглядеть как нажимаемые кнопки и посылать по щелчку мыши своим родительским окнам сообщения WM_COMMAND.

Стили WS_POPUP и WS_OVERLAPPED задаются окнам верхнего уровня. Основное различие в том, что у окон WS_OVERLAPPED всегда есть заголовок, а у окон WS_POPUP он не обязателен. Перекрывающиеся окна обычно используются в качестве главных окон приложений, а всплывающие окна – как диалоговые окна.

При создании окна верхнего уровня вызывающее приложение задает его родительское окно с помощью параметра hwndParent. Родительским окном для окна верхнего уровня служит окно рабочего стола.

Дочерние окна создаются с использованием стиля WS_CHILD. Основное различие между дочерним окном и окном верхнего уровня в том, что дочернее окно заключено внутри клиентской области своего родительского окна.

В Windows определены некоторые комбинации стилей, удобные для создания "типичных" окон. Стиль WS_OVERLAPPEDWINDOW является комбинацией флагов WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX. Такая комбинация применяется при создании типичного главного окна приложения. Стиль WS_POPUPWINDOW является комбинацией флагов WS_POPUP, WS_BORDER и WS_SYSMENU. Этот стиль применяется для создания диалоговых окон.

1   ...   4   5   6   7   8   9   10   11   ...   35

Похожие:

Лекция Архитектура 32-разрядных ос windows 7 icon Программа по курсу: архитектура ядра ос windows
История семейства Windows nt. Цели и принципы семейства Windows nt. Основные концепции: Native и Win32 api, режимы ядра и пользователя,...
Лекция Архитектура 32-разрядных ос windows 7 icon Лекция I и проблема языка и сознания лекция II 31 слово и его семантическое...
Монография представляет собой изложение курса лекций, про* читанных автором на факультете психологии Московского государственного...
Лекция Архитектура 32-разрядных ос windows 7 icon И вычислительной техники системное программное обеспечение. Операционная система Windows Минск
Дается общая характеристика операционной системы Windows, рассматривается пользовательский интерфейс. Дается понятие файловой системы,...
Лекция Архитектура 32-разрядных ос windows 7 icon ОС, она немедленно завершает работу и самопроизвольно перезагружается....
Когда windows xp сталкивается с серьёзной проблемой, ставящей под вопрос дальнейшее правильное функционирование операционной системы...
Лекция Архитектура 32-разрядных ос windows 7 icon Контрольные вопросы по материалам разделов Раздел Круглые столы Архитектура летопись мира
«Архитектура». Оно предназначено для студентов средних специальных учебных заведений архитектурного профиля, а также может использоваться...
Лекция Архитектура 32-разрядных ос windows 7 icon Лекция №1. Введение. Элементы дифференциальной геометрии. 2
Лекция №5. Множества Жюлиа, множество Мандельброта и их компьютерное представление. 18
Лекция Архитектура 32-разрядных ос windows 7 icon Лекция в Дорнахе 22 мая 1920 года
Канта и протестантизма. Эта лекция вызвала негодование среди членов Лиги, культивировавших и признававших под названием монизма вообще...
Лекция Архитектура 32-разрядных ос windows 7 icon Курс лекций Лекция Введение в философскую суицидологию. Лекция Общая...
Открыть, в чём состоит суть суицида, наука не в состоянии (по собственной ограниченной природе) и потому должна обращаться за объяснениями...
Лекция Архитектура 32-разрядных ос windows 7 icon Лекция № Происхождение языка Лекция № Природа, сущность и функции языка
Термины лингвистика и языкознание (термин языковедение архаичен) употребляются как синонимы. Любая наука имеет объект и предмет,...
Лекция Архитектура 32-разрядных ос windows 7 icon «природа жертва войны» (название лекции) Просветительская лекция. Лекция информация
Тема моей лекции «Природа – жертва войны», а основной целью – на основе фактов воздействия войны на природу, взятых из произведений...
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции