转载地址:http://blog.csdn.net/beyond_cn/article/details/37531085

在使用Visual Studio 6.0(Visual C++ 6.0)开发的过程中,对话框中的控件在资源编辑器中的尺寸和其实际的像素尺寸之间的对应问题非常的令人烦恼。特别是在要求对话框控件大小随屏幕分辨率或程序窗口大小变化而变化时就更加令人挠头。
  
  原因就在于,资源编辑器中的单位(DLU)与屏幕像素之间的对应关系随着对话框字体种类和大小的变化而变化。(1)在水平方向1 DLU == 1/4 字体平均宽度;(2)在垂直方向1 DLU == 1/8 字体平均高度。这一对应关系由于所使用字体的多变而难以确定。在绝大多数情况下,通过上面公式所计算的DLU甚至不会是整数像素。
  
  为了在资源编辑器编辑的过程中就比较好的把握做出来的控件在屏幕上的像素尺寸,根据(1),思路:在对话框资源编辑器中应该采用等宽字体;根据(2),思路:最好采用所谓“系统”字体,这样字体高度也是固定的。
  
  验证一下:在对话框资源编辑器中打开“Dialog Properties”,单击“Font...”按钮,为对话框选择字体。考察“FixedSys”和“System”两种,首先,从网上搜索得知,它们是等宽字体;其次,这两种字体只有一种尺寸大小“12”,这说明字体高度是固定的。
  
  实地测试一下,在VC对话框工程中,将对话框的字体改为“FixedSys”或“System”,字号大小改为“12(即小四)”,并在对话框中创建一个100*100 DLU的按钮。在按钮单击响应函数里,用GetWindowRect()或GetClientRect()取得按钮尺寸。设置断点调试观察结果:按钮的像素尺寸是200*200!这表明对话框资源编辑器中的1 DLU现在等于2 Pixels。这样对于我们的设计就方便很多了。 
  
  如果屏幕分辨率改变了,结果如何呢?在不同的显示器上进行测试,结果都一样,仍然是1 DLU == 2 Pixels。
  
  还有没有别的字体有这样的效果呢?“Terminal”字体也可以,选择字号为12,测试结果也是水平方向/垂直方向1 DLU == 2 Pixels。不过有个毛病:选择了该字体的对话框在资源编辑器里看起来怪怪的,水平方向1 DLU和垂直方向1 DLU的长度不同,好像被压扁了一样。但程序运行起来则没问题。另外,选择不同的“Terminal”字体大小,则对应关系也会改变。
  
  到这里,索性对其他几种常用的字体也测试了一下,发现Verdana和宋体效果比较好(虽然对于英文来说这两种都不是等宽字体。而对于汉字,一般使用的汉字字体都是等宽的,方块字嘛)。下面是测试结果(仍然用100*100的按钮来测试):
  
  字体 / 字号 / 水平尺寸 / 垂直尺寸
  
  Verdana / 8 / 175 / 163
  
   / 9 / 200 / 175
  
   / 10 / 200 / 200
  
   / 11 / 225 / 225
  
   / 12 / 250 / 225
  
  宋体 / 8 / 150 / 138
  
   / 9 / 150 / 150
  
   / 10 / 175 / 163
  
   / 11 / 200 / 188
  
   / 12 / 200 / 200
  
  结论1:如果对FixedSys和System字体的效果不满意,选用12号宋体/10号Verdana是比较好的
  

  结论2:虽然只能使用若干种有限的字体,但能给编程带来一些方便,还是值得的(相比字体效果的损失)

转自:http://hi.baidu.com/wuweihua_0115/item/7bb3c23baad61405ceb9feed

0

