TextOut函数使用当前选定的字体在指定的位置写入一个字符串。
BOOL TextOut(
HDC 【HDC】, | //设备上下文的句柄 |
INT 【nXStart】, | //起始位置的x坐标 |
INT 【nYStart】, | //起始位置的y坐标 |
LPCTSTR 【lpString】, | //字符串的地址 |
INT 【cbString】 | //字符串中的字符数 |
); |
参数
【HDC】
标识设备上下文。
【nXStart】
指定Windows用于对齐字符串的参考点的逻辑x坐标。
【nYStart】
指定Windows用于对齐字符串的参考点的逻辑y坐标。
【lpString】
指向要绘制的字符串。字符串不需要为零终止,因为【cbString】指定字符串的长度。
【cbString】
指定字符串中的字符数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
参考点的解释取决于当前文本对齐模式。应用程序可以通过调用GetTextAlign函数来检索此模式;应用程序可以通过调用SetTextAlign功能来改变此模式。
默认情况下,此函数不会使用或更新当前位置。但是,应用程序可以使用【FMODE】参数设置为TA_UPDATECP来调用SetTextAlign函数,以允许Windows在每次应用程序为指定的设备上下文调用TextOut时使用和更新当前位置。设置此标志时,Windows会忽略后续TextOut呼叫中的【nXStart】和【nYStart】参数。
当TextOut功能放置在路径括号内时,系统将生成包含每个字符加上其字符框的TrueType文本的路径。生成的区域是字符框减去文本,而不是文本本身。在将TextOut功能放在路径括号中之前,可以通过将背景模式设置为透明来获取TrueType文本轮廓所包围的区域。以下是演示此过程的示例代码。
//获取窗口的客户端矩形
GetClientRect(hwnd, &r);
// FIX:通过设置背景模式
//透明,区域是文本本身
// SetBkMode(hdc,TRANSPARENT);
//括号开始一个路径
BeginPath(hdc);
//发送一些文本到世界
TextOut(hdc, r.left, r.top, "Defenestration can be hazardous", 4);
//括号结束路径
EndPath(hdc);
//从该路径导出区域
SelectClipPath(hdc, RGN_AND);
//这会产生与SelectClipPath()相同的结果
// SelectClipRgn(hdc,PathToRegion(hdc));
//填写该区域的灰色
FillRect(hdc, &r, GetStockObject(GRAY_BRUSH));
也可以看看