首页 > 其他分享 >MFC文本设置字体发虚的问题

MFC文本设置字体发虚的问题

时间:2024-04-29 16:02:44浏览次数:27  
标签:MFC FW 发虚 指定 font 字体 DWORD 文本 CHARSET

MFC 文本设置字体发虚的问题

最近在做一项目中,发现默认的字体比较正常,字体如下:

字体比较清晰,在代码加入如下设置字体项后,反而显示发虚,模糊

CFont * m_font= new CFont;

m_font->CreatePointFont(120,_T("Arial"));

GetDlgItem(IDC_EDIT_CONTENT)->SetFont(m_font);

可能是需要某些特别设置,现改用CreateFont创建并应用字体,感觉有所改善,代码为

CFont * m_font= new CFont;

m_font->CreateFont(16,0,0,0,0,0,0,0,GB2312_CHARSET,0,0,0,0,_T("Arial"));

GetDlgItem(IDC_EDIT_CONTENT)->SetFont(m_font);

其中CreateFont函数说明如下:

HFONT CreateFont(

int nHeight, // logical height of font height

int nWidth, // logical average character width

int nEscapement, // angle of escapement

int nOrientation, // base-line orientation angle

int fnWeight, // font weight

DWORD fdwItalic, // italic attribute flag

DWORD fdwUnderline, // underline attribute flag

DWORD fdwStrikeOut, // strikeout attribute flag

DWORD fdwCharSet, // character set identifier

DWORD fdwOutputPrecision, // output precision

DWORD fdwClipPrecision, // clipping precision

DWORD fdwQuality, // output quality

DWORD fdwPitchAndFamily, // pitch and family

LPCTSTR lpszFace // pointer to typeface name string

);

CreateFont 参数说明:

1、nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以如下方式解释nHeight指定的值,各值含义为:
>0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。
0:字体映射器转换在选择匹配时用一个缺省的高度值。
<0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。
比较所有的高度,字体映射器选择不超过要求大小的最大字体。
此映射当字体第一次被使用时发生。
对于MM_TEXT映射方式,可以用下面的公式为一种指定了点大小的字体确定高度:
nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)
2、nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。
3、nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。
Windows NT:当图形设备设置为GM_ADVANCED时,可以不依赖字符串的字符的定位角而指定字符串的移位角。
当图形模式被设置为GM_COMPATIBLE时,nEscapement同时指定移位角和定位角,可以设置nEscapement和nOrientation为相同的值。
Windows 95:nEscapement同时指定移位角和定位角,可设置nEscapement和nOrientation为相同的值。
4、nOrientation:指定每个字符的基线和设备X轴之间的角度。
5、FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。
FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;
FW_NORMAL:400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;FW_BOLD:700;FW_EXTRABOLD;800;FW_BLACK;900。
6、fdwItalic:如果设置为TRUE,则字体设置为斜体。
7、fdwUnderline:如果设置为TRUE,则字体增加下划线。
8、fdwStrikeOut:如果设置为TRUE,则字体增加删除线。
9、fdwCharSet:指定字符集,下列值是预定义的:
ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;
EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;
SYMBOL_CHARSET; TURKISH_CHARSET。
韩国Windows:JOHAB_CHARSET;
中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET
泰国Windows:THAI_CHARSET
OEM_CHARSET指定的字符集与操作系统有关。
可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。

标签:MFC,FW,发虚,指定,font,字体,DWORD,文本,CHARSET
From: https://www.cnblogs.com/djcsch2001/p/18165933

相关文章

  • 右键新建txt文本文档不见了
    右键菜单中缺失“新建文本文档”的选项,可以通过调整注册表的方法找回该功能:1、"WIN+R"快捷键,弹出“运行”窗口,输入“regedit"回车,打开注册表编辑器; 2、在“HKEY_CLASSES_ROOT”找“ShellNew”的项,如果找到,在“ShellNew”下创建一个新的字符串值,名为“NullFile”,并将其设置为......
  • JMeter响应文本输出为文档
      背景:当我们做压测时,需要模拟多用户访问操作,提前需要通过登录接口,批量生成TOKEN。在压测时,经常会遇到类似上面的这种情况,我们需要把接口响应的内容,输出到文件中,那么本文,就是来解决这个问题; 1、第一步,需要先准备好用户数据,比如登录用户需要的手机号,需要为txt文档,或者CSV(逗......
  • windows系统,大文本文件打开工具
    在Windows系统中,打开大文本文件的工具有多种选择。以下是一些推荐的软件:LogView:这是一款能够快速打开大文件的工具,对于300MB以上的文件,它基本上能在一分钟内打开。虽然打开大文件时可能会占用较多的内存,但它的处理速度相对较快,使得它成为处理大文本文件的理想选择。EditPlus:Edi......
  • 【转】[WPF] 复制文本到剪贴板
    来自:阿里的通义灵码以下是几种常见的复制数据类型到剪切板的方法:复制文本到剪切板usingSystem.Windows.Forms;//对于WindowsForms应用//或者usingSystem.Windows;//对于WPF应用publicvoidCopyTextToClipboard(stringtext){//确保在UI线程中操作剪切板......
  • Excel文本转公式
    FunctionEval(RefAsString)Application.VolatileEval=Evaluate(Ref)EndFunctionSUBSTITUTE函数在Excel中用于将文本字符串中的一部分替换为其他字符串。它的语法如下:SUBSTITUTE(text,old_text,new_text,[instance_num])其中:text是要进行替换操作的原......
  • 辅助式文本生成 - 文本生成新范式
    辅助式文本生成-文本生成新范式 辅助式文本生成-文本生成新范式引言现有方法vanilla自投机解码SpecInferLADE总结参考文献引言LLM要跨越从早期采用者到大众市场的鸿沟,其必要条件是价格大众化,也就是降低每词元的价格。这种降低最好是“免费”......
  • 【vue3入门】-【2】文本插值
    文本插值最基本的数据绑定形式是文本插值,它使用的是”Mustache“语法(即双大括号)<script>exportdefault{data(){return{msg:"神奇的语法"}}}//以上为文本插值的固定使用格式</script><template><h3>模版语法</h3><p>{{msg}}</p></templ......
  • vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器
    vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器一、浏览目录和文件查看目录、查看文件属性1)查看根目录/下有哪些文档或子目录,观察颜色有什么规律ls/2)以长格式显示结果,对比/bin、/usr/bin/目录详细属性ls-ld/bin/usr/bin/【-d只显示目录本身】3)......
  • linu管理文本文件
    vi\vim编辑器的三种工作模式命令模式(Commandmode):按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。输入模式(Insertmode):也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。底线命令模式(Lastlinemode):以:开始,通常用于文件......
  • Unity性能优化——字符串和文本
    字符串和文本字符串和文本的处理不当是Unity项目中性能问题的常见原因。在C#中,所有字符串均不可变。对字符串的任何操作均会导致分配一个完整的新字符串。这种操作的代价相对比较高,而且在大型字符串上、大型数据集上或紧凑循环中执行时,接连不断的重复的字符串可能发展成性能......