输出API函数总结

本文总结了Windows API中用于文本输出的几个关键函数,包括TextOut、ExtTextOut、TabbedTextOut、DrawText、DrawTextEx和PolyTextOut。每个函数详细介绍了其功能和使用场景,如TextOut的精确输出,ExtTextOut的矩形裁剪和不透明填充,TabbedTextOut的制表位处理,以及DrawText和DrawTextEx的格式化文本绘制能力。PolyTextOut则用于绘制多个字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TextOut

函数原型:

BOOL TextOut(
			 HDC hdc,          // 设备描述表句柄
			 int nXStart,      // 字符串开始位置的x坐标
			 int nYStart,      // 字符串开始位置的y坐标
			 LPCTSTR lpString, // 要输出的字符串
			 int cbString      // 字符串中字符的个数
);

函数功能:

        该函数用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置,可以精确输出。

二、ExtTextOut

函数原型:

BOOL ExtTextOut(
		HDC hdc,          // 设备描述表句柄
		int X,            // 字符串开始位置的x坐标
		int Y,            // 字符串开始位置的y坐标
		UINT fuOptions,   // 指定如何使用应用程序定义的矩形。如:
				  //ETO_CLIPPED:正文将裁剪到矩形中。
				  //ETO_OPAQUE:用当前的背景色来填充矩形。
		CONST RECT *lprc, // 指向结构RECT的指针,其中包含了用于裁剪或作不透明物矩形的尺寸
		LPCTSTR lpString, // 要输出的字符串
		UINT cbCount,     // 字符串中字符的个数
		CONST INT *lpDx   // 指向可选数组的 指针,其中数组里的值表示相邻字符单位开始处间距离。
				  //如果值为NULL,则使用在字符之间的默认间隔。
  );
函数功能:

        该函数可以提供一个可选的矩形,用于裁剪或作不透明物或两者兼有。用当前选择的字体、背景颜色和正文颜色来绘制一个字符串。

三、TabbedTextOut

函数原型:

LONG TabbedTextOut(
				   HDC hDC,                    // 设备描述表句柄
				   int X,                      //  字符串开始位置的x坐标
				   int Y,                      // 字符串开始位置的y坐标n
				   LPCTSTR lpString,           //要输出的字符串
				   int nCount,                 // 字符串中字符的个数
				   int nTabPositions,          //指定制表位位置数组里的值的个数
				   LPINT lpnTabStopPositions,  // 指向数组的指针,该数组含有制表位位置(按逻辑单位),
                                                               //制表位必须按升序保存,最小的X值必须是数组的第一项。
				   int nTabOrigin              // 指定制表符展开的开始位置的X坐标(按逻辑单位)。
 );

函数功能:

        该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。如果函数调用成功,返回值是字符串的尺寸(按逻辑单位)。高位字表示高度,低位字表示宽度详见:http://blog.youkuaiyun.com/deqin888/article/details/3445619

四、DrawText

函数原型:

int DrawText(
			 HDC hDC,          // 设备描述表句柄
			 LPCTSTR lpString, // 要输出的字符串
			 int nCount,       // 字符串中字符的个数如果nCount为-1,则lpString指向的字符串
			                   //被认为是以\0结束的,DrawText会自动计算字符数
			 LPRECT lpRect,    // 指向矩形结构RECT的指针
			 UINT uFormat      // 正文的绘制选项,指定格式化文本的方法,如:
			                   //DT_SINGLELINE,显示正文的同一行,回车和换行符都不能折行。
					   //DT_BOTTOM,将正文调整到矩形底部。此值必须和DT_SINGLELINE组合。
					   //DT_CENTER,使正文在矩形中水平居中。
					   //DT_VCENTER,使正文在矩形中垂直居中。 此值必须和DT_SINGLELINE连用
);
函数功能:

        该函数在指定的矩形里写入格式化的正文,根据指定的方法对正文格式化(扩展的制表符,字符对齐、折行等)。如果函数调用成功,返回值是正文的高度(逻辑单位)。如果指定了DT_VCENTER或DT_BOTTOM,返回值是lpRect->top到绘制的正文的底部的偏移值。

五、DrawTextEx

函数原型:

int DrawTextEx(
			   HDC hdc,                     //设备描述表句柄
			   LPTSTR lpchText,             //要输出的字符串
			   int cchText,                 //字符串中字符的个数
			   LPRECT lprc,                 // 指向矩形结构RECT的指针
			   UINT dwDTFormat,             //正文的绘制选项,指定格式化文本的方法
			   LPDRAWTEXTPARAMS lpDTParams  // 指向DRAWTEXTPARAMS结构的指针,该结构指定附加的格式选项,
			                                //此参数可以为NULL。

                                        // typedef struct { 
                                           //   UINT cbSize; 结构大小
                                           //   int  iTabLength; TAB 占位大小, 以字符平均宽度为单位
                                           //   int  iLeftMargin; 左边距, 以字符平均宽度为单位
                                           //   int  iRightMargin; 右边距, 以字符平均宽度为单位
                                           //   UINT uiLengthDrawn; 返回 DrawTextEx 函数绘制的字符个数, 包括空格
                                        //} DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS; 
 );
函数功能:

        与DrawText差不多,比它增加了一些功能。

六、PolyTextOut

函数原型:

BOOL PolyTextOut(
                           HDC hdc,                // 设备描述表句柄
		           CONST POLYTEXT *pptxt,  //指向POLYTEXT结构数组的指针,该数组描述将被绘制的字符串。
				                   //数组中一每一个字符对应一个结构
		           int cStrings            //指定pptxt数组中的POLYTEXT结构数。
 );

typedef struct _POLYTEXT { 
	 int     x;        //x,y定义了字串的参考位置
         int     y; 
         UINT    n;        // 字串的字符数量
         LPCTSTR lpstr;    //要输出的字串
         UINT    uiFlags;  // 可设为下述一个或多个常数:
                           //ETO_CLIPPED 将输出剪切成由rcl字段指定的一个矩形
                           //ETO_OPAQUE 用当前背景色填充rcl矩形
         RECT    rcl;      //用于指定约束矩形(如已经设置了ETO_CLIPPED)
         int     *pdx;     // 指针指向一个 int 数组,包含了字串中每个字符的宽度
} POLYTEXT; 

函数功能:

        该函数在指定设备环境下以当前所选的字体和正文颜色绘制多个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值