русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание окна


Дата добавления: 2013-12-23; просмотров: 1012; Нарушение авторских прав


Регистрация класса окна

Поле lpszMenuName.

Поле cbWndExtra.

Поле cbWndExtra задает в байтах объем памяти, резервируемой Windows в конце каждой такой структуры каждого окна данного класса. Если поля cbClsExtra и cbWndExtra не используются, им присваиваются нулевые значения.

Полям style, cbWndExtra, cbClsExtra могут присваиваться значения NULL, что автоматически определяет присвоение им значений по умолчанию Windows.

 

Следующее поле структуры класса окна - lpszMenuName задает имя меню, определенного в файле ресурсов (.rc). Если меню не используется, то поле lpszMenuName должно быть равно нулю:

W.lpszMenuName = NULL;

 

После определения значений полей структуры WNDCLASS необходимо зарегистрировать класс при помощи функции RegisterClass(). Если регистрация класса прошла успешно,

возвращается значение TRUE, в противном случае - FALSE. Проверять возвращаемое функцией

RegisterClass() значение желательно, т.к. при неудачной регистрации класса вы не сможете его

использовать. Если по какой-либо причине регистрация класса прошла неудачно, приложение должно прекратить свою работу.

Отметим, что создавая, например, дочерние окна, вы можете пользоваться некоторыми стандартными предопределенными типами окон, вызов RegisterClass() в этом случае опускается.

Создание окна осуществляется при помощи функции CreateWindow(). Она создает окно, имеющее указанный тип и принадлежащее указанному классу. При этом указывается несколько параметров: имя класса окна, заголовок окна, тип окна, положение окна, дескриптор «родительского»окна, дескриптор меню окна, дескриптор создающей окно копии приложения и 32 бита дополнительной информации.

Отметим, что если класс окна регистрируется приложением только один раз - при первом запуске - то главное окно приложения создается для каждой его копии, вызванной на выполнение. Ниже приводится пример создания окна приложения, принадлежащему к классу «Simple» (класс «Simple» мы уже зарегистрировали ранее):



hWnd = CreateWindow ( szName, // Имя класса

" Application", // Заголовок окна

WS_OVERLAPPEDWINDOW, // Тип окна

CW_USEDEFAULT, // X - координата

CW_USEDEFAULT, // Y - координата

CW_USEDEFAULT, // Ширина окна

CW_USEDEFAULT, // Высота окна

NULL, // Дескриптор копии-родителя

NULL, // Дескриптор меню

hInstance, // Дескриптор копии

NULL); // Дополнительная информация

 

При создании окна функцией CreateWindow() определяются текущие характеристики окна.

В приведенном выше примере создается окно, принадлежащее классу окна szName.

Строка " Application" является заголовком окна.

Третий параметр WS_OVERLAPPEDWINDOW является комбинацией битовых флагов, определенных во включаемом файле windows.h. Все константы типов (или «стилей») окон начинаются с букв WS (Window Style). Комбинируя их при помощи булевой операции «ИЛИ» (|), можно определять нужные типы окон приложения. Типы окон Windows и допустимые флаги будут рассмотрены более подробно ниже .

После указания типа окна задаются начальные геометрические размеры создаваемого окна: координаты левого верхнего угла относительно экрана, ширина и высота окна в пикселях. Если при задании этих параметров использовать константу CW_USEDEFAULT, то Windows установит наиболее подходящие, с его точки зрения, значения этих полей.

При создании окна указывается также дескриптор его «родителя» (используется с органами управления и дочерними окнами) и меню окна. Перекрывающееся окно не может иметь «родителя», поэтому соответствующему параметру в примере выше присваивается значение NULL. Перекрывающемуся окну может быть назначено меню, однако в примере параметр NULL говорит о том, что требуется только системное меню (меню класса). Если меню класса не определено, то окно не будет иметь меню вообще.

При создании окна необходимо указать, какая копия приложения создает окно с тем, чтобы при работе с окном использовались данные именно этой копии, а не какие-либо другие. Последний параметр используется для передачи окну дополнительных данных. В примере никаких дополнительных данных окну не передается, этот параметр устанавливается в NULL.

Если функция CreateWindow () создает окно успешно, возвращается дескриптор на новое окно. Этот дескриптор указывается при вызове функций, выполняющих какие-либо действия над самим окном или в его пользовательской (несистемной) области.

Если окно не может быть создано или создание окна завершилось аварийно, функция CreateWindow() возвращает NULL (анализируя возвращаемое значение, следует организовать обработку такой ошибки). Ошибку создания окна анализировать необходимо, поскольку она является критической - не создав окна, приложение не может продолжить работу. Поэтому при возврате функцией CreateWindow() значения NULL следует завершить работу приложения и передать управление Windows.

В случае успешного создания окна функция CreateWindow() возвратит индекс окна. Если CreateWindow() возвращает нуль, то окно не создано:

 

if (! hWnd) // Создание окна прошло успешно?

return NULL; // Если нет, тогда завершаем приложение

 

Окно не отображается на экране сразу после создания; для отображения окна используется функция ShowWindow().

 



<== предыдущая лекция | следующая лекция ==>
Поле cbClsExtra. | Передача управления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.