当前位置:首页 科普知识 SetTextAlign

SetTextAlign

发布时间:2023-09-14 00:56:09

SetTextAlign是一种函数,功能是为指定设备环境设置文字对齐标志。

SetTextAlign介绍

SetTextAlign是一种函数,功能是为指定设备环境设置文字对齐标志。

SetTextAlign

SetTextAlign函数功能

该函数为指定设备环境设置文字对齐标志。

SetTextAlign函数原型

UINT SetTextAlign(

HDC hdc, // 设备环境句柄

UINT fMode // 文本对齐选项

);

SetTextAlign参数

hdc

设备环境句柄.

fMode

使用下面的列表中的掩码指定文本对齐方式。在横向对齐和纵向对齐标志中只能选择一个。另外,两个标志只能选择一个来改变当前的位置。

TA_baseLINE

基准点在正文的基线上。

TA_BOTTOM

基准点在限定矩形的下边界上。

TA_TOP

基准点在限定矩形的上边界上。

TA_CENTER

基准点与限定矩形的中心水平对齐。

TA_LEFT

基准点在限定矩形的左边界上。

TA_RIGHT

基准点在限定矩形的右边界上。

TA_RTLREADING

对于中东Windows版,正文从右到左的阅读顺序排列,与缺省的从左到右正好相反。

只有当被选择的字体是Hebrew或Arabic时,此值才有用。

TA_NOUPDATECP

每次文字输出调用后当前基准点不改变。基准点是传输给正文输出函数的位置。

TA_UPDATECP

每次文字输出调用后当前基准点改变。当前位置作为基准点。

若当前字体有一条缺省的垂直基线(如Kanji),下列值用于取代TA_baseLINE和TA_CENTER,各值含义为:

VTA_baseLINE

基准点在正文的基线上。

VTA_CENTER

基准点与限定矩形的中心垂直对齐。

缺省值是TA_LEFT, TA_TOP和TA_NOUPDATECP。

如果函数调用成功,返回值是文字对齐方式的前一个设置;

如果函数调用失败,返回值是GDI_ERROR。

Windows NT:若想获得更多错误信息,请调用GetLastError函数。

SetTextAlign其他信息

TextOut和ExtTextOut用文字对齐标志来将一个正文字符串定位于显示器或者其他设备。该标志指定了基准点与限定正文的矩形的位置关系,基准点可以是当前位置,也可是传给正文输出函数的一个点。

限定正文的矩形是正文字符串里的字符单元形成的。

最好的办法是让左对齐文本使用两种标志

SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER))– 或者–

SetTextAlign (hdc,TA_LEFT | <other flags>)

SetTextAlign

你也可以使用 SetTextAlign (hdc, TA_LEFT) 达到这个目的, 但是这个方法会丢失所有的垂直基线或者从右到左的设置。

SetTextAlign速查

Windows NT:3.1及以上版本;

Windows:95及以上版本;

Windows CE:不支持;

头文件:wingdi.h;

库文件:gdi32.lib。

SetTextAlign示例

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

static int cxChar, cxCaps, cyChar;

TCHAR szBuffer;

HDC hdc;

int i;

PAINTSTRUCT ps;

TEXTMETRIC tm;

switch (message)

{

case WM_CREATE:

hdc = GetDC(hwnd);

GetTextMetrics(hdc, &tm);

cxChar = tm.tmAveCharWidth;

cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;

cyChar = tm.tmHeight + tm.tmExternalLeading;

ReleaseDC(hwnd, hdc);

return 0;

case WM_PAINT:

hdc = BeginPaint(hwnd, &ps);

for(i = 0; i < NUMLINES; i++)

{

ExtTextOut(hdc, 0, cyChar * i, 0, NULL,

devcaps.szDesc,

lstrlen(devcaps.szDesc),

NULL);

SetTextAlign(hdc, TA_RIGHT | TA_TOP);

ExtTextOut(hdc, cxChar * 47, cyChar * i, 0, NULL,

szBuffer,

wsprintf(szBuffer, TEXT("%5d"), GetDeviceCaps(hdc, devcaps.iIndex)),

NULL);

SetTextAlign (hdc, TA_LEFT | TA_TOP) ;

}

EndPaint(hwnd, &ps);

return 0;

case WM_DESTROY:

PostQuitMessage(0);

SetTextAlign

return 0 ;

}

return DefWindowProc(hwnd, message, wParam, lParam);

}

温馨提示:
本文【SetTextAlign】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6