Настройка выравнивания текста
Вы можете запросить и задать выравнивание текста для контекста устройства с помощью функций 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, так как выделенный текст отображается неправильно. Если необходимо использовать этот флаг, его можно отменить и сбросить по мере необходимости, чтобы избежать проблемы.