DrawText函數簡介
這個函數的作用非常easy,就是在指定的區域內輸出格式化的文本。
函數原型:
int DrawText(
HDC hDC,
LPCTSTR lpString,
int nCount,
LPRECT lpRect,
UNIT uFormat
);
hDC是設備上下文句柄。lpString指向將要繪制的UNICODE文本。nCount是要輸出的字符數,假設nCount = -1,則Windows自己主動計算字符數,只是此時lpString所指向的必須是以NULL結尾的字符串。lpRect指向rect結構體,指定了文本格式化的矩形區域。uFormat是格式化標記,也是這里面稍顯復雜的一個參數。
以下是幾個經常使用的格式化標記:
DT_CALCRECT:這個參數比較重要,能夠使DrawText函數計算出輸出文本的尺寸。假設輸出文本有多行,DrawText函數使用lpRect定義的矩形的寬度,並擴展矩形的底部以容納輸出文本的最后一行。假設輸出文本僅僅有一行,則DrawText函數改變矩形的右邊界,以容納下正文行的最后一個字符。出現上述不論什么一種情況,DrawText函數將返回格式化文本的高度,而不是繪制文本。
DT_CENTER:指定文本水平居中顯示。
DT_VCENTER:指定文本垂直居中顯示。該標記僅僅在單行文本輸出時有效,所以它必須與DT_SINGLELINE結合使用。
DT_SINGLELINE:單行顯示文本,回車和換行符都不斷行。
② DrawText函數使用舉例
//Get the height and length of the string.
DrawText(hdc,szHello,-1,&rect, DT_CALCRECT | DT_CENTER | DT_SINGLELINE);
// Draw the text
DrawText(hdc,szHello,-1,&rectCli,DT_CENTER | DT_SINGLELINE);
③ 常常與DrawText結合使用的幾個函數
(1) SetTextColor 設置文本前景色
COLORREF SetTextColor(
HDC hdc,
COLORREF crColor
);
(2) SetBkColor 設置文本背景色
COLORREF SetBkColor(
HDC hdc,
COLORREF crColor
);
(3) SetBkMode 設備背景色模式為透明與不透明
int SetBkMode(
HDC hdc,
int iBkMode
);