VC资源编辑器里对话框的大小和实际的像素尺寸显示问题相关推荐

  1. VC++创建个性的对话框之MFC篇(转)

    VC++创建个性的对话框之MFC篇(转) 本文涉及以下几个问题: 1. 修改对话框的背景颜色  2. 用位图作为对话框的背景  3. 改变静态控件文字和背景颜色  4. 改变编辑框文字和背景颜色  5 ...

  2. VC++程序设计与应用--对话框

    目录 前言 一.对话框 1.1 对话框概述 1.1.1  对话框的类型 1.1.2  对话框的CDialog类 1.1.3  对话框的组成 1.2 模态对话框 1.2.1 设计对话框模板资源 1.2. ...

  3. windows下的两个免费资源编辑器

    虽然最新的Windows Server 2003 R2 Platform SDK已经带上了MFC和ATL,我们现在也可以不做任何小动作来使用MS Visual C++ Express(下称VCEX)做 ...

  4. SAP ABAP编辑器里的Code Completion(代码自动完成)的等待时间设置

    SAP ABAP编辑器里的Code Completion(代码自动完成)的等待时间设置:如果嫌默认的一秒等待时间太长,可以点图1右下角的图标,打开设置对话框,把1秒改成0.1秒即可.如果想研究ABAP ...

  5. 在VC资源文件中加入声音资源

    本文介绍如何在VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音. 1.首先用文本编辑器(如记事本)打开资源文件(.rc文件) 在最后加入自己的声音资源,如下IDW WAVE " ...

  6. 在VC 6.0里Win32 Application和Win32 console Application的区别

    我们用Visual C++在创建工程的时候有Win32 Application和Win32 console Application,下面我们就了解下他们的区别. 在VC 6.0里Win32 Appli ...

  7. 无边框对话框改变大小

    [转载]无边框对话框改变大小2008-07-11 07:13 P.M.实现效果需要处理以下这三个消息: WM_NCHITTEST WM_SETCURSOR WM_NCLBUTTONDOWN 消息处理函 ...

  8. Eclipse Java类编辑器里出现乱码的解决方案

    如图:在Java Class编辑器里出现的这种乱码,非常烦人. 解决方案:Windows->Preference->General->Appearance, 在里面将Theme设置成 ...

  9. php怎样实现表格自动缩放字体,php实现在限定区域里自动调整字体大小的类实例,字体大小实例_PHP教程...

    php实现在限定区域里自动调整字体大小的类实例,字体大小实例 本文实例讲述了php实现在限定区域里自动调整字体大小的类.分享给大家供大家参考.具体如下: 这里的php类imagefittext.cla ...

  10. 【Qt教程】2.3 - Qt5 控件 - 按钮组(QPushButton、QToolButton、QRadioButton、QCheckBox)资源编辑器导入资源

    上一讲介绍UI设计器的使用,下面来详细介绍下其他控件 - 按键组. 图标下载网站:easyicon.Iconfont. GitHub示例工程代码仓库:Qt例程 1. 普通按键(QPushButton. ...

最新文章

  1. 按字段顺序加载或解析JSON对象
  2. 看到关于java资料比较全的,自己收藏
  3. 程序员的10个神秘等式
  4. org.json.JSONException: Value of type java.lang.String cannot be converted to JSONArra
  5. Oracle在Linux上的预配置
  6. OPencv_边缘检测算法
  7. jdbcdbcpc3p0
  8. [渝粤教育] 重庆工程职业技术学院 Linux服务器配置与管理 参考 资料
  9. Go语言实战 (William,Kennedy 等著)
  10. jsweet-examples下载测试
  11. python txt转Excel
  12. 怎么在WINDOWS中运行C语言程序,在Windows下运行C语言程序
  13. tpadmin的坑收集 nginx下配置tp5失败
  14. 自然语言处理——基于预训练模型的方法——第4章 自然语言处理中的神经网络基础
  15. 斐讯K2刷华硕固件+全套工具
  16. java 什么时候使用内部类
  17. 【学习笔记】C++面向对象高级开发-侯捷
  18. Tomcat7集群共享Session 基于redis进行统一管理
  19. FTP文件传输协议与部署,包括Linux系统、Windows系统和H3C路由交换设备部署
  20. 最完美的公式——欧拉公式

热门文章

  1. Python中文字符串,变成英文字符串
  2. 单片机自学入门必看基础知识
  3. 如何从chrome获取你需要的缓存视频
  4. 开源 | 写了个微博去广告、屏蔽拉黑插件
  5. iOS UI 自动化测试原理以及在 Trip.com 的应用实践
  6. codeforces1299C Water Balance
  7. Word 尾部空格添加下划线
  8. 飞跃微信小程序一一新风口新模式,你所了解到的小程序有多少?
  9. ffmpeg转换进度计算公式
  10. 【Unity】天气特效:打雷下雨