Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
227-256.doc
Скачиваний:
2
Добавлен:
11.11.2019
Размер:
339.46 Кб
Скачать

Значения констант выравнивания текста

Значение константы

Описание

TA_CENTER

Выравнивание точки по центру относительно ограничивающего прямоугольника

TA_LEFT

Выравнивание точки по левому краю относительно ограничивающего прямоугольника

TA_RIGHT

Выравнивание точки по правому краю относительно ограничивающего прямоугольника

TA_BASELINE

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

TA_BOTTOM

Выравнивание точки по нижнему краю

относительно ограничивающего прямоугольника

TA_TOP

Выравнивание точки по верхнему краю относительно ограничивающего прямоугольника

TA_NOUPDATECP

Не модифицируется текущая позиция точки после каждого вызова функции вывода текста. Используется по умолчанию.

TA_UPDATECP

Модифицируется текущая горизонтальная позиция точки после каждого вызова функции вывода текста. Координаты, установленные при вызове функции вывода текста, игнорируются.

В процессе вывода текста можно указать межсимвольный интервал и добиться разреженного или уплотненного представления текста. Для выполнения этой операции используется функция CDC::SetTextCharacterExtra(), при вызове которой в качестве аргумента передается межсимвольный интервал, измеряемый в логических единицах. Если используется режим отображения, отличный от MM_TEXT, то передаваемое в функцию значение будет округляться до ближайшего пиксела. Определен прототип функции

int CDC::SetTextCharacterExtra( int nCharExtra );

Каждая из рассмотренных выше функций установки атрибутов текста имеет соответствующую функцию для получения значений этих установок. Эти функции не имеют параметров. Например, функция CDC::GetTextColor() возвращает текущий цвет текста. Ее прототип такой:

COLORREF CDC::GetTextColor( ) const;

Функция CDC::GetBkMode() возвращает фоновой режим, который может определяться значениями OPAQUE или TRANSPARENT. Прототип этой функции такой:

int CDC::GetBkMode() const;

Для получения информации о текущем режиме отображения используется функция CDC::GetMapMode(), которая возвращает одно из значений, представленных в табл. 8.5. Функция имеет такой прототип:

int CDC::GetMapMode() const;

Определить стиль выравнивания текста можно с помощью функции CDC::GetTextAlign(). Функция возвращает значение флага выравнивания в соответствии с табл. 8.6. Определен прототип функции:

UINT CDC::GetTextAlign() const;

Узнать установленное значение межсимвольного интервала можно с помощью функции CDC::GetTextCharacterExtra(), прототип которой показан ниже.

int CDC::GetTextCharacterExtra() const;

Наконец, для получения значение выбранного цвета текста используют функцию CDC::GetBkColor(), прототип которой приведен далее. Функция возвращает значения RGB кода цвета.

COLORREF CDC::GetBkColor() const;

В случае перекрытия или минимизации главного окна программы TextDemo, а также в результате прокручивания текста формируется недействительная область окна. Вспомните: термин недействительная область относится к части окна, отмеченной для рисования или перерисовки в связи с каким-то внешним событием, например, перемещением пользователем перекрывающего окна. В этом случае на экран выводится только часть рисунка, попавшая в недействительную область, вывод вне этой области отсекается или отбрасывается. Для формирования области отсечения в процессе вывода текста в окно представления используется функция CDC::GetClipBox() параметром которой является указатель на структуру RECT или объект CRect, который определяет размеры прямоугольной области. Прототип функции такой:

virtual int CDC::GetClipBox( LPRECT lpRect ) const;

Функция возвращает одно из следующих значений: COMPLEXREGION — область отсечения имеет перекрывающиеся границы; ERROR — контекст устройства ошибочный; NULLREGION — область отсечения пуста; SIMPLEREGION — область отсечения не имеет перекрытий.

Наконец, функция OnDraw() класса представления, отображает каждую строку текста в пределах окна представления, используя функцию CDC::TextOut(). Функция имеет такие прототипы:

virtual BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount); virtual BOOL CDC::TextOut( int x, int y, const CString& str );

Первые два параметра функции CDC::TextOut() задают координаты верхнего левого угла первого символа в отображаемой строке, т.е. координаты точки выравнивания символа (рис. 8.9). Заметьте: позицию точки выравнивания в пределах строки текста можно изменить, вызывая функцию CDC::SetTextAlign(). Третий параметр является указателем на отображаемую строку или ссылкой на объект СString, содержащий эту строку. В случае использования указателя на строку текста задается дополнительный параметр — количество байтов строки. Так как каждый символ строки занимает один байт, то последний параметр определяет количество символов строки.

Если строки текста не могут полностью поместиться внутри окна представления, то необходимо использовать средства прокрутки. Для решения вопроса о необходимости отображения полос прокрутки и ее поддержки необходимо знать текущий размер документа. В программе TextDemo каждый раз при отображении диалогового окна Font и вызове функции CDocument::UpdateAllViews() происходит изменение размера документа. Эта функция сообщает каждому представлению, связанному с документом, что тот изменился. Автоматически она вызывает функцию CView::OnUpdate(), которая получает данные документа, обновляет переменные-члены класса представления или объявляет часть окна представления недействительной, что заставляет функцию OnDraw() класса представления перерисовать ее, используя данные документа.

Виртуальная функция CTextDemoView::OnUpdate() вызывается при первоначальном создании окна представления, а также всякий раз, когда функция CTextDemoDoc::OnOptionsFont() обращается к UpdateAllViews() класса документа после выбора нового шрифта. Таким образом, функция CTextDemoView::OnUpdate() устанавливает размер прокручиваемого документа, полученный исходя из размеров нового шрифта.

Функция CTextDemoView::OnUpdate()должна вызвать функцию CScrollView::SetScrollSizes() для установки нового размера документа. Если шрифт не выбран, то задается нулевой размер документа, а полоса прокрутки скрывается, так как отображаемый текст отсутствует. Функция SetScrollSizes() класса CScrollView устанавливает общую высоту и ширину текста, если шрифт уже выбран. Напомним прототип функции.

void CScrollView::SetScrollSizes( int nMapMode, SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE& sizeLine = sizeDefault );

Функция имеет такие параметры: nMapMode — режим отображения (табл. 8.5); sizeTotal — размер документа (область экрана, которая может вместить документ); sizePage — размер страницы (размер клиентской области окна); sizeLine — размер строки. Если в функцию передать нулевые значения, то прокрутка будет заблокирована.

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