SetTextAlign

SetTextAlign是一種函式,功能是為指定設備環境設定文字對齊標誌。

基本介紹

  • 外文名:SetTextAlign
  • 函式功能:指定設備環境設定文字對齊標誌。
  • 函式原型:UINT SetTextAlign
  • 參數:hdc
  • 速查:Windows NT:3.1及以上版本
函式功能,函式原型,參數,備註,速查,示例,

函式功能

該函式為指定設備環境設定文字對齊標誌。

函式原型

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[10];
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[i].szDesc,
lstrlen(devcaps[i].szDesc),
NULL);
SetTextAlign(hdc, TA_RIGHT | TA_TOP);
ExtTextOut(hdc, cxChar * 47, cyChar * i, 0, NULL,
szBuffer,
wsprintf(szBuffer, TEXT("%5d"), GetDeviceCaps(hdc, devcaps[i].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);
}

相關詞條

熱門詞條

聯絡我們