【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++ shared_ptr与unique_ptr总结
c++
不知所云,17 分钟前
4. vscode c++ 环境及工程搭建 clangd + mingw
c++·ide·vscode·开发环境·clangd
kyle~20 分钟前
数据结构---堆(Heap)
服务器·开发语言·数据结构·c++
apocelipes20 分钟前
Linux的binfmt_misc机制
linux·c语言·c++·python·golang·linux编程·开发工具和环境
渡我白衣21 分钟前
哈希的暴力美学——std::unordered_map 的底层风暴、扩容黑盒与哈希冲突终极博弈
java·c语言·c++·人工智能·深度学习·算法·哈希算法
qq_4335545433 分钟前
C++ 最大子段和(动态规划)
开发语言·c++·动态规划
lijiatu1008634 分钟前
[C++] lock_guard、unique_lock与条件变量wait()函数
开发语言·c++
2509_9408802235 分钟前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
_F_y1 小时前
二分:山脉数组的峰顶索引、寻找峰值、寻找旋转排序数组中的最小值、点名
c++·算法
Elias不吃糖1 小时前
克隆图(LeetCode 133)——用数组做映射的 DFS 解法
c++·算法·leetcode·深度优先