Win32 API. Библиотека стандартных диалоговых окон
Страница 10. Диалоговое окно Шрифт (Font)


Диалоговое окно Шрифт (Font)

Диалоговое окно Шрифт (Font) позволяет пользователю выбрать атрибуты для логического шрифта, такие как, имя шрифта, стиль (полужирный, курсивный, или обычный), размер в пунктах, эффекты (подчеркнутый, зачеркнутый и цвет текста), и написание (или набор символов).

Вы создаете и показываете диалоговое окно Шрифт (Font), инициализируя структуру CHOOSEFONT и передавая ее в функцию ChooseFont.

Если пользователь щелкает мышью по кнопке OK, функция ChooseFont возвращает значение ИСТИНА (TRUE) и устанавливает элементы структуры LOGFONT, указанные элементом lpLogFont структуры CHOOSEFONT. Вы можете использовать структуру LOGFONT с функцией CreateFontIndirect, чтобы создать логический шрифт. Функция ChooseFont также устанавливает другие элементы CHOOSEFONT, чтобы обозначить выбор пользователя.

Если пользователь отменяет (закрывает) диалоговое окно Шрифт (Font), или происходит ошибка, ChooseFont возвращает значение ЛОЖЬ (FALSE) и содержание структуры LOGFONT не определяет. Вы можете определить причину ошибки, используя функцию CommDlgExtendedError, чтобы возвратить расширенное значение ошибки.

Флажки инициализации диалогового окна Шрифт (Font)

Перед обращением к функции ChooseFont, - элемент Flags структуры CHOOSEFONT должен определить флажки CF_SCREENFONTS, CF_PRINTERFONTS или CF_BOTH, чтобы указать, должно ли диалоговое окно перечислять экранные шрифты, встроенные шрифты принтера или оба. Если вы определяете флажок CF_PRINTERFONTS или CF_BOTH, элемент hDC структуры CHOOSEFONT должен определять дескриптор контекста устройства для принтера.

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

Чтобы показать элементы управления, которые позволяют пользователю выбирать зачеркивание, подчеркивание и параметры цвета для шрифта

1. Установите флажок CF_EFFECTS. Вы можете использовать элемент rgbColors структуры CHOOSEFONT, чтобы определить начальный цвет шрифта.

Чтобы определить начальные значения элементов управления Шрифт (Font), Стиль Шрифта (Font Style), Размер (Size), Зачеркивание (Strikeout) и Подчеркивание (Underline) диалогового окна

1. Установите флажок CF_INITTOLOGFONTSTRUCT, чтобы использовать элементы структуры LOGFONT для установки начальных значений.

2. Вы можете также использовать флажки CF_NOFACESEL, CF_NOSTYLESEL и CF_NOSIZESEL, чтобы выборочно запретить отображать диалоговому окну начальные значения для соответствующих средств управления. Это полезно при работе с выбранным текстом, который имеет больше чем один шрифт, стиль, или размер в пунктах. Эти значения должны быть также установлены в элементе Flags, когда функция ChooseFont возвращает значения, если пользователь не выбрал соответствующее значение.

Чтобы инициализировать управляющий элемента Стиль Шрифта (Font Style) в определяемом имени стиля.

1. Установите флажок CF_USESTYLE и используйте элемент lpszStyle, чтобы определить имя стиля.

Чтобы показать клавишу Применить (Apply)

1. Установите флажок CF_APPLY и обеспечьте фильтр - процедурой, чтобы обработать сообщение WM_COMMAND для кнопки Применить (Apply). Фильтр - процедура может послать сообщение WM_CHOOSEFONT_GETLOGFONT диалоговому окну, чтобы извлечь адрес структуры LOGFONT, которая содержит текущие параметры для шрифта.

Чтобы показать клавишу Справка (Help)

1. Установите флажок CF_SHOWHELP. Элемент hwndOwner должен идентифицировать окно, которое принимает зарегистрированное сообщение HELPMSGSTRING, когда пользователь щелкает мышью по кнопке Help.

Чтобы ограничить показ шрифтов диалогового окна

1. Установите любую комбинацию флажков CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY и CF_WYSIWYG. Вы можете также ограничивать доступные стили, размеры в пунктах и эффекты отображения для некоторых шрифтов диалогового окна, используя значение CF_NOSIMULATIONS.

Чтобы ограничить число имен начертания шрифта, стилей и размеров в пунктах, которые пользователь может устанавливать

1. Установите флажок CF_FORCEFONTEXIST, чтобы ограничить пользователя установкой только разрешенных имен начертания, стилей и размеров в пунктах шрифта.

2. Установите флажок CF_LIMITSIZE, чтобы ограничить пользователя установкой размера в пунктах в диапазоне, определяемом элементами nSizeMin и nSizeMax.

Ограничить или отключить комбинированный блок Набор символов (Scripts)

1. Установите флажок CF_NOSCRIPTSEL, чтобы отключить комбинированный блок Набор символов или установите флажок CF_SELECTSCRIPT, чтобы ограничить выбор в нем установленных наборов символов.

Настройка диалогового окна Шрифт (Font)

Вы можете предоставить пользовательский шаблон для диалогового окна Шрифт (Font), например, если хотите включить дополнительные средства управления, которые являются уникальными для вашей прикладной программы. Функция ChooseFont использует ваш пользовательский шаблон вместо шаблона, заданного по умолчанию.

Чтобы обеспечить пользовательским шаблоном диалоговое окно Шрифт (Font)

1. Создайте индивидуальный шаблон, изменив заданный по умолчанию, который определен в файле FONT.DLG. Идентификаторы элементов управления, используемые по умолчанию в шаблоне блока диалога Шрифт (Font), определены в DLGS.H файле.

2. Используйте структуру CHOOSEFONT, чтобы шаблону, как ниже перечислено, разрешить:

Если ваш пользовательский шаблон - ресурс в прикладной программе или динамически компонуемой библиотеке, установите флажок CF_ENABLETEMPLATE в элементе Flags. Используйте элементы hInstance и lpTemplateName структуры, чтобы идентифицировать имя ресурса и модуль.

-ИЛИ-

Если ваш пользовательский шаблон - уже в памяти, установите флажок CF_ENABLETEMPLATEHANDLE. Используйте элемент hInstance, чтобы идентифицировать объект памяти, который содержит шаблон.

Вы можете предоставить диалоговому окну Шрифт (Font) фильтр (hook) - процедуру CFHookProc. Фильтр (hook) - процедура может обрабатывать сообщения, переданные в диалоговое окно. Она также может передавать сообщения блоку диалога. Если вы используете пользовательский шаблон, чтобы определить дополнительные элементы управления, вы должны предоставить фильтр (hook) - процедуру, чтобы обрабатывать ввод данных для ваших элементов управления.

Чтобы включить фильтр (hook) - процедуру для диалогового окна Шрифт (Font)

1. Установите флажок CF_ENABLEHOOK в элементе Flags структуры CHOOSEFONT.

2. Определите адрес фильтр (hook) - процедуры в элементе lpfnHook.

После обработки сообщения WM_INITDIALOG, процедура диалогового окна передает сообщение WM_INITDIALOG фильтр (hook) - процедуре. Параметр lParam этого сообщения - указатель на структуру CHOOSEFONT, используемую, чтобы инициализировать диалоговое окно.

Фильтр (hook) - процедура может передавать сообщения WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT и WM_CHOOSEFONT_SETFLAGS блоку диалога, чтобы получать и устанавливать текущие значения и флажки диалогового окна.

 
« Предыдущая статья   Следующая статья »