Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
43-70_otvety_na_teplogo.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
87.53 Кб
Скачать

68. Описание дочерних окон управления в окнах диалога. Инструкции сокращенного и общего описания дочерних окон управления (в составе окна диалога) в файле ресурсов.

Сокращенное описание:

Каждый тип соответствует конкретному предопределенному классу окна и стилю окна. В представленной ниже таблице показаны соответствующие каждому типу дочерних окон элементов управления класс окна и стиль окна:

Тип элемента управления Класс окна Стиль окна

PUSHBUTTON button BS_PUSHBUTTON | WS_TABSTOP

DEFPUSHBUTTON button BS_DEFPUSHBUTTON | WS_TABSTOP

CHECKBOX button BS_CHECKBOX | WS_TABSTOP

RADIOBUTTON button BS_RADIOBUTTON | WS_TABSTOP

GROUPBOX button BS_GROUPBOX | WS_TABSTOP

LTEXT static SS_LEFT | WS_GROUP

CTEXT static SS_CENTER | WS_GROUP

RTEXT static SS_RIGHT | WS_GROUP

ICON static SS_ICON

EDITTEXT edit ES_LEFT | WS_BORDER | WS_TABSTOP

SCROLLBAR scrollbar SBS_HORZ

LISTBOX listbox LBS_NOTIFY | WS_BORDER | WS_VSCROLL

COMBOBOX combobox CBS_SIMPLE | WS_TABSTOP

Единственной программой, которая понимает эту краткую запись, является компилятор ресурсов (RC). Кроме показанных выше стилей окна, каждое из представленных дочерних окон элементов управления имеет стиль: WS_CHILD | WS_VISIBLE

Для всех типов дочерних окон элементов управления, за исключением EDITTEXT, SCROLLBAR, LISTBOX и COMBOBOX, используется следующий формат инструкций, описывающих элементы управления: control-type "text", id, xPos, yPos, xWidth, yHeight [, iStyle]

А для типов элементов управления EDITTEXT, SCROLLBAR, LISTBOX и COMBOBOX в формат инструкций определения не входит текстовое поле:

control-type id, xPos, yPos, xWidth, yHeight [, iStyle]

В обеих этих инструкциях поле iStyle не является обязательным.

Размеры, которые указываются в шаблонах окон диалога, всегда задаются в единицах 1/4 средней ширины символа и 1/8 его высоты.

Поле стиля (style) инструкций определения окон элементов управления не является обязательным. Оно дает возможность включить в инструкцию другие идентификаторы стиля окна. Например, если необходимо создать флажок с текстом, находящимся слева от квадратного окна флажка, то можно было бы воспользоваться такой инструкцией:

CHECKBOX "text", id, xPos, yPos, xWidth, yHeight, BS_LEFTTEXT

Хотя сокращенная запись для дочерних окон управления весьма удобна, но она не является исчерпывающей.

Полная форма:

Например, нельзя создать дочернее окно управления без рамки. По этой причине в компиляторе файла описания ресурсов также определяется и обобщенная форма инструкции окна управления, которая выглядит так: CONTROL "text", id, "class", iStyle, xPos, yPos, xWidth, yHeight

Эта инструкция, где можно задать класс окна и полностью определить стиль окна, дает возможность создать любой тип дочернего окна управления. Например, вместо инструкции:

PUSHBUTTON "OK", IDOK, 10, 20, 32, 14

можно использовать инструкцию:

CONTROL "OK", IDOK, "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 10, 20, 32, 14

При компиляции файла описания ресурсов две этих инструкции кодируются одинаково, как в файле с расширением .RES, так и в файле с расширением .EXE.

Если инструкция CONTROL используется в шаблоне окна диалога, нет необходимости включать в нее стили WS_CHILD и WS_VISIBLE. Windows включает их в стиль окна при создании дочерних окон. Кроме этого формат инструкции CONTROL облегчает понимание того, что делает менеджер окна диалога Windows, когда он создает окно диалога. Во-первых, он создает всплывающее окно, родительское окно которого определяется описателем окна, заданным в функции DialogBox. Затем для каждой инструкции элемента управления в шаблоне диалога, менеджер окна диалога создает дочернее окно. Родительским окном каждого из этих дочерних окон управления является всплывающее окно диалога. Приведенная выше инструкция CONTROL преобразуется в вызов функции CreateWindow, которая выглядит следующим образом:

CreateWindow("button", "OK",

WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,

10 * cxChar / 4, 20 * cyChar / 8,

32 * cxChar / 4,14 * cyChar / 8,

hDlg, IDOK, hInstance, NULL);

где cxChar и cyChar — это ширина и высота символа системного шрифта в пикселях. Параметр hDlg является возвращаемым значением функции CreateWindow, которая создает окно диалога. Параметр hInstance получен при первом вызове функции DialogBox.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]