- •СОДЕРЖАНИЕ
- •ПРЕДИСЛОВИЕ
- •ГЛАВА 1. Введение в алгоритмы
- •1.1. Этапы решения задач на ЭВМ
- •1.2. Понятие алгоритма
- •1.3. Свойства алгоритмов
- •1.4. Сложность алгоритма
- •1.7. Пример простейшего линейного процесса
- •1.7. Пример циклического процесса
- •ГЛАВА 2. Базовые средства языка Си
- •2.1. Алфавит языка Си
- •2.2. Лексемы
- •2.3. Идентификаторы и ключевые слова
- •2.4. Комментарии
- •2.5. Простейшая программа
- •2.7. Декларация объектов
- •2.8. Данные целого типа (integer)
- •2.9. Данные символьного типа (char)
- •2.10. Данные вещественного типа (float, double)
- •ГЛАВА 3. Константы в программах
- •3.2. Константы вещественного типа
- •3.4. Строковые константы
- •ГЛАВА 4. Обзор операций
- •4.1. Операции, выражения
- •4.3. Операция присваивания
- •4.4. Сокращенная запись операции присваивания
- •4.7. Операции сравнения
- •4.8. Логические операции
- •4.10. Операция «,» (запятая)
- •ГЛАВА 5. Обзор базовых инструкций языка Си
- •5.2. Стандартные математические функции
- •5.3. Функции вывода данных на дисплей
- •5.4. Функции ввода информации
- •ГЛАВА 6. Составление разветвляющихся алгоритмов
- •6.1. Краткая характеристика операторов языка Си
- •ГЛАВА 7. Составление циклических алгоритмов
- •7.1. Понятие циклического кода
- •7.2. Оператор с предусловием while
- •7.4. Оператор цикла с предусловием и коррекцией for
- •ГЛАВА 8. Операторы и функции передачи управления
- •8.1. Оператор безусловного перехода goto
- •8.2. Операторы continue, break и return
- •8.3. Функции exit и abort
- •Советы по программированию
- •ГЛАВА 9. Указатели
- •9.1. Определение указателей
- •9.2. Операция sizeof
- •9.3. Инициализация указателей
- •9.4. Операции над указателями
- •ГЛАВА 10. Массивы
- •10.1. Понятие массива
- •10.2. Одномерные массивы
- •10.4. Строки как одномерные массивы данных типа char
- •10.5. Указатели на указатели
- •10.8. Работа с динамической памятью
- •10.9. Библиотечные функции
- •10.10. Пример создания одномерного динамического массива
- •ГЛАВА 11. Функции пользователя
- •11.1. Декларация функции
- •11.2. Вызов функции
- •11.3. Передача аргументов в функцию
- •11.4. Операция typedef
- •11.5. Указатели на функции
- •ГЛАВА 12. Классы памяти и область действия объектов
- •ЗАДАНИЕ 4. Обработка массивов
- •Первый уровень сложности
- •Второй уровень сложности
- •ЗАДАНИЕ 5. Функции пользователя
- •Первый уровень сложности
- •Второй уровень сложности
- •12.3. Статические и внешние переменные
- •12.4. Область действия переменных
- •Советы по программированию
- •13.1. Структуры
- •13.5. Вложенные структуры
- •13.6. Массивы структур
- •13.7. Размещение структурных переменных в памяти
- •13.8. Объединения
- •13.9. Перечисления
- •13.10. Битовые поля
- •ГЛАВА 14. Файлы в языке Си
- •14.1. Открытие файла
- •14.2. Закрытие файла
- •14.3. Запись-чтение информации
- •14.5. Дополнительные файловые функции
- •Советы по программированию
- •ЗАДАНИЕ 7. Создание и обработка файлов
- •Первый уровень сложности
- •Второй уровень сложности
- •ГЛАВА 15. Динамические структуры данных
- •15.1. Линейные списки
- •15.2.1. Алгоритм формирования стека
- •15.2.2. Алгоритм извлечения элемента из стека
- •15.2.3. Просмотр стека
- •15.2.4. Алгоритм освобождения памяти, занятой стеком
- •15.2.5. Алгоритм проверки правильности расстановки скобок
- •15.3.1. Формирование очереди
- •15.3.2. Алгоритм удаления первого элемента из очереди
- •15.4. Двунаправленный линейный список
- •15.4.1. Формирование первого элемента
- •15.4.3. Алгоритм просмотра списка
- •15.4.5. Алгоритм удаления элемента в списке по ключу
- •15.5. Нелинейные структуры данных
- •15.5.1. Бинарные деревья
- •15.5.2. Основные алгоритмы работы с бинарным деревом
- •15.5.4. Вставка нового элемента
- •15.6. Построение обратной польской записи
- •15.6.1. Алгоритм, использующий дерево
- •15.6.2. Алгоритм, использующий стек
- •15.6.3. Пример реализации
- •15.7. Понятие хеширования
- •15.7.2. Примеры хеш-функций
- •15.7.3. Схемы хеширования
- •15.7.4. Примеры реализации схем хеширования
- •Вариант 2. Двунаправленные списки
- •ГЛАВА 16. Переход к ООП
- •16.1. Потоковый ввод-вывод
- •16.3. Проблема ввода-вывода кириллицы в среде Visual C++
- •16.4. Операции new и delete
- •16.6. Шаблоны функций
- •Первый уровень сложности
- •Второй уровень сложности
- •6.1. Основные понятия
- •6.3. Примитивы GDI
- •6.5. Получение описателя контекста устройства
- •6.6. Основные инструменты графической подсистемы
- •6.7. Закрашивание пустот
- •6.8. Рисование линий и кривых
- •6.9. Пример изображения графика функции sin
- •6.10. Рисование замкнутых фигур
- •6.11. Функция Polygon и режим закрашивания многоугольника
- •6.13. Управление областями вывода и отсечением
- •ЗАДАНИЕ 11. Создание графических изображений
- •ЛИТЕРАТУРА
Приложение 6
заставляет WinMain прервать цикл обработки сообщений и выйти в систему, закончив программу.
6.5.Получение описателя контекста устройства
Впростейшем случае описатель контекста (контекст) может быть получен с помощью функций:
HDC GetWindowDC(HWND hwnd);
HDC GetDCEx(HWND hwnd, HRGN hrgnClip, DWORD dwFlags);
Функции GetDC и GetDCEx возвращают контекст клиентской области
окна (без заголовка, рамки и пр.). Контекст всего окна может быть получен с |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Р |
помощью функций GetWindowDC или GetDCEx с соответствующим флагом: |
|||||||||||||
DCX_WINDOW – |
дать контекст |
всего окна, |
|
включая |
системную |
||||||||
область; |
|
|
|
|
|
|
|
|
|
|
|
И |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DCX_PARENTCLIP – использовать видимую часть родительского окна; |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
У |
|
||
DCX_CLIPCHILDREN – исключить подчиненные окна; |
|
||||||||||||
|
|
|
|
|
|
|
Г |
|
|
||||
DCX_NORESETATTRS – не сбрасывать состояние контекста при его |
|||||||||||||
освобождении и т.д. |
|
|
|
|
|
Б |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
При этом поведение функций з висит т кже от некоторых установок |
|||||||||||||
стиля оконного класса: |
|
к |
|
|
|
|
|
|
|
||||
|
|
динственныйа |
|
|
|
|
|
|
|||||
CS_CLASSDC – использовать |
разделяемый контекст для |
||||||||||||
всех окон данного класса; |
|
|
|
|
|
|
|
|
|
|
|||
CS_OWNDC – |
использовать |
собственный |
контекст для каждого |
||||||||||
экземпляра окна; |
|
|
е |
контекст |
|
и |
|
регион |
отсечения |
||||
CS_PARENTDC – |
использовать |
|
|
||||||||||
родительского окна |
т.д. |
|
|
|
|
|
|
|
|
|
|
||
Кроме получен я ктекстан |
существующего окна можно создавать |
||||||||||||
|
л |
|
|
с определенным устройством. |
|
||||||||
новые контексты, связанныео |
|
||||||||||||
Функции и |
|
|
|
|
|
|
|
|
|
|
|
||
HDC CreateDC(LPCTSTR lpszDriver, LPCTSTR lpszDevice, |
|
||||||||||||
и |
LPCTSTR lpszOutput, CONST DEVMODE* lpInitData ); |
||||||||||||
Б |
|
|
|
|
|
|
|
|
|
|
|
|
|
HDCбCreateCompatibleDC(HDC hPrimDC); |
|
|
|
|
|
|
создают новый контекст, связанный с указанным устройством (CreateDC) или совместимым с известным контекстом (CreateCompatibleDC). Во втором случае если «образцовый» контекст не задан, то создается контекст в памяти (memory context), совместимый с текущими установками экрана. Возвращаемое значение – описатель контекста или NULL – в случае ошибки. Параметры:
lpszDriver – может быть DISPLAY для контекстов, связанных с экраном, и NULL для всех других устройств;
lpszDevice – логическое имя устройства в системе;
lpszOutput – имя устройства в файловой системе (в Win32 – NULL);
218
которая освобождает «общие» и оконные контексты.
Для контекстов, созданных с помощью функций Create..., используется
функция |
Р |
int DeleteDC(HDC hdc); |
|
возвращает 1 – при успешном завершении, 0 – при ошибке. |
И |
|
|
Многие характеристики действующего контекста могут быть получены |
с помощью функции GetDeviceCaps(), принимающей в качестве аргумента |
|
|
У |
описатель контекста и индекс (номер) интересующего параметра |
|
Г |
|
Б |
|
(описываются системными константами) и возвращающей значение этого параметра.
6.6. Основные инструменты графической подсистемы |
||||
|
|
|
е |
|
В среде Windows за формирование изображения отвечают так |
||||
называемые инструменты, а функциикрисования лишь задают их поведение. |
||||
|
|
|
т |
|
Инструменты являются сис емными объ ктами, но прикладная программа |
||||
может произвольно создава ь их и управлять ими. |
||||
– шрифт (Font) отображение– |
символов и строк; |
|||
К основным инструмен ам о носятся: |
||||
|
и |
|
|
|
– перо (Pen) – |
т бражение контурных примитивов («карандаш»); |
|||
– кисть (Brush) – зап лнение внутренних областей примитивов; |
||||
л |
|
|
||
б |
|
|
|
|
– битовая карта (Bitmap) – «готовые» растровые изображения. |
||||
Инструмент |
|
идентифицируется его описателем и создается |
соответствующейи функцией вида Create..., которая возвращает этот описатель (NULL – признак ошибки). Количество создаваемых инструментов
искусственноБ не ограничивается, но в любом контексте одновременно может быть акт вным только один инструмент каждого типа. Выбор инструмента отменить нельзя, но можно повторять его сколько угодно раз с любыми другими инструментами того же типа. Инструменты различного типа между собой взаимно независимы. Перед удалением инструмент следует дезактивировать, выбрав активным другой инструмент того же типа, например, сохраненный предыдущий.
219
Приложение 6
Инструмент Pen
Для отображения контурных примитивов используется перо, выбранное в контексте, определяющее цвет, ширину и стиль линии, который может быть сплошным (solid), точечным (dotted) или пунктирным (dashed).
По умолчанию устанавливается одно из трех стандартных перьев, рисующих сплошные линии толщиной в единицу, выбранного цвета: BLACK- _PEN – черное перо, WHITE_PEN – белое перо и NULL_PEN – пустое перо, которое ничего не рисует.
Определив переменную, например, hPen типа HPEN (описатель пера – handle to a pen): HPEN hPen; получить описатель одного из стандартных перьев, например белого пера, можно, вызывая функцию
hPen = GetStockObject (WHITE_PEN); |
Р |
|
сделаем это перо текущим, вызвав функцию |
||
И |
||
SelectObject (hdc, hPen); |
После этого все линии будут использовать белое перо до тех пор, пока не |
||
|
|
У |
выберем другое перо в контекст устройства или пока не освободим контекст |
||
устройства. |
Г |
|
|
|
|
Все вышесказанное можно совместить в одной инструкции: |
||
|
Б |
|
|
hPen = SelectObject (hdc, GetStockObject (WHITE_PEN)); |
Если это первый вызов, функция SelectObject возвращает описатель того |
|||||||
пера, которое уже было выбрано в |
а |
текущим пером |
|||||
онтексте устройства; |
|||||||
|
|
|
|
|
к |
|
|
становится белое, а переменная hPen получает описатель предыдущего (по |
|||||||
умолчанию – черного) пера, верну ься к которому можно, используя вызов |
|||||||
|
|
|
|
е |
|
|
|
SelectObject (hdc, hPen); |
|
|
|||||
Для созда |
пера используются функции CreatePen или CreatePen- |
||||||
Indirect (ExtCreatePen). |
т |
|
|
|
|||
|
|
о |
|
|
|
|
|
Функция CreatePen: |
|
|
|
|
|||
|
ния |
|
|
|
|
|
|
hPen = CreatePen (iPenStyle, iWidth, rgbColor); |
|
||||||
параметр iPenStyleлопределяет стиль линии и может принимать одно из семи |
|||||||
значен й (семь стилей пера): PS_SOLID – сплошное, PS_DASH, PS_DOT, |
|||||||
б |
|
PS_DASHDOTDOT |
– штриховое, |
пунктирное и |
|||
PS DASHDOT, |
|
Бштрихпунктирное, PS_NULL – нерисующее (пустое) перо, PS_INSIDEFRAME
– внутренняя обводка, в замкнутом контуре автоматически отступает внутрь в соответствии с толщиной линии.
Для стилей PS_SOLID, PS_NULL и PS_INSIDEFRAME параметр iWidth
задает ширину пера, при iWidth = 0 – перо шириной в один пиксел. Параметр rgbColor – цвет пера; для перьев всех стилей, кроме PS_-
INSIDEFRAME, преобразуется в ближайший чистый цвет, стиль PS_INSIDEFRAME позволяет использовать полутона при ширине больше 1.
Можно создать перо, определив структуру LOGPEN logpen («логическое перо» – logical pen), содержащую поля:
220
Функции CreatePen и CreatePenIndirect не требуют описателя контекста устройства. Эти функции создают логические перья, которые
никак не связаны с контекстом устройства до тех пор, пока не вызвать |
|
функцию SelectObject. |
Р |
Рассмотрим метод создания, выбора и удаления перьев. Предположим, |
|
в программе используются два пера – красное шириной 3 и черноеИточечное. |
Определим переменные для хранения описателей этих перьев: |
||||||
static HPEN hPen1, hPen2; |
У |
|||||
Г |
||||||
|
|
|
|
|
||
В процессе обработки сообщения WM_CREATE создадим перья: |
||||||
hPen1 = CreatePen (PS_SOLID, 3, RGBБ(255, 0, 0)); |
||||||
hPen2 = CreatePen (PS_DOT, |
0, 0); |
|||||
В процессе обработки сообщ ния |
а |
|||||
WM_PAINT или когда есть |
||||||
|
|
|
|
к |
||
действительный контекст ус ройства, выберем одно из этих перьев в |
||||||
контекст устройства и можем рисова ь, используя его: |
||||||
|
|
|
е |
|
||
SelectObject (hdc, hPen2); |
|
|
||||
[фун ции рис вания линий] |
||||||
|
|
т |
|
|
||
SelectObject (hdc, hPen1); |
|
|
||||
|
о |
|
|
|
||
[друг е функции рисования линий] |
||||||
В процессе о работ сообщения WM_DESTROY удалить их: |
||||||
ки |
|
|
|
|
||
DeleteObject (hPen1); |
|
|
|
|||
л |
|
|
|
|
|
б
ихDeleteObject (hPen2);
БМожно создать перья в процессе обработки сообщения WM_PAINT и удалить после вызова EndPaint.
Можно объединить вызовы функций CreatePen и SelectObject в одну инструкцию:
SelectObject (hdc, CreatePen (PS_DASH, 0, RGB (255, 0, 0)));
Удалить перо можно, выбрав стандартное перо BLACK_PEN в контекст устройства и удаления значения, возвращаемого функцией SelectObject:
DeleteObject (SelectObject (hdc, GetStockObject (BLACK_PEN)));
221
Приложение 6
Выбирая только что созданное перо в контекст устройства, сохраним описатель, возвращаемый функцией SelectObject:
hPen = SelectObject (hdc, CreatePen (PS_DASH, 0, RGB (255, 0, 0)));
Если это первый вызов, hPen – описатель стандартного черного пера, мы можем теперь выбрать его в контекст устройства и удалить созданное перо (описатель, возвращаемый вызовом функции SelectObject) в одной инструкции:
|
DeleteObject (SelectObject (hdc, hPen)); |
|
|
|
|||||||
Инструмент Brush |
|
|
|
|
|
|
|
||||
Объект |
|
кисть |
– это битовый |
|
образ, |
свойства которого |
|||||
|
|
|
|
|
|
|
|
|
|
|
Р |
распространяются в горизонтальном и вертикальном направлениях при |
|||||||||||
закрашивании области. |
|
|
|
|
|
|
И |
||||
|
|
|
|
|
|
|
|
|
|
||
Имеется шесть стандартных (Stock) кистей: WHITE BRUSH – белая, |
|||||||||||
LTGRAY_ BRUSH – светло-серая, GRAY_ BRUSH – серая, DKGRAY_ BRUSH – |
|||||||||||
темно-серая, BLACK_ BRUSH – черная и NULL |
|
У |
|
||||||||
BRUSH (HOLLOW) – пустая |
|||||||||||
кисть. |
|
|
|
|
|
|
|
Г |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выбрать одну из стандартных кистей в контекст устройства можно |
|||||||||||
|
|
|
|
|
|
|
Б |
|
|
|
|
аналогично выбору пера, определив переменную типа описателя кисти |
|||||||||||
HBRUSH hBrush; получаем описатель |
исти, н пример, GRAY_BRUSH: |
||||||||||
|
|
|
|
|
|
а |
|
|
|
|
|
|
hBrush = GetStockObject (GRAY BRUSH); |
|
|
||||||||
|
|
|
|
|
к |
|
|
|
|
|
|
Выберем эту кисть в кон кст устройства: |
|
|
|
||||||||
|
SelectObject (hdc, hBrush);е |
|
|
|
|
|
|
||||
Теперь внутренняя блас ь рисуемых фигур будет закрашиваться серым. |
|||||||||||
Если необх д |
нарисовать |
фигуру |
без |
рамки, выберем перо |
|||||||
|
|
|
|
т |
|
|
|
|
|
|
|
NULL_PEN: |
|
мо |
|
|
|
|
|
|
|
||
|
SelectObject (hdc, GetStockObject (NULL_PEN)); |
|
|||||||||
А ес и |
|
и |
|
|
|
|
|
|
|
|
|
то ько контур фигуры без закрашивания внутренней области, |
|||||||||||
выберем кистьлNULL_BRUSH: |
|
|
|
|
|
|
|
||||
|
б |
|
|
|
|
|
|
|
|
|
|
и |
|
|
|
|
|
|
|
|
|
|
|
Б |
|
|
|
|
|
|
|
|
|
|
|
SelectObject (hdc, GetStockObject (NULL_BRUSH));
Для создания сплошной (Solid) логической кисти:
Для создания штриховой (Hatch) кисти, состоящей из горизонтальных, вертикальных или диагональных линий:
hBrush = CreateHatchBrush (iHatchStyle, rgbColor);
параметр iHatchStyle – стиль штриховки: HS_HORIZONTAL, HS_VERTICAL,
HS_BDIAGONAL – диагональная слева направо вверх; HS_FDIAGONAL – диагональная слева направо вниз; HS_CROSS – прямая сетка; HS_DIAG-
222
Приложение 6
CROSS – диагональная сетка; в обеих функциях rgbColor – цвет штриховых линий.
Промежутки между штриховыми линиями закрашиваются в соответствии с режимом и цветом фона, если режим фона – OPAQUE, то цвет фона используется для закрашивания промежутков между штриховыми линиями, если режим фона – TRANSPARENT, то промежутки между штриховыми линиями не зарисовываются.
Можно создавать кисти, основанные на битовых шаблонах,
используя функцию CreatePatternBrush:
hBrush = CreatePatternBrush (hBitmap);
Функция, включающая три рассмотренные ранее функции, строящие
кисти: |
|
Р |
|
hBrush = CreateBrushIndirect (&logbrush); |
|
|
|
картой DIB (в Windows 95 размер шаблона огр ничен 8×8 точек);
переменная logbrush – структура типа LOGBRUSH («логическая кисть» – |
|||
logical brush), содержащая поля: |
|
|
И |
UINT lbStyle – стиль кисти: BS_SOLID – сплошнаяУ; BS_HOLLOW, |
|||
BS_NULL – «пустая» (невидимая); BS_HATCHED |
– штрихованная; |
||
|
Г |
|
|
BS_PATTERN, BS_PATTERN8X8 – зад ются битовой картой; BS_DIB- |
|||
PATTERN, BS_DIBPATTERN8X8, BS_DIBPATTERNPT – |
задаются битовой |
||
|
Б |
|
|
|
а |
|
|
COLORREF lbColor – цвет кисти, для пустой или «шаблонной» кисти |
||||||
|
|
е |
|
|
|
|
игнорируется, для кистей с DIB-шаблоном младшее слово определяет, |
||||||
следует ли |
интерпретирова |
|
гокцвета |
как |
заданные |
цветовыми |
компонентами |
ть |
|
или |
как |
палитровые |
|
(DIB_RGB COLORS) |
(DIB_PAL_COLORS).
Значение поля lbStyle пределяет, как интерпретируются другие поля: |
||||
|
|
|
|
|
lbStyle |
|
|
и |
lbHatch |
|
|
lbColor |
||
|
|
л |
|
|
BS_SOLID |
|
Цветокисти |
Игнорируется |
|
BS_HOLLOW |
Игнорируется |
Игнорируется |
||
|
б |
Цвет штриховых линий |
Стиль штриховки |
|
BS_HATCHED |
||||
BS_PATTERN |
Игнорируется |
Описатель битового шаблона |
||
ли |
|
|
|
|
Получ ть описатель логической кисти: SelectObject (hdc, hBrush); |
||||
Б |
|
|
|
|
Уда ть созданную кисть: DeleteObject (hBrush); Получ ть информацию о кисти:
GetObject (hBrush, sizeof (LOGBRUSH), &logbrush);
Инструмент Font
Более сложным инструментом является шрифт. Все символы в оконном интерфейсе формируются в соответствии с одним из зарегистрированных в системе шрифтов.
Физический шрифт – файл (образ в памяти) с описанием начертаний всех известных в данном шрифте символов. Логический шрифт – объект
223
Приложение 6
GDI, характеризуемый как физическим шрифтом, так и его конкретными характеристиками. Он же является и инструментом, отвечающим за формирование символов.
Для создания логического шрифта используется функция
HFONT CreateFont (int nHeight, int nWidth, int nEscapement,
int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline,
DWORD fdwStrikeOut, DWORD fdwCharSet, |
|
|
DWORD fdwOutputPrecision, DWORD fdwClipPrecision, |
|
|
DWORD fdwQuality, DWORD fdwPitchAndFamily, |
Р |
|
LPCTSTR lpszFace); |
||
|
||
возвращающая описатель созданного инструмента (NULL – ошибка), |
||
параметры: |
|
|
У |
|
|
nHeight – основной размер (высота) шрифта в логических единицах: |
положительное |
значение определяет |
высоту знакоместа, отрицательное – |
высоту шрифта |
(после смены знака), |
нулевое – размер поИумолчанию; при |
неточном соответствии требуемого размера выбирается наибольший, не |
||||
превышающий требуемый; |
|
|
|
|
nWidth – «приблизительная» ширина шрифтаГ, если 0 – стандартная для |
||||
выбранного основного размера; |
|
|
строкиБсимволов (угол между |
|
nEscapement – направление |
выво |
|||
|
|
к |
|
|
базовой линией и горизонтальной осью по ч совой стрелке в десятых долях |
||||
градуса); |
е |
да |
nOrientation – ориентация отд льного символа (исчисление аналогично предыдущему параметру, в Windows 9x ориентация символов и направление вывода должны совпада ь);
fnWeight – толщина символов в условных единицах от 0 до 1000, |
||||||
например: 0 (FW DONTCARE) – стандартный (по умолчанию), 400 |
||||||
|
и |
|
|
|
|
|
(FW_NORMAL, FW REGULARт) – стандартная толщина, обычный шрифт, 700 |
||||||
|
л |
|
|
|
|
|
(FW_BOLD) – ж рныйо, выделенный, и т.д.; |
|
|||||
fdwItalic, fdwUnderline, fdwStrikeOut – флаги, указывающие, является ли |
||||||
шрифт нак онным, подчеркнутым или перечеркнутым; |
||||||
fdwCharSet – |
тип |
символьного набора: |
DEFAULT_CHARSET, |
|||
и |
|
|
|
|
|
|
ANSI CHARSET, OEM_CHARSET и т.д. (национальные наборы символов); |
||||||
Б |
|
|
|
|
|
|
fdwOutputPrecisionб |
– |
«точность |
вывода» |
символов, фактически |
||
предпочтен е типа |
шрифта при |
наличии альтернативного выбора: |
OUT DEFAULT_PRECIS, OUT_DEVICE_PRECIS и т.д.; fdwClipPrecision – точность отсечения; fdwQuality – качество вывода;
fdwPitchAndFamily – комбинация по «ИЛИ» двух групп параметров, действующих при неопределенном имени шрифта:
–питч (шаг символов) – 2 младших бита: DEFAULT_PITCH,
FIXED_PITCH, VARIABLE_PITCH;
–«семейство» шрифта – 4 старших бита: FF_DONTCARE – по умолчанию, FF_MODERN – моноширинные шрифты, FF_ROMAN –
224