SetTextAlign是一种函数,功能是为指定设备环境设置文字对齐标志。
SetTextAlign是一种函数,功能是为指定设备环境设置文字对齐标志。
该函数为指定设备环境设置文字对齐标志。
UINT SetTextAlign(
HDC hdc, // 设备环境句柄
UINT fMode // 文本对齐选项
);
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函数。
TextOut和ExtTextOut用文字对齐标志来将一个正文字符串定位于显示器或者其他设备。该标志指定了基准点与限定正文的矩形的位置关系,基准点可以是当前位置,也可是传给正文输出函数的一个点。
限定正文的矩形是正文字符串里的字符单元形成的。
最好的办法是让左对齐文本使用两种标志
SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER))– 或者–
SetTextAlign (hdc,TA_LEFT | <other flags>)
你也可以使用 SetTextAlign (hdc, TA_LEFT) 达到这个目的, 但是这个方法会丢失所有的垂直基线或者从右到左的设置。
Windows NT:3.1及以上版本;
Windows:95及以上版本;
Windows CE:不支持;
头文件:wingdi.h;
库文件:gdi32.lib。
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);
return 0 ;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}