设置文本对齐

工程模板:https://www.cnblogs.com/eternalmoonbeam/p/10793080.html

使用函数:SetTextAlign

UINT SetTextAlign
(
    HDC hdc,
    UINT align
);

setextAlign函数为指定的设备上下文设置文本对齐标志。

alilgn使用下面列表中值的掩码进行文本对齐。只能从影响水平和垂直对齐的标志中选择一个标志。此外,只能选择两个改变当前位置的标志中的一个。

TA_BASELINE
参考点将在文本的基线上。
TA_BOTTOM
参考点将位于边界矩形的下边缘。
TA_TOP
参考点将位于边界矩形的上边缘。
TA_CENTER
参考点将与边界矩形的中心水平对齐。
TA_LEFT
参考点将位于边界矩形的左边缘。
TA_RIGHT
参考点将位于边界矩形的右边缘。
TA_NOUPDATECP
每次文本输出调用后,当前位置不会更新。参考点被传递到文本输出函数。
TA_RTLREADING
中东语言版Windows:文本按从右到左的阅读顺序排列,而不是按默认的从左到右的顺序排列。仅当设备上下文中选择的字体为希伯来语或阿拉伯语时,此选项才适用。
TA_UPDATECP
当前位置在每次文本输出调用后更新。当前位置用作参考点。

当当前字体有一个垂直默认基线时,如日文汉字,必须使用以下值而不是ta_基线和ta_中心。

VTA_BASELINE
参考点将在文本的基线上。
VTA_CENTER
参考点将与边界矩形的中心垂直对齐。

一个例子:

for (int i = 0; i < 128; i++)
		{
			StringCchPrintf(szstr, STRSIZE, TEXT("%s: %u"), TEXT("List"), i);
			StringCchLength(szstr, STRSIZE, &strsize);
			TextOut(hdc, xstr + STRSIZE / 2 * cxchar, ystr + i * cychar, szstr, strsize);

			SetTextAlign(hdc, TA_RIGHT | TA_TOP);
			StringCchPrintf(szstr, STRSIZE, TEXT("%s: %u"), TEXT("List"), i);
			StringCchLength(szstr, STRSIZE, &strsize);
			TextOut(hdc, xstr + 3 * STRSIZE / 4 * cxchar, ystr + i * cychar, szstr, strsize);
			SetTextAlign(hdc, TA_LEFT | TA_TOP);
		}

  

原文地址:https://www.cnblogs.com/eternalmoonbeam/p/10806178.html