文本输出API函数:TextOut,ExtTextOut,DrawText,DrawTextEx,PolyTextOut,TabbedTextOut
前阵子由于做一个软件需要用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 );
函数功能:该函数在指定设备环境下以当前所选的字体和正文颜色绘制多个字符串。
函数原型:BOOL PolyTextOut(HDC hdc, CONST POLYTEXT *pptxt, int cStrings);
函数功能:该函数将一个字符串写到指定的位置,并按制表位位置数组里的值展开制表符。正文以当前选择的字体、背景色和字体写入。
函数原型:;LONG TabbedTextOut(HDC hdc, int X, int Y, LPCTSTR lpString, int nCount, int nTabPositions, LPINT lpn TabStopPositions, int nTabOrigin);
经过分析拦截的输入文本发现,TextOut实际继续调用了ExtTextOut,因此最后只拦截了ExtTextOut就实现了程序要求。
文本输出API函数:TextOut,ExtTextOut,DrawText,DrawTextEx,PolyTextOut,TabbedTextOut相关推荐
- 8.向窗口输出文字 : TextOut 和 DrawText 函数
使用 DrawText() 向客户区的中间位置输出了一段文本,说一下文字的输出. 设备环境(DC) 在Windows中,一切能在显示器上看到的都是图形,不但包括点.线.矩形.圆等,也包括文字.字体.对 ...
- MFC字体与文本输出
字体 成员函数 1.CFont( ); 构造一个CFont对象.此对象在使用之前应该先使用CreateFont.CreateFontIndirect.CreatePointFont或CreatePoi ...
- windows编程之TextOut与DrawText -- 文本输出实验
文章目录 windows编程之TextOut与DrawText -- 文本输出实验 实验名称 实验目的 实验要求 实验源码 思考题 windows编程之TextOut与DrawText – 文本输出实 ...
- 向窗口输出文字--TextOut和DrawText函数
在< 一个完整的Windows程序框架 >一节中,我们使用 DrawText() 向客户区的中间位置输出了一段文本,但并没有详细解释,这节我们来重点说一下文字的输出. 设备环境(DC) 在 ...
- 常用 API 函数(5): 文本和字体函数
AddFontResource 在Windows系统中添加一种字体资源 CreateFont 用指定的属性创建一种逻辑字体 CreateFontIndirect 用指定的属性创建一种逻辑字体 Crea ...
- 三、C语言创建桌面程序:文字的输出 TextOut 和 DrawText
一.BeginPaint 和 EndPaint 函数 当发生 WM_PAINT事件时,应用程序开始绘图.绘图之前需要先调用 BeginPaint 函数通知 Windows,告诉它当前程序需要使用显示器 ...
- MFC 和Windows API的TextOut输出文字
void CTest1Dlg::OnButton1() { // TODO: Add your control notification handler code here /* //MFC ...
- Windows API函数大全
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同 ...
- API函数的中文说明及所有的32位WindowsAPI函数的定义
API函数的中文说明及所有的32位WindowsAPI函数的定义 ============================API函数的中文说明============================= ...
最新文章
- 中国程序员超 5000 万?北上广等一线城市 IT 岗位已开始饱和过剩?
- 如何利用数据仓库优化数据分析?
- Log4j使用及配置
- Valgrind使用说明
- Web前端开发css基础样式总结
- GenericFactoryMethod泛型工厂模式实现简单IOC功能
- ICLR 2019 | 基于复杂空间关系旋转的知识表示方法
- 06-基本查询-进阶一
- 在java中使用solrj对solr进行CRUD
- ARM32/ARM64函数调用规则
- Silverlight开源项目与第三方控件收集
- SQL Server 2016 bak文件还原
- 点滴记录笔记_持续更新
- 传输层 可靠传输 连续ARQ协议和滑动窗口协议
- COMSOL数据导入的案例
- JS中的this是什么,this的四种用法
- 提问的艺术,原文链接
- STC12C5A60S2自带A/D转换器的使用
- 如何破解已签名JAR包
- linux twm 窗口调节,CENTOS5.1怎样在命令行模式下改变X窗口启动的方式(TWM)