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);
}
 
原理是获取消息窗口的字体,这个字体通常也是系统的标准字体。
posted @ 2013-10-10 14:53  爱好奇  阅读(2117)  评论(1编辑  收藏  举报