【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只会更改对话框的字体,并不会修改设置好的字形和大小

相关推荐
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小小龙学IT5 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研6 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
C++ 老炮儿的技术栈8 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qz_Serene10 小时前
C++:类和对象(上)
开发语言·c++
郝学胜-神的一滴11 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
hetao173383711 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
间歇性努力持续性发呆的野生快乐选手14 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
旖旎夜光14 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
hansang_IR15 小时前
【题解】P14468 [COCI 2025/2026 #1] 和谐 / Harmonija(线段树 DDP 版本)
c++·算法·动态dp