文本输出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

路径规划:D*Lite寻路算法详解

D*Lite详解目录

mkr67n的博客 2万+

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

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

y果子 6889

手把手教你在全新服务器内网安装OpenEuler 22.03 LTS SP4+ 安装 openGuass 5.0.0(LTS) 数据库

openEuler是面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的开源服务器Linux操作系统。

cgqyw的专栏 3736

博流BL602开发二 环境搭建与固件烧录实战

本文详细介绍了博流BL602 RISC-V芯片开发环境的搭建与固件烧录全流程。从Linux/WSL系统选择、RISC-V工具链配置、SDK获取,到编译首个Wi-Fi示例并生成固件镜像,再到通过命令行或图形化工具完成烧录及串口测试,提供了完整的实战指南和常见问题解决方案。

weixin_29175469的博客 451

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

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

单于的学习历程 3213

远程桌面连接失败?手把手教你解决CredSSP加密Oracle漏洞(Win10/Win11通用)

本文详细解析了Windows远程桌面连接因CredSSP加密Oracle漏洞安全更新导致的“身份验证错误”问题。文章从原理入手,提供了通过组策略编辑器(适用于专业版)和注册表编辑器(适用于家庭版)两种核心解决方案,指导用户将安全策略调整为推荐的“缓解”模式,以在保障安全的前提下恢复连接,并给出了高级脚本处理与安全最佳实践。

u6v7w8x的博客 724

WinAPI: DrawTextEx - 多功能文本绘制

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

weixin_34018202的博客 374

基于Simulink的永磁同步电机三闭环(位置/速度/电流)伺服仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环伺服控制系统的设计与实现,针对机器人关节控制场景。系统采用位置环(外环)、速度环(中环)和电流环(内环)的嵌套结构,通过精确的带宽匹配(电流环1kHz、速度环200Hz、位置环20Hz)实现亚微米级位置跟踪。文中提供了完整的Simulink建模步骤,包括主电路搭建、三环PI控制器实现及坐标变换模块,并验证了系统性能:阶跃响应时间35ms,位置误差<0.05°,正弦跟踪误差<0.15°,负载突加恢复时间0.08s。最后提出了参数自适应整定、前馈

amy_mhd的博客 279

【虚幻引擎UE】UE5 阴影异常与优化

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

灵境引路人 3万+

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

十九、帧间预测编码_5、skip模式和direct模式

帧间预测的几种特殊模式: P_Skip: 即COPY模式,在该模式下无运动矢量残差,无像素预测残差。重建时以MVP作为实际运动矢量,以预测像素块作为重建; B_Skip:同P_Skip类似的是该模式下同样无运动矢量残差,无像素预测残差。重建时,以Direct模式获取双向MV,以预测像素块作为重建; B_Direct:B_Direct模式分为B_Direct_8x8和B_Direct_16x16,分别表示整个宏块和一个子块按照B_Direct模式编码。该模式下,无运动矢量残差,有像素预测残差。重建时,以D.

叮咚的博客 2384

wn32拦截ExtTextOut屏幕取词

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

jfu22的专栏 7809

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用DrawTextEx绘制多行文本

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

James的专栏 4982

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

Koma的主页 2892

关于在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、付费专栏及课程。

余额充值