TextOut的用法:
TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString)
参数hdc就是要绘制文字的DC句柄。
参数nXStart就是文字要绘制的起点位置的X坐标。
参数nYStart就是文字要绘制的起点位置的Y坐标。
参数lpString就是要绘制的文字的字符串指针。
参数cbString就是要绘制的文字的字符个数。
DrawText的用法:
int WINAPI DrawText(
HDC hdc, //DC的句柄
LPCWSTR lpchText, //要绘制的文本
int cchText, //要绘制的文本的长度
LPRECT lprc, //绘制的目标区域
UINT format //绘制标志, DT_SINGLELINE等
);
hdc:要绘制文字的DC句柄。
pString:要绘制的字符串。
nCount:要绘制的字符个数,-1代表绘制以NULL结尾的字符串。
lpRect:要绘制的区域。
uFormat:要绘制的格式。可以是下列值的组合。
DT_BOTTOM, 文本底对齐。
DT_CENTER, 文本水平居中显示。
DT_LEFT, 文本左对齐。
DT_VEENTER, 文本垂直居中显示。
DT_RIGHT, 文本右对齐。
DT_SINGLELINE, 只指定单个行。回车和换行,均不打断原有行。
DT_TOP, 文本顶对齐。
DT_WORDBREAK,指定单词间的中断。如果字符串中的一个单词超出lpRect指向的矩形的右边界时,则函数将在单词之间自动切断正文行。
DT_CALCRECT, 确定矩形的宽度和高度,如果有多个正文行,DrawText则将使用由lpRect参数指定的矩形宽度,并且延伸矩形底部,直到能框住正文行的最后一行。如果只有一行正文,DrawText将修正此矩形的右边,以便能框住此行正文的最后一个字符。带入此参数后,DrawText不绘制字符串。
DT_END_ELLIPSIS,如果字符串的长度超过矩形的范围,它会被截断并以省略号标识。
相比两种绘制方式,发现DrawText是采用绘制区域跟绘制格式来控制绘制的位置,而TextOut是直接采用起始位置来控制绘制的位置,所以在自定义位置绘制时TextOut更灵活一些,而以布局式绘制时,DrawText更适合一些。此外DrawText还可以计算所绘制字符串的面积大小,还可以以省略号代替超出区域的文本。