VC++ 获取Windows系统标准字体方法
获取系统字体常用方法如下:
LOGFONT lf = { 0 };
::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf);
但这种方法在xp、win7、win8下获取的都是宋体,我们期望的结果是在win7\8下返回微软雅黑,正确获取系统字体的方法下:
// WTL 获取标准字体方法:
CLogFont logFont;
logFont.SetMessageBoxFont();
// API 获取标准字体方法:
NONCLIENTMETRICS info;
info.cbSize = sizeof(NONCLIENTMETRICS);
if (SystemParametersInfo (SPI_GETNONCLIENTMETRICS, 0, &info, 0))
{
hSystemFont = CreateFontIndirect ((LOGFONT*)&info.lfMessageFont);
}
原理是获取消息窗口的字体,这个字体通常也是系统的标准字体。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步