CDC::DrawText详解
函数原型
int DrawText(
HDC hDC, // 设备描述表句柄
LPCTSTR lpString, // 将要绘制的字符串
int nCount, // 字符串的长度
LPRECT lpRect, // 指向矩形结构RECT的指针
UINT uFormat // 正文的绘制选项
);
参数
hdc:
[输入]设备环境句柄。
lpString:
[输入]指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以/0结束的。 如果uFormat包含DT_MODIFYSTRING,则函数可为此字符串增加4个字符,存放字符串的缓冲区必须足够大,能容纳附加的字符。
nCount:
[输入]指向字符串中的字符数。如果nCount为-1,则lpString指向的字符串被认为是以/0结束的,DrawText会自动计算字符数。
lpRect:
[输入/输出]指向结构RECT的指针,其中包含文本将被置于其中的矩形的信息(按逻辑坐标)。
uFormat:
[输入]指定格式化文本的方法。它可以下列值的任意组合,各值描述如下:
值 | 说明 |
DT_BOTTOM | 将正文调整到矩形底部。此值必须和DT_SINGLELINE组合。 |
DT_CALCRECT | 决定矩形的宽和高。 如果正文有多行,DrawText使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳正文的最后一行。 如果正文只有一行,则DrawText改变矩形的右边界,以容纳下正文行的最后一个字符。 出现上述任何一种情况,DrawText返回格式化正文的高度,而不是绘制正文。 |
DT_CENTER | 使正文在矩形中水平居中。 |
DT_VCENTER | 使正文在矩形中垂直居中。 (DreamSmart注:此参数必须和DT_SINGLE连用,否则GDI无法计算目的矩形) |
DT_EDITCONTROL | 复制多行编辑控制的正文显示特性。 特殊地,为编辑控制的平均字符宽度是以同样的方法计算的,此函数不显示只是部分可见的最后一行。 |
DT_END_ELLIPSIS | 对于显示的文本,如果结束的字符串的范围不在矩形内,它会被截断并被附加到椭圆中。 如果一个字母不是在字符串的末尾处超出了矩形范围,它不会被椭圆截断。 字符串不会被修改,除非指定了DT_MODIFYSTRING标志。 |
DT_EXPANDTABS | 扩展制表符,每个制表符的缺省字符数是8。 DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS和DT_END_ELLIPSIS不能和此参数一起使用 |
DT_EXTERNALLEADING | 在行的高度里包含字体的外部标头,通常,外部标头不被包含在正文行的高度里。 |
DT_HIDEPREFIX | 忽略正文中的前缀字符(&),并且前缀字符后面的字母不会出现下划线。其它前缀字符的调用方式不受影响。 输入的字符串: "A&bc&&d" 正常: "Abc&d" DT_HIDEPREFIX: "Abc&d" |
DT_INTERNAL | 用系统字体来计算正文度量。 |
DT_LEFT | 正文左对齐。 |
DT_MODIFYSTRING | 修改给定的字符串来匹配显示的正文。 此标志必须和DT_END_ELLIPSIS 或 DT_PATH_ELLIPSIS同时使用。 |
DT_NOCLIP | 无裁剪绘制。当DT_NOCLIP使用时DrawText的使用会有所加快。 |
DT_NOFULLWIDTHCHARBREAK | 在宽字符的字符串中防止行断开,因此折行规则相当于单字符的字符串。 例如,我们可以用在棒子版的windows中,为图标标签提供更好的可读性。 除非指定DT_WORDBREAK,否则此值没有作用。 |
DT_NOPREFIX | 关闭前缀字符的处理。 通常DrawText解释助记前缀字符,&为给其后的字符加下划线,解释&&为显示单个&。指定DT_NOPREFIX,这种处理被关闭。 |
DT_PATH_ELLIPSIS | 对于显示的正文,替换字符串在椭圆中的字符,以确保结果能在合适的矩形内。 如果该字符串包含反斜杠(/)字符,DT_PATH_ELLIPSIS尽可能的保留最后一个反斜杠之后的正文。 字符串不会被修改,除非指定了DT_MODIFYSTRING标志。 |
DT_PREFIXONLY | 仅仅在(&)前缀字符的位置下绘制一个下划线。不绘制字符串中的任何其他字符。 输入的字符串: "A&bc&&d" 正常: "Abc&d" DT_PREFIXONLY:" _ " |
DT_RIGHT | 正文右对齐。 |
DT_RTLREADING | 当选择进设备环境的字体是希伯来文或阿拉伯文字体时,为双向正文安排从右到左的阅读顺序都是从左到右的。 |
DT_SINGLELINE | 显示正文的同一行,回车和换行符都不能折行。 |
DT_TABSTOP | 设置制表,参数uFormat的15"C8位(低位字中的高位字节)指定每个制表符的字符数,每个制表符的缺省字符数是8。 注意:DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, DT_NOPREFIX值不能和DT_TABSTOP值一起使用。 |
DT_TOP | 正文顶端对齐(仅对单行)。 |
DT_WORDBREAK | 断开字。当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间断开。一个回车一换行也能使行折断。 |
DT_WORD_ELLIPSIS | 截短不符合矩形的正文,并增加椭圆。 |
返回值
如果函数调用成功,返回值是正文的高度(逻辑单位)。如果指定了DT_VCENTER或DT_BOTTOM,返回值是lpRect->top到绘制的正文的底部的偏移值。
如果函数调用失败,返回值是0
Windows NT:若想获得更多错误信息,请调用GetLastError函数。
备注
函数DrawText用设备环境中的字体选择、正文颜色和背景颜色来写正文。DrawText裁剪正文,不会出现在指定矩形的外面,除非指定了DT_NOCLIP。除非使用DT_SINGLELINE格式化,否则其余的格式都认为正文有多行。
如果选择的字体对指定的矩形而言太大,DrawText不会试图去换成一种小字体。
DrawText支持纵和方向均为0的字体。
设备环境的正文对齐方式必须包括TA_LEFT, TA_TOP和TA_NOUPDATECP标志。
Windows CE:如果为参数uFormat指定DT_CALCRECT值,必须为lpRect指向的RECT结构设置right和bottom成员。Windows CE不支持uFormat为DT_EXTERNALLEADING。
CDC::DrawText详解的更多相关文章
- SQL Server 2008 CDC增量变更捕获详解
1 背景: 随着公司业务的成长,数据量也随之的不断增长.随之而来的问题是在做ETL的时候,时间花费也越来越长.为了节省时间开销,我们只想要更新最新的数据,不想要把公司历年所有的数据都进行处理.这种情况 ...
- VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC详解:
VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC详解: 首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备 ...
- VC++深入详解-第五章学习心得
这一章节主要讲解了文本相关的一些编程 插入符的使用 CreateSolidCaret(100,200);//插入符的宽度和高度 ShowCaret(); 插入符的一般使用方法 int CTestVie ...
- 孙鑫视频VC++深入详解学习笔记
孙鑫视频VC++深入详解学习笔记 VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Le ...
- linux查看端口及端口详解
今天现场查看了TCP端口的占用情况,如下图 红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...
- Android之canvas详解
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
- 【转】Android Canvas绘图详解(图文)
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...
- 转载爱哥自定义View系列--文字详解
FontMetrics FontMetrics意为字体测量,这么一说大家是不是瞬间感受到了这玩意的重要性?那这东西有什么用呢?我们通过源码追踪进去可以看到FontMetrics其实是Paint的一个内 ...
- 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析
第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...
随机推荐
- Day3-B-Round Marriage CodeForces-981F
It's marriage season in Ringland! Ringland has a form of a circle's boundary of length LL. There are ...
- Link Analysis_2_Application
US Cities Distribution Network 1.1 Task Description Nodes: Cities with attributes (1) location, (2) ...
- springboot常见注解 2020-01-19
1,@SpringBootApplication 是springboot的核心注解,用在启动类上,是由 @Configuration 加载spring,配置spring并启动spring容器; 启动容 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 图片:缩略图功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- tensorflow实现线性模型和sklearn的线性模型比较
自己用tensorflow实现了linear模型,但是和sklearn提供的模型效果相比,实验结果差了很多,所以尝试了修改优化算法,正则化,损失函数和归一化,记录尝试的所有过程和自己的实验心得. im ...
- POJ 3436:ACM Computer Factory 网络流
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6247 Accepted: 2 ...
- git 的那点东西,随心记
目前常用的项目版本管理,协同开发的工具有SVN和GIT,本次就记录一下GIT的基本使用. git下载地址:https://git-scm.com/downloads *根据自己的操作系统进行选择(这里 ...
- Oracle delete 之后恢复数据
当我们粗心大意直接delete from不加条件而又没有回滚的时候有一个很简单的方法能够将数据恢复到delete之前的状态 第一种方案已经帮助我解决了实际问题.第二种方案暂未实践 在此记录下以便日后查 ...
- Ubuntu 14.04 配置 VNC Server
用putty连接Linux后,如果会话断开,也会终止此会话在Linux执行的任务. 用WinSCP传输文件很方便,目前也只能传输文件. 按照以下步骤以及提示,安装VNC Server, 1.apt-g ...
- Delphi IDFtp用法,包含断点续传
1 连接远程服务器procedure Connect(AAutoLogin: boolean; const ATimeout: Integer);2 改变目录procedure ChangeDir ...