【MFC】对话框属性:Use System Font(使用系统字体)


前言

本文介绍对话框属性中的Use System Font(使用系统字体),同时给出相关示例便于理解。


目录

  • [1 位置](#1 位置)
  • [2 详解](#2 详解)
  • [3 示例](#3 示例)

1 位置

首先介绍一下这个属性在哪里。

  1. 在资源视图中双击对话框节点,打开该对话框;
  2. 鼠标右键工作区空白处,单击属性
  3. 此时在属性对话框中就可以看到该属性了;

2 详解

  • 属性名: 使用系统字体 (Use System Font)

  • 详解: 使用系统字体可以确保你的应用程序对话框与当前操作系统上所有其他系统对话框(如"打开文件"对话框)和使用系统字体的应用程序保持一致的视觉风格。

  • 作用

    1. 决定了对话框及其上所有控件使用的默认字体。
    2. 确保视觉一致性和现代化。
    3. 正确计算对话框单位 (Dialog Units - DLUs):MFC 对话框布局(控件的位置 x, y 和尺寸 cx, cy)并非直接使用像素 (pixels),而是使用一种与字体相关的相对单位------对话框单位。(使用 DLU 布局可以确保当对话框字体改变(例如从 96 DPI 切换到 120 DPI,或在不同语言下)时,控件能自动按比例缩放,保持原有的布局比例,避免文字显示不全或控件重叠。)
    4. 简化多语言本地化:使用系统字体并依赖 DLU 进行布局,使得你在翻译对话框文本后,只需简单地调整一下控件的大小和位置(依然用 DLU),就能适应新的文本长度,而不需要为每种语言完全重新设计布局。
    5. 更好的高DPI(缩放)支持:在高DPI显示设置下(如 150%),Windows 会进行缩放。如果使用系统字体,系统会选择适合该缩放比例的字体大小,并且基于此字体计算出的 DLU 也能正确缩放,从而保证整个对话框布局清晰、合理。使用固定字体很可能在高DPI下导致布局错乱和文字模糊。
  • 语法格式

    • True:使用(没有具体要求时,优先考虑)
    • False:不使用
      MS Shell Dlg
  • 其实这并不是一种特殊的字体,而是一种字体映射,指向当前系统的字体。

  • 将对话框字体设置为MS Shell Dlg后,对话框的字体为当前系统的默认字体。

  • 在中文版Windows 10操作系统中,MS Shell Dlg默认映射为Microsoft Sans Serif字体。

3 示例

  • 新创建的对话框一般默认为True,此时使用系统字体;

  • 修改字体为隶书、字形修改为粗偏斜体、大小修改为18,此时使用系统字体
    属性会自动变更为False

  • 此时直接设置使用系统字体属性为True只会更改对话框的字体,并不会修改设置好的字形和大小

相关推荐
fqbqrr19 小时前
2606C++,C++构的多态
开发语言·c++
小欣加油19 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
Yolo_TvT20 小时前
C++:析构函数
c++
Hello:CodeWorld1 天前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
搬砖魁首1 天前
基础能力系列 - 多线程2 - 条件变量
c++·rust·条件变量·原子类型·线程同步互斥
chase_my_dream1 天前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
牛油果子哥q1 天前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
凡人叶枫1 天前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
不想写代码的星星1 天前
std::move 根本不移动,就像老婆饼里没有老婆
c++
redaijufeng1 天前
C++雾中风景7:闭包
c++·算法·风景