CString字符串在编辑框中让对齐
等宽字体,比如Courier New字体,用SetFont设置。
控制台的字体是等宽的, 用等宽字体就跟控制台一样了
MFC中改变控件字体
在对话框的初始化函数中添加下段代码
1 static CFont Sfont; 2 static CFont Bfont; 3 //CFont font;//不加static 貌似改变不了字体大小 4 Sfont.CreatePointFont(200,"隶书"); 5 Bfont.CreatePointFont(150,"宋体"); 6 GetDlgItem(IDC_STATIC)->SetFont(&Sfont); 7 GetDlgItem(IDC_BUTTON1)->SetFont(&Bfont);
字体大小对照换算表
pt 磅或点数,是point简称 1磅=0.03527厘米=1/72英寸
inch 英寸,1英寸=2.54厘米=96像素(分辨率为96dpi)
px 像素,pixel的简称(本表参照显示器96dbi显示进行换算。像素不能出现小数点,一般是取小显示)
我需要创建一个指定像素高度的字体,应该用CreatePointFont还是CreateFont呢??
事实证明要用 CreateFont 更合适。
因为我用 CreatePointFont 创建完毕后,在使用时获取到得字高和我设置的是不一致的。
当然,也可能是我对 CreatePointFont 的用法了解的不够透彻。
不管怎么说吧 ,还是 CreateFont 更简单直白一些。
CreateFont
该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。 使用完毕需要DeleteObiect 。
函数原型:
HFONT CreateFont(
int nHeight, // logical height of font
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
);
参数:
cHeight是字体的高度。
cWidth是字体的宽度。
cEscapement是字体的倾斜角。
cOrientation是字体的倾斜角。
cWeight是字体的粗细。
bItalic是字体是否斜体。
bUnderline是字体是否有下划线。
bStrikeOut是字体是否有删除线。
iCharSet是字体使用的字符集。
iOutPrecision是指定如何选择合适的字体。
iClipPrecision是用来确定裁剪的精度。
iQuality是怎么样跟选择的字体相符合。
iPitchAndFamily是间距标志和属性标志。
pszFaceName是字体的名称。
例子:
CFont font;
font.CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // 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")); // lpszFacename
// Do something with the font just created...
CClientDC dc(this);
CFont* def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
CreatePointFont
这个函数提供了一种简单的方法来创建指定字体类型和字体大小 。
函数原型:
BOOL CreatePointFont(
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL
);
参数:
nPointSize
请求的字体的大小 。单位是磅的10倍 。
磅和像素的关系:
国外字体的大小一般是用磅表示,也就是PointSize的单位,1英寸=72磅, (Microsoft WORD 中指定字体的大小就是磅单位的)
在实际应用中我们通常使用逻辑点,即象素点数目作为尺寸创建字体,比如用函数CreateFont。或者像 LOGFONT中lfHeight和lfWidth,
一般显示器上72磅的字在显示器上高度lfHeight是96个象素点,你输入参数100,表示需要10磅的字体,系统找到最匹配的大约就是10几个象素点的字体(96*10/72)。
lpszFaceName
一个CSTring或者一个指向null-terminated(以空为结尾的)字符串指针来标注字体名称。长度不得超过30个字母。函数EnumFontFamilies可列举能够使用的字体。如果lpszFaceName是NULL,那么GDI uses a device-independent typeface.
pDC
指向CDC对象的指针,用来将字体大小转化为逻辑单位,如果是NULL,那么就根据屏幕当前的上下文(context)来转化
返回值
非零为成功,否则失败
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix