CreateFont函数为什么改变不了字体?该怎么解决

Posted 人最大的荣耀不在于从未失败,而在于每次失败以后都能东山再起

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CreateFont函数为什么改变不了字体?该怎么解决相关的知识,希望对你有一定的参考价值。

CreateFont函数为什么改变不了字体?
CFont ? * ? f; ??
? ? ? ? ? f ? = ? new ? CFont; ??
? ? ? ? ? f-> CreateFont(30, ? // ? nHeight ??
? ? ? ? ? 0, ? // ? nWidth ??
? ? ? ? ? 0, ? // ? nEscapement ??
? ? ? ? ? 0, ? // ? nOrientation ??
? ? ? ? ? FW_BOLD, ? // ? nWeight ??
? ? ? ? ? FALSE, ? // ? bItalic ??
? ? ? ? ? FALSE, ? // ? bUnderline ??
? ? ? ? ? 0, ? // ? cStrikeOut ??
? ? ? ? ? ANSI_CHARSET, ? // ? nCharSet ??
? ? ? ? ? OUT_DEFAULT_PRECIS, ? // ? nOutPrecision ??
? ? ? ? ? CLIP_DEFAULT_PRECIS, ? // ? nClipPrecision ??
? ? ? ? ? DEFAULT_QUALITY, ? // ? nQuality ??
? ? ? ? ? DEFAULT_PITCH ? | ? FF_SWISS, ? // ? nPitchAndFamily ??
? ? ? ? ? _T( "Arial ")); ? // ? lpszFac ??
? ? ? ? ? GetDlgItem(IDC_STATIC1)-> SetFont(f);?

为什么我把_T( "Arial ")); ? ,改为"宋体""楷体""黑体""隶书",都没有任何的变化呢?应该如何改变字体呢?

[解决方法]

?

不一定要定义成类变量:?

CFont * f;?
f = new CFont; //
你的程序,内存泄漏了,就这句?
f-> CreateFont(...);?
GetDlgItem(IDC_STATIC1)-> SetFont(f);?
f.Detch();?
?//
加上这句,让CFont与字体句柄(HFONT)分离,因为句柄已被GetDlgItem(IDC_STATIC1)使用了,要防止CFont析构HFONT?
delete f; //
加上这句,解决内存泄漏?

?

?

以上是关于CreateFont函数为什么改变不了字体?该怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

如何使用C语言改变字体大小,好像有一个setfront()的函数!但是好像不能用!

Windows CreateFont:创立本人的字体

c语言中windows 调用api实现字体颜色,字体,以及动画

使用CFont类来改变CStatic的字体

Delphi如何改变字体颜色?

java swing 通过UIManager怎么能动态改变字体?