Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

5.5.3. Панель для выбора шрифта

Для выбора шрифта вызывают функцию ChooseFont. Эта функциясоздает стандартную панель выбора атрибутов логического шрифта. Атрибуты определяют имя шрифта, стиль (полужирный, наклонный или обычный), размер, вид (подчеркнутый, зачеркнутый или цветной) и на­бор символов. В процессе выбора, еще до нажатия кнопки ОК, пользова­тель в поле образца может увидеть результаты своего выбора. Функция ChooseFont объявлена следующим образом:

BOOL ChooseFont( LPCHOOSEFONT Ipcf);

Параметр Ipcf указывает на структуру типа CHOOSEFONT, которая содержит данные инициализации панели. После нажатия кнопки ОК эта структура будет дополнена данными о выбранном шрифте.

Иначе возвращаемое значение равно нулю.

Структура CHOOSEFONT описана следующим образом: typedef struct { DWORD IStructSize;

HWND hwndOwner;

HDC hDC;

LPLOGFONT IpLogFont;

INT iPointSize;

DWORD Flags;

DWORD rgbColors;

LPARAM ICustData;

LPCFHOOKPROC IpfnHook;

LPCTSTR IpTemplateName;

HINSTANCE hlnstance;

LPTSTR pszStyle;

WORD nFontType;

WORD MISSING_ALIGNMENT_;

INT nSizeMin;

INT nSizeMax;

} CHOOSEFONT;

Рассмотрим назначение полей структуры CHOOSEFONT:

1. IStructSize задает длину структуры CHOOSEFONT в байтах.

2. hwndOwner - дескриптор окна - владельца панели.

3. Flags - флаги инициализации панели. Можно использовать комбинацию значений из нижеследующей таблицы.

Флаг

Пояснение

CF_BOTH

В списке шрифтов перечислить эк­ранные и принтерные шрифты. Поле hDC должно указывать на принтер

CF_TTONLY

В списке шрифтов перечислить лишь масштабируемые шрифты True Type

CFJEFFECTS

Можно выбирать цвет букв и под­черкнутые и перечеркнутые шрифты

CF_FIXEDPITCHONLY

В списке шрифтов перечислить лишь шрифты с фиксированной шириной

CF_FORCEFONTEXIST

Предупреждать при попытке выбора несуществующего шрифта

CF INlTTOLOGFONTSTRUCT

Значение поля ipLogFont использовать при инициализации панели

CF_LIMITSIZE

Размеры шрифта ограничить значе­ниями полей nSizeMin и nSizeMax

CF_NOOEMFONTS или CF NOVECTORFONTS

Запретить выбор векторных шрифтов

CF_NOFACESEL

Игнорировать выбор в списке имен шрифтов

CF NOSTYLESEL

Игнорировать выбор стиля шрифта

CF NOSIZESEL

Игнорировать выбор размера шрифта

CF NOSIMULATIONS

Запрещается эмуляция шрифтов

CF_NOVERTFONTS

В списке шрифтов перечислить лишь горизонтально ориентированные шрифты

CF_PRINTERFONTS

В списке шрифтов перечислить только шрифты принтера, контекст отобра­жения которого задан в поле hDC

CF_SCALABLEONLY

В списке шрифтов перечислить лишь масштабируемые и векторные шрифты

CF_SCREENFONTS

В списке шрифтов перечислить лишь экранные шрифты системы

CF_USESTYLE

Строка "lpszStyle" указывает на буфер, который содержит описание стиля. Эта строка используется для инициа­лизации списка стилей панели

CFJVYSIWYG

Можно выбирать шрифты, доступные и для отображения на экране, и для печати на принтере. Следует устано­вить флаги CF BOTH и CF_SCALABLEONLY

4. hDC - дескриптор контекста устройства, чьи шрифты будут перечис­лены в панели. Этот дескриптор указывают, только если задан флаг CF_BOTH или CF_PRINTERFONTS.

5. lpLogFont указывает на структуру типа LOGFONT. Если установлен флаг CFJNITTOLOGFONTSTRUCT и инициализирована эта струк­тура, то параметры структуры будут использованы при установке на­чального состояния панели. После нажатия кнопки ОК. в эту структу­ру будут записаны данные выбранного шрифта.

6. iPointSize будет содержать размер букв выбранного шрифта в деся­тых долях пункта.

7. rgbCoIors - цвет символов шрифта, который будет выбран в комби­нированном списке "Цвет текста" сразу после отображения панели. Должен быть установлен флаг CFEFFECTS. После выбора шрифта это поле содержит значение выбранного цвета.

8. ICustData - данные, передаваемые функции фильтра, определенной содержимым поля lpftiHook.

9. lpfnHook - указатель на функцию фильтра, которая может обрабаты­вать сообщения, предназначенные для панели. Этот член игнорирует­ся, если не установлен флаг CFENABLEHOOK.

lO.lpTempIateName - указатель на строку с именем ресурса шаблона панели в модуле, идентифицированном полем hlnstance.

11. hlnstance - дескриптор блока памяти с шаблоном панели (если уста­новлен флаг CF_ENABLETEMPLATEHANDLE) или дескриптор мо­дуля, содержащего ресурс шаблона панели (если установлен флаг CF_ENABLETEMPLATE). Иначе это поле игнорируется.

12. lpszStyle - указатель на буфер, который содержит данные стиля. Если установлен флаг CFUSESTYLE, данные этого буфера инициализируют список стилей шрифта на панели. После выбора шрифта в этот буфер записывается выбранный стиль.

13.nFontType определяет тип выбранного шрифта. Может содержать комбинацию следующих констант:

Константа

Пояснение к шрифту

BOLD_FONTTYPE

