文本输出API函数:TextOut,ExtTextOut,DrawText,DrawTextEx,PolyTextOut,TabbedTextOut

35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor TextOut和TabbedTextOut的区别 TabbedTextOut 功能为该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。 TabbedTextOut函数定义 WINUSERAPI LONG WINAPI TabbedTextOutW( __in HDC hdc, //绘图设备上下文 __in int x, /... 阅读详情

        前阵子由于做一个软件需要用Detour库HOOK其它程序的文本输出,以实现对第三方程序文字的监控。

        对这六个文本输出API函数:TextOut,ExtTextOut,DrawText,DrawTextEx,PolyTextOut,TabbedTextOut,作了一番学习。

        以前只是使用,HOOK以后才发现它们有很大的不同。

// TextOut(分为TextOutA及TextOutW)
//仅可输出单行文字
BOOL TextOut(
  HDC hdc,           // handle to DC
  int nXStart,       // x-coordinate of starting position
  int nYStart,       // y-coordinate of starting position
  LPCTSTR lpString,  // character string
int cbString       // number of characters
);

//而ExtTextOut进一步,多了fuOptions及lprc, lpDx参数, 可利用这3个参数进行剪切,遮挡等操作
BOOL ExtTextOut(
  HDC hdc,          // handle to DC
  int X,            // x-coordinate of reference point
  int Y,            // y-coordinate of reference point
  UINT fuOptions,   // text-output options
  CONST RECT *lprc, // optional dimensions
  LPCTSTR lpString, // string
  UINT cbCount,     // number of characters in string
  CONST INT *lpDx   // array of spacing values
);

//DrawText可用于多行输出,计算即将输出的位置等,考虑Tab字符等
int DrawText(
  HDC hDC,          // handle to DC
  LPCTSTR lpString, // text to draw
  int nCount,       // text length
  LPRECT lpRect,    // formatting dimensions
  UINT uFormat      // text-drawing options
);

//
int DrawTextEx(
  HDC hdc, // handle to DC
  LPTSTR lpchText,             // text to draw
  int cchText,                 // length of text to draw
  LPRECT lprc,                 // rectangle coordinates
  UINT dwDTFormat,             // formatting options
  LPDRAWTEXTPARAMS lpDTParams  // more formatting options );

  
PolyTextOut  
函数功能:该函数在指定设备环境下以当前所选的字体和正文颜色绘制多个字符串。
函数原型:BOOL PolyTextOut(HDC hdc, CONST POLYTEXT *pptxt, int cStrings);
TabbedTextOut  
函数功能:该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。
函数原型:;LONG TabbedTextOut(HDC hdc, int X, int Y, LPCTSTR lpString, int nCount, int nTabPositions, LPINT lpn TabStopPositions, int nTabOrigin);
 
 

经过分析拦截的输入文本发现,TextOut实际继续调用了ExtTextOut,因此最后只拦截了ExtTextOut就实现了程序要求。

《Windows API每日一练》16.1 简单的文本输出 3.第3个Tab开始的位置应为10+(8的倍数),即18、26、34、42或50等,但因8、18、26、34、42处要么被字符占用,要么被以前的两个Tab占用,所以第3个Tab从50开始,然后输出h字符。3.第3个Tab开始的位置应为8的倍数,即8、16、24、32或40等,但因8、16、24、32处要么被字符占用,要么被以前的两个Tab占用,所以第3个Tab从40开始,然后输出h字符。2.第2个Tab为16(2*字符宽度的8倍)的位置(即刻度16)处开始,由于字符数不够,得再补充6个空格字符。 阅读详情

相关推荐

三、C语言创建桌面程序:文字的输出 TextOut 和 DrawText

一、BeginPaint 和 EndPaint 函数 当发生 WM_PAINT事件时,应用程序开始绘图。绘图之前需要先调用 BeginPaint 函数通知 Windows,告诉它当前程序需要使用显示器,你安排一下吧。BeginPaint 函数执行完毕就返回设备环境句柄,接下来就可以使用 GDI函数绘图了。 绘图结束后,也需要调用 EndPaint 函数通知Windows,告诉它绘图结束了,你可以...

书香水墨 2970

Windows API——TextOut()函数学习

1.函数功能 The TextOut function writes a character string at the specified location, using the currently selected font, background color, and text color. TextOut函数使用当前选定的字体、背景颜色和文本颜色在指定位置写入字符串。 2.函数原型 ...

Small_SaltedFish的博客 1万+

MFC ExtTextOut函数学习

win32 api ExtTextOut 是扩展的文本输出函数;

bcbobo21cn的专栏 782

向窗口输出文字--TextOut和DrawText函数

在《一个完整的Windows程序框架》一节中,我们使用 DrawText() 向客户区的中间位置输出了一段文本,但并没有详细解释,这节我们来重点说一下文字的输出。 设备环境(DC) 在Windows中,一切能在显示器上看到的都是图形,不但包括点、线、矩形、圆等,也包括文字、字体。对用户来说文字和图片是不同的,但它们在本质上都是图形,都需要在显示器上画出来。这也是Windows被称作图形

芝麻软件工作室的专栏 3万+

掌握Windows API中的ExtTextOut函数:文本输出的灵活控制

ExtTextOut函数是Windows GDI(图形设备接口)中的一个重要文本输出函数,它是早期文本输出函数TextOut的扩展版本,提供了更多的功能。ExtTextOut的设计目的是为了提供更高效和灵活的文本渲染能力,特别是在处理大字体、特殊效果或需要精确文本布局的场合。在深入讨论ExtTextOut函数之前,了解其基本参数是至关重要的。函数原型如下:HDC hdc,int x,int y,hdc:设备上下文句柄,这是进行所有绘图操作的基础。x和y。

weixin_35516624的博客 793

演示ExtTextOut这个扩展文本输出函数(2KB)...

演示ExtTextOut这个扩展文本输出函数(2KB)

输出API函数总结

一、TextOut 函数原型: BOOL TextOut( HDC hdc, // 设备描述表句柄 int nXStart, // 字符串开始位置的x坐标 int nYStart, // 字符串开始位置的y坐标 LPCTSTR lpString, // 要输出的字符串 int cbString // 字

Sharing_Li的专栏 1552

Ubuntu安装ToDesk远程控制软件

前几天有同学问我怎么在 Ubuntu 系统上安装 ToDesk 远程控制软件, 帮他安装完成后就 顺手整理了一下安装过程,所以就顺手有了这篇在 Ubuntu 系统上安装 todesk 的文章。

小白的博客 8659

8.向窗口输出文字 : TextOut 和 DrawText 函数

使用 DrawText() 向客户区的中间位置输出了一段文本,说一下文字的输出。 设备环境(DC) 在Windows中,一切能在显示器上看到的都是图形,不但包括点、线、矩形、圆等,也包括文字、字体。对用户来说文字和图片是不同的,但它们在本质上都是图形,都需要在显示器上画出来。这也是Windows被称作图形操作系统的原因。 Windows不允许我们直接访问硬件,如键盘、显示器、打印机等,在与这些硬件...

y果子 6889

STM32CubeIDE离线安装芯片PACK包全攻略(附离线包下载与导入步骤)

本文详细介绍了在STM32CubeIDE中离线安装芯片PACK包的完整流程,包括官方和第三方资源获取方法、本地安装步骤及常见问题解决方案。特别针对网络隔离环境下的嵌入式开发需求,提供了实用的版本管理和自动化部署技巧,帮助开发者高效完成芯片固件支持包的离线配置。

weixin_30825581的博客 300

手把手教你用Simulink搭建BPSK调制解调系统(附完整参数设置与波形分析)

本文详细指导如何使用Simulink搭建BPSK调制解调系统,涵盖从理论到实践的全流程,包括参数设置、模块连接和波形分析。重点解析调制解调中的关键参数和常见问题,如带通滤波器设计、载波同步等,帮助读者快速掌握BPSK系统的实现与调试技巧。

weixin_27741699的博客 423

37.绘制文本DrawText、DrawTextEx、DRAWTEXTPARAMS 使用

DrawText 用设备环境中的字体选择、正文颜色和背景颜色来写正文。DrawText裁剪正文,不会出现在指定矩形的外面,除非指定了DT_NOCLIP。除非使用DT_SINGLELINE格式化,否则其余的格式都认为正文有多行。 WINUSERAPI int WINAPI DrawTextA( __in HDC hdc, //绘图设备上下文 __inout_ecount_opt(cc...

单于的学习历程 3213

离心泵级间导叶的设计计算

离心泵级间导叶的设计计算高速离心泵级间流道的作用是将第一级复合叶轮流出的高速液流收集起来并送入第二级复合叶轮。级间流道的设计应考虑降低液体的流速,实现动能向压力能转化,减小液体的水力损失。级间流道主要有蜗壳形流道和导叶两种结构形...

cqzc55322的博客 2566

WinAPI: DrawTextEx - 多功能文本绘制

//声明: DrawTextEx( DC: HDC; {设备句柄} lpchText: PChar; {文本} cchText: Integer; {要绘制的字符个数; -1 表示全部} var p4: TRect; {矩形结构} dwDTFormat: UINT; ...

weixin_34018202的博客 374

虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学

相信看这篇博客的人都知道CoppeliaSim是做什么的,因此这里不多赘述。CoppeliaSim从最早的Vrep到现在已经更新了N个版本,从过去Vrep3.x开始使用的我这里小小地吐槽一下这个软件。CoppeliaSim每一个版本都有更新,问题是这些更新有时候不能向前兼容,而且时不时更新地让人不知所措(对于有紧急任务的时候真的很火大啊)。 以本文所展示地逆运动学来说,CoppeliaSim在4.0.0之后又大变,推翻了过往所有的拖动模块链接之类的构建方式,转而采用直接通过代码来实现逆运动学。 简单版逆运动

qq_39243015的博客 6699

从零开始:如何用Python手绘波特图并分析电路稳定性

本文详细介绍了如何使用Python绘制波特图并分析电路稳定性,涵盖从基础理论到实际应用的完整流程。通过NumPy和Matplotlib实现频域分析,包括RC低通滤波器和RLC带通滤波器的案例,以及相位裕度计算等高级技巧,为电子工程师提供了一套高效的电路分析解决方案。

hhh00的博客 371

C语言API函数大全(转载)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/u010258235/article/details/45666851 收起 转载作者An_angel_of_joy的文章以供自学和参考,文章非常全,在此感谢如此有耐心的作者。 fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char

nanguol的博客 5360

三相SVPWM逆变器双闭环PI解耦控制:从dq坐标系到参数整定实战

本文深入解析了三相SVPWM逆变器的双闭环PI解耦控制技术。通过引入dq坐标系,将交流量转换为直流量,并结合前馈补偿实现电流环的解耦控制。文章详细阐述了从数学模型推导、控制器设计到参数整定与SVPWM实现的完整流程,为工程师提供了从理论到实战的系统性指导。

weixin_28292761的博客 403

wn32拦截ExtTextOut屏幕取词

通过拦截ExtTextOut这个API可以实现屏幕取词的部分功能

jfu22的专栏 7809

Multisim 14.0实战:从零搭建可调幅多波形信号发生器(附仿真文件)

本文详细介绍了如何在Multisim 14.0中从零搭建一个可调幅多波形信号发生器,涵盖方波、三角波和正弦波的生成原理与实现步骤。通过核心电路架构解析、关键参数设计及Multisim实战操作,帮助电子工程学习者和硬件工程师掌握信号发生器的设计与调试技巧,并提供仿真文件供实践验证。

nokia的博客 1073

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用DrawTextEx绘制多行文本

使用gidplus进行文本绘制时,大家经常需要把多行文本绘制在一个矩形框中,通常采用的绘制接口是DrawText和DrawTextEx。这个两个函数确实可以实现矩形框中的多行绘制,但是,它们都没有办法在一次绘制中定制文本行距。     为了实现文本多行绘制的同时,可以定制行距,可以采用DrawTextEx方法一行行的绘制文本,然后,调整行距。其中,DRAWTEXTPARAMS结构中的uiLeng

James的专栏 4982

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Win32 GDI TextOut与DrawText低效率深坑问题

Win32 GDI绘图需要优化的几个地方: 1、内存双缓冲:这个自行GG 2、仅可视区域:视图中不可见的区域是不要绘制 3、不要用DrawText:能用TextOut的地方就别用DrawText,这个函数效率极低,会导致CPU占用   CMFCToolBar::EnableTextLabels(TRUE) 这个函数是设置icon + text样式的,如果设置此样式,在低配电脑上最小化再...

Koma的主页 2892

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于在Windows 7中在桌面使用TextOut函数的一些问题

从Windows Vista开始,Aero Glass效果被应用在了Home Premium以上的系统中(Home Basic不具有该效果)。这种效果是由DWM(Desktop Window Manager)来控制的。对于一般的程序,缺省将在窗口边框应用这种效果。但如果我们想要更多的控制,比如让客户区的一部分也呈现这种效果,那也非常的简单。不需要我们在程序里做任何复杂的算法,我们只需要调API,交

coyote的专栏 961

windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode

windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode

单于的学习历程 1540

TextOutA函数与TextOutW函数

这仍然是在学习字符编码的时候引出来的。 原意是感觉字符编码既然这么普遍地存在,那么操作系统又是如何做的呢?所以想到要调试一下TextOutA函数,看看它输出文本的时候是怎样对付字符编码问题的。最后的结果是: TextOutA实际上是封装了一个另外的函数调用。TextOutA的流程大概是这个样子: BOOL TextOutA(   HDC hdc,           // handle to DC

jcwKyl的专栏 7996

windows编程------TextOut与TextOutw与TextOutA,基于vs2010

问题源于:计算机图形学实验,p218,《计算机图形学及实用编程技术》李春雨,北航出版社 按书上的代码输入编译失败 错误行如下: pDC->TextOut(rc.right/2-10,10,"X"); 错误类似于这个:  error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“char [8

Life is Float. 4940
上一篇: IIS7显示ASP的详细错误信息到浏览器
下一篇: 指纹识别基本原理
Reviter
博客等级 码龄14年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值