gdi 编程c语言pdf,二、Windows编程GDI—TextOut细节

article/2025/10/4 17:35:16

TextOut是用于显示文字的最常用的GDI函数。语法是:

TextOut (hdc, x, y, psText, iLength) ;

以下将详细地讨论这个函数。

第一个参数是设备内容句柄,它既可以是GetDC的传回值,也可以是在处理WM_PAINT消息时BeginPaint的传回值。

设备内容的属性控制了被显示的字符串的特征。例如,设备内容中有一个属性指定文字颜色,内定颜色为黑色;内定设备内容还定义了白色的背景。在程序向显示器输出文字时,Windows使用这个背景色来填入字符周围的矩形空间(称为「字符框」)。

该文字背景色与定义窗口类别时设置的背景并不相同。窗口类别中的背景是一个画刷,它是一种纯色或者非纯色组成的画刷,Windows用它来擦除显示区域,它不是设备内容结构的一部分。在定义窗口类别结构时,大多数Windows应用程序使用WHITE_BRUSH,以便内定设备内容中的内定文字背景颜色与Windows用以擦除显示区域背景的画刷颜色相同。

psText参数是指向字符串的指针,iLength是字符串中字符的个数。如果psText指向Unicode字符串,则字符串中的字节数就是iLength值的两倍。字符串中不能包含任何ASCII控制字符(如回车、换行、制表或退格),Windows会将这些控制字符显示为实心块。Text0ut不识别作为字符串结束标志的内容为零的字节(对于Unicode,是一个短整数型态的0),而需要由nLength参数指明长度。

TextOut中的x和y定义显示区域内字符串的开始位置,x是水平位置,y是垂直位置。字符串中第一个字符的左上角位于坐标点(x,y)。在内定的设备内容中,原点(x和y均为0的点)是显示区域的左上角。如果在TextOut中将x和y设为0,则将从显示区域左上角开始输出字符串。

当您阅读GDI绘图函数(例如TextOut)的文件时,就会发现传递给函数的坐标常常被称为「逻辑坐标」。在第五章会详细地解释这种情况。现在请注意,Windows有许多「坐标映像方式」,它们用来控制GDI函数指定的逻辑坐标转换为显示器的实际图素坐标的方式。映像方式在设备内容中定义,内定映像方式是MM_TEXT(使用WINGDI.H中定义的标识符)。在MM_TEXT映像方式下,逻辑单位与实际单位相同,都是图素;x的值从左向右递增,y的值从上向下递增(参看图4-2)。MM_TEXT坐标系与Windows在PAINTSTRUCT结构中定义无效矩形时使用的坐标系相同,这为我们带来了很多方便(但是,其它映像方式并非如此)。

af8dbcbd5a40d9667569d5b4e7e84a5d.png

设备内容也定义了一个剪裁区域。您已经看到,对于从GetDC取得的设备内容句柄,内定剪裁区域是整个显示区域;而对于从BeginPaint取得的设备内容句柄,则为无效区域。Windows不会在剪裁区域之外的任何位置显示字符串。如果一个字符有一部分在剪裁区域外,则Windows将只显示此区域内的那部分。要想将输出写到窗口的显示区域之外不是那么容易的,所以不用担心会无意间出现这种事情。


http://chatgpt.dhexx.cn/article/cqVFdTcX.shtml

相关文章

中年人学C语言Windows程序设计,3 窗口中文本的输出TextOut

中年人学C语言Windows程序设计,3 文本的输出TextOut 函数功能 TextOut 函数使用当前选择的字体、背景颜色和文本颜色,将一个字符串绘制于窗口的指定位置。 API 函数原型: 注释:In 说明该参数是输入的,opt 说明该参…

c语言textout字体大小,《WINDOWS程序设计》第四章关于TEXTOUT的小问题

《WINDOWS程序设计》第四章关于TEXTOUT的小问题 文章原文是这样说的: 您会发现常常需要显示格式化的数字跟简单的字符串。我在第二章讲到过,您不能使惯用的工具(可 爱的printf 函数)来完成这项工作,但是可以使用sprintf 和Windows 版的sprint…

c语言textout字体大小,textout函数怎么用