Полужирный. Эта информация дубли­рована полем ifWeight

ITALIC_FONTTYPE

Наклонный. Эта информация дублиро­вана полем lfltalic

PRINTER FONTTYPE

Встроенный шрифт принтера

REGULAR_FONTTYPE

Обычная жирность. Эта информация дублирована полем IfWeight

SCREEN FONTTYPE

Шрифт - экранный шрифт

SIMULATED FONTTYPE

Шрифт моделирует GDI

14. nSizeMin - минимальный размер шрифта, который можно выорать. Для использования этого поля необходимо установить флаг CFJJMITSIZE.

15. nSizeMax - максимальный размер шрифта, который можно выбрать. Для использования этого поля необходимо установить флаг CFJLIMITSIZE.

Содержание

П 1. Основы приложений для Windows. 1

П 1.1 Типы данных Windows. 1

П. 1.2 Главная функция приложения WinMain(). 1

П. 1.3 Оконная функция. 2

П. 1.4 Сообщения от окна 2

П. 1.5 Сообщения от мыши 3

1.5.1 Сообщения мыши, связанные с рабочей областью окна 3

1.5.2 Обработка нажатия клавиш <Shift> и <Ctrl> и кнопок мыши 4

1.5.3 Двойные щелчки мыши 5

1.5.4 Сообщения мыши, связанные с нерабочей областью окна 5

1.5.5 Захват мыши 6

П. 1.6 Сообщения от клавиатуры 6

1.6.1 Синхронизация событий клавиатуры 6

1.6.2 Игнорирование событий клавиатуры 7

1.6.3 Понятие фокуса ввода 7

1.6.4 Категории клавиатурных сообщений 8

1.6.5 Аппаратные сообщения 8

1.6.6 Символьные сообщения 9

П. 1.7 Таймеры Windows и служба времени. 10

П. 1.8 Классы окон 13

1.8.1. Описание используемых классом окон ресурсов 13

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

1.8.3. Создание окон 15

1.8.4. Стили окна 16

П. 1.9 Цикл обработки сообщений 17

П. 1.10 Структура текста приложения 18

П. 1.11 Вспомогательные функции создания окон 19

1.11.1 Функции отображения и перерисовки окон 20

1.11.2 Функции поиска и определения состояния окон 20

1.11.3 Функции перемещения окон 21

1.11.4 Сообщения приложения для пользователя 23

П. 1.12 Примеры создания окон 25

П 2. Органы управления 29

П 2.1. Кнопки 30

2.1.1. Создание кнопок 30

2.1.2. Кнопки и сообщения 30

2.1.3. Флажки и переключатели 32

П 2.2. Статический орган управления 32

П 2.3. Полоса прокрутки 33

2.3.1. Общие сведения 33

2.3.2. Создание полосы прокрутки 33

2.3.3. Простейшие полосы прокрутки 34

2.3.4. Сообщения от полосы прокрутки 34

2.3.5. Управление полосой прокрутки 35

П 2.4 Редактор текста 36

2.4.1. Создание редактора 36

2.4.2. Сообщения для редактора текста 36

2.4.3. Сообщения от редактора текста 37

П 2.5. Списки строк 38

2.5.1. Создание списка 38

2.5.2. Сообщения от списка 38

2.5.3. Сообщения для списка 38

П. 2.6. Комбинированный список 40

2.6.1. Создание комбинированного списка 40

2.6.2. Коды извещения 40

2.6.3. Сообщения для комбинированного списка 40

П 3. Вывод в окно 41

П. 3.1. Виды контекста отображения 42

П 3.2. Сообщение WM_PAINT 44

П 3.3. Установка атрибутов контекста отображения для текста 45

П 3.4. Вывод текста 46

3.4.1. Настройка параметров шрифта 46

3.4.2. Выбор шрифта в контекст отображения 48

3.4.3. Функции вывода текста 49

3.4.4. Определение метрик шрифта 50

П 3.5. Рисование геометрических фигур 51

3.5.1 Установка атрибутов контекста отображения для рисования. 51

3.5.1. Функции рисования точки 55

3.5.2. Функции рисования линий 56

3.5.3. Функции рисования замкнутых фигур 57

3.5.4 Функции создания и рисования регионов 58

П. 4 Ресурсы приложения и их использование. 66

П. 4.1 Файл ресурсов. 66

П 4.2 Главное меню 74

П. 4.2.1 Элементы меню 74

П. 4.2.2 Создание меню 76

П. 4.2.3 Сообщения от меню 78

П. 4.3. Плавающее меню 79

П. 4.4. Акселераторы 80

П. 4.5. Панель инструментов 82

4.5.1. Создание панели инструментов 82

4.5.2. Управление состоянием кнопок панели 84

4.5.3. Вывод подсказок в панели инструментов 85

П. 4.6. Строка состояния 87

4.6.1. Создание строки состояния 87

4.6.2. Сообщения о меню в строке состояний 89

П 5. Диалоговые панели 91

П. 5.1. Характеристики диалоговых панелей 91

5.1.1. Единицы диалоговой панели ' 91

5.1.2. Стили диалоговой панели 92

5.1.3. Функция окна диалоговой панели 93

П. 5.2. Создание диалоговой панели 94

5.2.1 Создание окна модальной диалоговой панели 94

5.2.2 Создание окна немодальной диалоговой панели 95

П. 5.3 Разработка и компоновка диалоговых панелей. 97

П. 5.4 Сообщения и диалоговые панели 102

П. 5.5. Стандартные диалоговые панели 104

5.5.1. Панели для открытия или сохранения файлов 104

5.5.2. Панель для выбора цветов 106

5.5.3. Панель для выбора шрифта 110