1. if( flags == DT_RIGHT )
  2. {
  3. SIZE Size = {,};
  4. TEXTMETRICW temp;
  5. if (font->GetTextMetricsW(&temp) == S_OK)
  6. {
  7. Size.cx = temp.tmMaxCharWidth;
  8. Size.cy = temp.tmDigitizedAspectY
  9. x -= Size.cx;
  10. }
  11. flags = ;
  12. } else if( flags == DT_CENTER )
  13. {
  14. SIZE Size = {,};
  15. TEXTMETRICW temp;
  16. if (font->GetTextMetricsW(&temp) == S_OK)
  17. {
  18. x -= (Size.cx/);
  19. }
  20. flags = ;
  21. }

gTEXTMETRIC { // tm 
    LONG tmHeight;                  //字符高度
    LONG tmAscent;                  //字符上部高度(基线以上)
    LONG tmDescent;                 //字符下部高度(基线以下)
    LONG tmInternalLeading;         //由tmHeight定义的字符高度的顶部空间数目
    LONG tmExternalLeading;         //加在两行之间的空间数目
    LONG tmAveCharWidth;            //平均字符宽度
    LONG tmMaxCharWidth;            //最宽字符的宽度
    LONG tmWeight;                  //字体的粗细轻重程度
    LONG tmOverhang;                //加入某些拼接字体上的附加高度
    LONG tmDigitizedAspectX;        //字体设计所针对的设备水平方向
    LONG tmDigitizedAspectY;        //字体设计所针对的设备垂直方向
    BCHAR tmFirstChar;              //为字体定义的第一个字符
    BCHAR tmLastChar;               //为字体定义的最后一个字符
    BCHAR tmDefaultChar;            //字体中所没有字符的替代字符
    BCHAR tmBreakChar;              //用于拆字的字符
    BYTE tmItalic;                  //字体为斜体时非零
    BYTE tmUnderlined;              //字体为下划线时非零
    BYTE tmStruckOut;               //字体被删去时非零
    BYTE tmPitchAndFamily;          //字体间距(低4位)和族(高4位)
    BYTE tmCharSet;                 //字体的字符集
} TEXTMETRIC;

TEXTMETRICW 结构记录的更多相关文章

  1. vue的项目结构记录

    vue的项目结构 不知道大家有没这样的情况,面对刚配置好的脚手架,创建的文件不知道该放哪个文件下,导致后面开发一些文件不好找,不利于维护. 接下来我说说我项目中的一些文件: 首先是components ...

  2. MATLAB中的结构数组

    MATLAB中的结构数组 结构数组: 结构是包含一组记录的数据类型,而记录则是存储在相应的字段中.结构的字段可以是任意一种MATLAB数据类型的变量或者对象.结构类型的变量也可以是一维的.二维的或多维 ...

  3. redis list结构

    一个功能肯定有其应用场景: PUSH和POP操作,其实是队列的基本操作.Redis的list就是一个极其强大的队列系统.我们在哪些地方会用到队列呢?下面,我们说两个例子: a,评论系统 逛过微博的筒子 ...

  4. MySQ-表关系-外键-修改表结构-复制表-03

    目录 前言 不合理的表结构(案例) 带来的问题 如何解决问题? 如何确定表关系? 表关系 一对多 多对多 一对一 应用场景 判断表关系最简单的语法 三种关系常见案例 如何建立表关系? 外键 forei ...

  5. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  6. FAT32 FAT区__FAT表解析

    一. FAT 表概述 位置: 紧跟在文件系统的“保留区”之后 : 有两个数据结构完全相同的FAT(FAT,File Allocation Tbale 文件分配表)组成. 作用: FAT表项,描述文件系 ...

  7. 高效率去掉js数组中重复项

    Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: function unique(arr) { var result = [], isRepeated; for (v ...

  8. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  9. Linux获取当前用户信息函数

    转自:http://net.pku.edu.cn/~yhf/linux_c/function/07.html endgrent(关闭组文件) 相关函数 getgrent,setgrent 表头文件 # ...

随机推荐

  1. Hibernate 零散知识点

    1 get方法和load方法查询时的区别: 如果在缓存中没有找到相应的对象,get会直接访问数据库并返回一个完全初始化的对象,过程中可能涉及多次数据库调用:而load会返回一个代理对象,只有在对象ge ...

  2. C# AtomicBoolean

    using System; using System.Threading; /// <summary> /// Provides lock-free atomic read/write u ...

  3. orm 小结

     1. 销售注册,登录系统  - 用户表  2.销售添加客户信息,成为销售的私户  - 客户表    3. 销售固定时间跟进客户  - 跟进记录表 4. 客户报名  - 报名记录表  - 班级表(必须 ...

  4. Selenium2+python自动化75-非input文件上传(SendKeys)

    前言 不少小伙伴问非input标签如何上传文档,这个本身就是一坑,无奈很多小伙伴非要跳坑里去,那就介绍一个非主流的上传文件方法吧,用第三方库SendKeys. 只支持python2环境 python3 ...

  5. JS修改属性,六种数据类型

    JS修改属性 一般修改单个属性是通过JS修改的,比较方便.改多个属性通过css样式改更方便. 1.特殊:通过JS修改包含"-"符号的属性,例如margin-top // 特殊 修改 ...

  6. Flutter,最好的跨平台开发框架

    今天说说使用flutter的一些体会 对于Flutter,从发现到接触再到使用,不知不觉,已经有大半年了!在这段时间里,谷歌几乎每天都会更新Flutter,有时甚至一天更新几次,这让我对它更加充满信心 ...

  7. uva579-简单计算题

    题意: 求分钟和时钟之间的夹角 解法:俩个夹角互减 AC:10ms #include<iostream> #include<functional> #include<qu ...

  8. 《GPU高性能编程CUDA实战》第九章 原子性

    ▶ 本章介绍了原子操作,给出了基于原子操作的直方图计算的例子. ● 章节代码 #include <stdio.h> #include "cuda_runtime.h" ...

  9. Requests库入门

    安装: $ pip install requests Response对象的一些基本属性: Response.status_code 请求的返回状态,正常为200 Response.text 页面的字 ...

  10. Mysql 游标使用

    BEGIN #shopsId 商家ID #accountDay 10位日期 -- 定义一个或者多个 变量来接收 游标查询的列值 DECLARE receiptContentId INT; -- 遍历数 ...