Поделиться через


Настройка выравнивания текста

Вы можете запросить и задать выравнивание текста для контекста устройства с помощью функций GetTextAlign и SetTextAlign . Параметры выравнивания текста определяют расположение текста относительно указанного расположения. Текст можно выровнять по правому или левому краю позиции или по центру; он также может быть выровнен поверх или ниже точки.

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

switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & GetTextAlign(hdc)) 
{ 
    case TA_LEFT: 
       . 
       . 
       . 
    case TA_RIGHT: 
       . 
       . 
       . 
    case TA_CENTER: 
       . 
       . 
       . 
} 

Функцию SetTextAlign также можно использовать для обновления текущей позиции при вызове функции вывода текста. Например, в следующем примере функция SetTextAlign используется для обновления текущей позиции при вызове функции TextOut . В этом примере параметр cArial — это целое число, указывающее количество шрифтов Arial.

UINT uAlignPrev; 
char szCount[8];
HRESULT hr;
size_t * pcch; 
 
uAlignPrev = SetTextAlign(hdc, TA_UPDATECP); 
MoveToEx(hdc, 10, 50, (LPPOINT) NULL); 
TextOut(hdc, 0, 0, "Number of Arial fonts: ", 23); 
itoa(cArial, szCount, 10); 

hr = StringCchLength(szCount, 9, pcch);
if (FAILED(hr))
{
// TODO: write error handler 
}
 
TextOut(hdc, 0, 0, (LPSTR) szCount, *pcch); 
SetTextAlign(hdc, uAlignPrev); 

Примечание

Не следует использовать SetTextAlign с TA_UPDATECP при использовании ScriptStringOut, так как выделенный текст отображается неправильно. Если необходимо использовать этот флаг, его можно отменить и сбросить по мере необходимости, чтобы избежать проблемы.