MFC里 用pDC->TextOut 这个函数怎么实现未知数据输我最近刚开始学计算机图形学还是个纯小白…… 不大懂 想问各路大神。比如欢迎来到CSS布局HTML,TextOut 是用来输出文本的;你说的问题,我看了半天没看懂,你可以是想先格式化字符串再输出是吧,可以如下: 用CString格式化…

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.函数原型 BOOL TextOutA( …

35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor

TextOut和TabbedTextOut、ExtTextOut的区别 TextOut是简单文本输出,不带格式的,可以控制文本的对齐方式 TabbedTextOut是可以控制带\t(制表符号)的文本 ExtTextOut是在TextOut的基础上,增加字符间距、背景颜色和剪裁框…

windows编程之TextOut与DrawText -- 文本输出实验

文章目录 windows编程之TextOut与DrawText -- 文本输出实验实验名称实验目的实验要求实验源码思考题 windows编程之TextOut与DrawText – 文本输出实验 实验名称 实验3-2-文本输出实验 实验目的 1.掌握常用的文本输出函数TextOut、DrawText的使用,熟悉其…

Monkey的测试

1.Monkey介绍 顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲 通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的…

MonkeyTest——简单无脑的移动端自动化测试(初级篇)

MonkeyTest-操作步骤: 1.下载Android sdk X64位,必须和你的电脑操作系统一致。 2.安装完成后,增加adb的系统环境。 A.找到sdk路径。 默认路径:C:\Users\ZSD\AppData\Local\Android\android-sdk\platform-tools B.打开系统环境设置…

【转】指定页面进行Monkey测试

偶然在网上查看到这个技术,感兴趣,就记录下【感谢博主分享】 1.原文再此:https://blog.csdn.net/liyu520131414/article/details/69357777?utm_sourceblogxgwz3 原理原文博主已经讲清楚了,就不粘贴了,下面&#xff…

Android测试-Monkey Test

APP开发过程中,开人员往往自己做一些功能测试和稳定性测试,使用MonkeyTest做压力测试是常用方法,及时修复ANR、CRASH提高项目组整体的开发效率。 一、Monkey简介 Monkey是一种命令行工具,这个工具存在于Android系统/system/frame…

Monkey测试(一)

简介常见参数日志分析简单脚本编写 一:简介 Monkey测试是Android平台自动化测试的一种手段, 通过Monkey程序模拟用户触摸屏幕、滑动,Trackball(轨迹球)、按键等操作来对设备上的程序进行压力测试, 检测程序…

App之Monkey测试

作为初入测试行业的小白,了解一些Monkey测试是很有必要的,在此小编整理了一些App方面Monkey测试的基础以及Monkey脚本的编写,希望可以帮助到大家。 1. Monkey的概念 Monkey测试又称"猴子测试",是指没有测试经验的人对产品进行乱点…

随机测试 Monkey Test

今天说一说随机测试,Monkey Test。翻译成中文就是猴子测试。 你可以想象一只猴子趴在电脑面前,拿着鼠标随便乱点的样子。 一,什么是随机测试? 软件测试中的Monkey测试是测试人员对应用程序随机输入以验证其功能的一种方法。这是…

墨者学院-Bash漏洞分析溯源

Bash漏洞分析溯源 难易程度:★★ 题目类型:命令执行 使用工具:FireFox浏览器、wwwscan 1.打开靶场,根据题目思路找poc.cgi。 2.使用wwwscan扫一下 发现有目录/cgi-bin 3.打开burpsuite,访问/cgi-bin/poc.cgi,截包。 send to repeater&…

vulhub漏洞复现之bash(Shellshock CVE-2014-6271)

Shellshock 破壳漏洞 CVE-2014-6271 1.漏洞概述: GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命…

linux网站漏洞修复,CentOS Bash漏洞终极修复方法

目前已确认被成功利用的软件及系统:所有安装GNU bash 版本小于或者等于4.3的Linux操作系统。 【Bash漏洞描述】该漏洞源于你调用的bash shell之前创建的特殊的环境变量,这些变量可以包含代码,同时会被bash执行。 【漏洞检测方法】 在服务器命…

Bash漏洞分析溯源 cgi文件 (CVE-2014-6271) --墨者学院

01 背景介绍 Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令,在一些cgi脚本中,数据是通过环境变量来传递的,这样就会形成该漏洞; bash通过以函数名作为环境变量名,以“(){…

suse linux bash漏洞,bash漏洞: CVE-2014-6271漏洞及紧急修复方法

最近linux的bash漏洞闹得沸沸扬扬,问题还是挺严重的,我这里提醒大家一下早日修复吧! 如何验证 $ env x() { :;}; echo vulnerable bash -c echo hello 在终端中运行上面的命令,如果返回有vulnerable,就说明这台服务器中…

suse linux bash漏洞,Suse11 sp3 下Bash漏洞升级修复

SuSE Linux Enterprise Server 11Bash 漏洞修复方案 系统:Suse-11-sp3-64 Bash:bash-4.4 1.1. Bash升级 1.1.1升级概述 大部分现行Linux操作系统自带的版本比较陈旧,因此需要升级bash版本。 发现现在版本存在漏洞 1.1.2 安装介质 bash-4.4.tar.gz(官网最…

墨者Bash漏洞分析溯源题解

这个漏洞是看别人的思路解出来的,因为在打开页面后,我扫描不出来其他东西,惭愧 后台存在一个地址,是http://219.153.49.228:49581/cgi-bin/poc.cgi 访问这个地址 对着地址进行抓包 将user-agent进行修改,修改为() { …