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()的函数!但是好像不能用!