русс | укр

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

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

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

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


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

Определение диалоговых окон в файле ресурсов


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


Диалоговое окно можно определить непосредственно в файле ресурсов или в файле *.dlg , который следует подключить к файлу ресурсов директивой cinclude, а не известной директивой #include .

Это связано с тем, что компилятор ресурсов несколько иначе понимает директиву #include, чем препроцессор Си. Если директива #include помещается в файле описания ресурсов до первого (любого!) оператора, то препроцессор компилятора ресурсов игнорирует во включаемом файле все, кроме директив #define. То есть, если вы хотите включать в файл описания ресурсов файл описания окон диалога *.dlg, то следует помещать директиву #include как можно позже в файле описания ресурсов, но ни в коем случае не сразу за первой строкой :

#include < windows. h >

#include < about. dlg > // Неверно – описание окна about включено не будет

Приведем формат шаблона диалогового окна и его краткое описание :

 

MyBox DIALOG [опции загрузки] [опции памяти] X, Y, W, H

[STYLE ...]

BEGIN

( описание органов управления )

END

 

По аналогии с предыдущими определениями ресурсов оператор DIALOG определяет имя ресурса (в нашем случае My_Box) и устанавливает опции загрузки и опции памяти. Опции загрузки те же, что мы встречали ранее: PRELOAD либо LOADONCALL. При использовании PRELOAD описание окна диалога загружается с диска сразу при загрузке приложения на выполнение, а при использовании LOADONCALL только при необходимости. Опции памяти нам также уже знакомы – FIXED, MOVEABLE и DISCARDABLE. FIXED запрещает Windows перемещать сегмент данных с описанием ресурса в памяти, MOVEABLE разрешает, а DISKARDABLE указывает Windows что он может при необходимости удалять из памяти сегмент с описанием ресурса. Флаги MOVEABLE и LOADONCALL используются по умолчанию.

За опциями загрузки и памяти следует четыре параметра. Первые два из них – X и Y – задают координаты диалогового окна относительно рабочей области родительского окна. Следующие два параметра – W и H – определяют соответствующую ширину и высоту диалогового окна.



Отметим, что координаты и размеры диалогового окна задают не в пикселах, а в единицах, зависящих от размера системного шрифта. Координата X и ширина задаются в четвертях (1/4) ширины символов, а координата Y и высота – в восьмых (1/8) частях высоты символов. Такой подход гарантирует, что окна диалога будут выглядеть одинаково вне зависимости от типа видеоадаптера.

Следующее поле – STYLE – соответствует параметру «тип окна» в функции CreateWindow. Как правило, в модальных диалоговых окнах используют флаги WS_POPUP и WS_DLGFRAME. Однако можно использовать и другие. Например, вы можете указать в поле STYLE флаги WS_POPUP и WM_CAPTION. В этом случае создается диалоговое окно с заголовком и простой рамкой. Заголовок позволяет перемещать диалоговое окно по экрану при помощи мыши. Если используется флаг WM_CAPTION, то можно разместить в заголовке диалогового окна какой-нибудь текст, добавив утверждение CAPTION к заголовку шаблона. Например

 

MyBox DIALOG 12, 12, 130, 80

STYLE WS_POPUP | WM_CAPTION

CAPTION « Dialog Box Caption »

 

BEGIN
{описание органов управления }

END

 

Если указан флаг WM_CAPTION, то, указав флаг WM_SYSMENU, можно добавить к диалоговому окну системное меню.

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

При создании системного диалогового окна надо включить в поле STYLE флаг DS_SYSMODAL. Заметим, что если не указать поле STYLE , то по умолчанию для типа диалогового окна используются флаги WS_POPUP и WS_BORDER.

К диалоговому окну можно добавить меню. Для этого в шаблоне диалогового окна надо поместить следующее утверждение:

MENU my_menu

Здесь за оператором MENU должно быть указано имя меню, определенное ранее в файле ресурсов.

Органы управления диалогового окна определяются между ключевыми словами BEGIN и END. Возможно использование двух форматов :

 

control_type « text », nID, xPos, yPos, xWidth, yHeight, dwStyle

control_type nID, xPos, yPos, xWidth, yHeight, dwStyle

 

В обоих форматах на первом месте стоит параметр, определяющий тип органа управления. В представленной таблице указаны типы органов управления, которые можно использовать при описании диалогового окна, а также соответствующие им классы окон и флаги, установленные по умолчанию для параметра (dwStyle) формата описания органов управления. Кроме перечисленных в таблице флагов, для всех органов управления установлены флаги WS_CHILD и WS_VISIBLE.

 

Тип Класс окна Флаги
PUSHBUTTON button BS_PUSHBUTTON | WS_TABSTOP
DEFPUSHBUTTON button BS_DEFPUSHBUTTON | WS_TABSTOP
CHECKBOX button BS_CHECKBOX | WS_TABSTOP
RADIOBUTTON button BS_RADIOBUTTON
GROUPBOX button BS_GROUPBOX
LTEXT static SS_LEFT | WS_GROUP
CTEXT static SS_CENTER | WS_GROUP
RTEXT static SS_RIGHT | WS_GROUP
ICON static SS_ICON | WS_GROUP
EDITTEXT edit ES_LEFT | WS_BORDER | WS_TABSTOP
LISTBOX listbox LBS_NOTIFY | LBS_SORT | WS_BORDER | WS_VSCROLL

 

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

Флаг WS_TABSTOP установлен по умолчанию для органов управления типа PUSHBUTTON, DEFPUSHBUTTON, CHECKBOX, RADIOBUTTON, EDITTEXT.

Флаг WS_GROUP позволяет использовать клавиши перемещения курсора для передачи фокуса ввода от одного органа управления к другому внутри группы. По умолчанию флаг WS_GROUP установлен для органов управления типа LTEXT, CTEXT, RTEXT, ICON. Органы управления перечисленных типов указывают на конец группы.

Следует отметить, что первый формат описания применяется для всех органов управления, перечисленных в таблице за исключением EDITTEXT и LISTBOX. Для EDITTEXT и LISTBOX используется второй формат описания.

Поле nID в форматах описания органов управления используется органом управления , когда от него поступает сообщение в родительское окно. Как правило, это сообщение WM_COMMAND, а параметр wParam равен nID. Сообщение от органа управления передается сначала функции окна Windows, а затем уже функции диалогового окна . Если орган управления не должен передавать сообщений функции диалогового окна , то можно присвоить полю nID значение -1.

Поле «text» в первом формате задает заголовок органа управления. Для получения большей информации об этом поле можете вернуться к главе «Органы управления».

Четыре поля : xPos, yPos, xWidth, yHeight,-- определяют координаты и размеры органа управления внутри диалогового окна. Как и поля X, Y, W и H в заголовке шаблона диалогового окна, они задаются не в пикселах, а в долях символов системного шрифта.

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



<== предыдущая лекция | следующая лекция ==>
Сообщения меню | Функция диалогового окна


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


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

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

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


 


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

 
 

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

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