Блок памяти для диалогового окна, создаваемый с помощью опции ресурса DIALOGEX, состоит из заголовка DLGTEMPLATEEX, за которым следуют одна или несколько структур DLGITEMTEMPLATEEX с описанием элементов управления диалоговым окном. Число последующих структур DLGITEMTEMPLATEEX определяет член cDlgltems структуры DLGTEMPLATEEX.
Каждая структура DLGITEMTEMPLATEEX в шаблоне должна быть выровнена по границе двойного слова DWORD. Если член style определяет стиль DS_SETFONT или
DS_SHELLFONT, то первая структура DLGITEMTEMPLATEEX начинается с первой границы DWORD после строки typeface (гарнитура шрифта). Если эти стили не указаны, то первая структура начинается с первой границы DWORD после строки title (заголовок).
Массивы menu, windowClass, title и typeface должны быть выровнены по границам слова WORD и определены как строки Unicode. Для создания строк Unicode применяется функция MultiByteToWideChar.
Структуры данных определены в файле WINUSER.H. Определения этих структур приведены в листинге 8.1.
Листинг 8.1. Структурыданныхдиалоговогоокна_________________________________________
СМ. \local-sources\chap08\t08-01.txt
Размеры и расположение диалогового окна и всех элементов управления должны быть указаны в базовых единицах длины диалогового окна. Эти единицы длины зависят от размера используемого шрифта. Размеры по вертикали измеряются в восьмых долях высоты шрифта, а размеры по горизонтали — в четвертых долях ширины шрифта. Смысл применения такой системы единиц длины состоит в обеспечении возможности правильно масштабировать диалоговое окно, независимо от разрешающей способности используемого экрана. Как правило, в мониторах с высокой разрешающей способностью используется большее число пикселей на символ, поэтому размер символа остается таким же, как и на мониторе с низкой разрешающей способностью. Побочным эффектом этой системы является то, что для изменения размеров диалогового окна достаточно просто выбрать другой шрифт. Для этой цели предусмотрен оператор FONT.
Все символьные элементы в шаблоне диалогового окна представляют собой массивы переменной длины "символов с расширенным представлением", иными словами, 16-разрядных символов Unicode. Массив минимального размера представляет собой одно 16-разрядное значение, которое представлено в шестнадцатиричном коде как 0x0000 и обозначает пустую строку. Если первый элемент имеет значение OxFFFF, то следующим элементом является 16-разрядный целый идентификатор, представляющий собой либо атомарное значение', либо идентификатор ресурса. Любые другие значения указывают на то, что массив представляет собой строку Unicode с нулевым символом в конце. В табл. 8.1 перечислены атомарные значения класса для определенных элементов управления.
Таблица 8. 1. Атомарныезначениядляопределенныхэлементовуправления |
|
Значение |
Описание |
0X0080 |
Кнопка |
0X0081 |
Элемент управления редактированием |
0X0082 |
Статический элемент управления |
0X0083 |
Список |
0X0084 |
Линейка прокрутки |
0X0085 |
Поле со списком |
Описанияоператоровшаблонадиалоговогоокна
В настоящем разделе приведен полный список операторов, которые могут применяться в приложении для создания шаблона диалогового окна. В следующем листинге приведен шаблон для диалогового окна, показанного на рис. 8.1.
TESTDIALOG DIALOGEX 20, 20, 180, 70
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Test Dialog"
FONT 8, "MS Sans Serif"
BEGIN
CHECKBOX "Check box control.",IDC_CHECKBOX,9,7,70,10
GROUPBOX "Radio Buttons",-1,7,21,86,39
RADIOBUTTON "First", IDC_RADIO1,13,32 ,37 ,10 ,WS_GROUP | WS_TABSTOP
RADIOBUTTON "Second",IDC_RADIO2,13,45,39,10
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.