VC怎么能获取系统字体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC怎么能获取系统字体相关的知识,希望对你有一定的参考价值。

通过GetStockObject函数可以取得系统字体。
The GetStockObject function retrieves a handle to one of the stock pens, brushes, fonts, or palettes.

HGDIOBJ GetStockObject(
int fnObject // stock object type
);
其中fnObject可以是以下字体:

ANSI_FIXED_FONT Windows fixed-pitch (monospace) system font.
ANSI_VAR_FONT Windows variable-pitch (proportional space) system font.
DEVICE_DEFAULT_FONT Windows NT/2000/XP: Device-dependent font.
DEFAULT_GUI_FONT Default font for user interface objects such as menus and dialog boxes. This is MS Sans Serif. Compare this with SYSTEM_FONT.
OEM_FIXED_FONT Original equipment manufacturer (OEM) dependent fixed-pitch (monospace) font.
SYSTEM_FONT System font. By default, the system uses the system font to draw menus, dialog box controls, and text.
Windows 95/98 and Windows NT: The system font is MS Sans Serif.

Windows 2000/XP: The system font is Tahoma

SYSTEM_FIXED_FONT Fixed-pitch (monospace) system font. This stock object is provided only for compatibility with 16-bit Windows versions earlier than 3.0.

参考资料:MSDN

参考技术A 你说的系统字体指的是窗口视默认使用的字体的话,可以用以下方法获得:
在View类里
CFont *f= this->GetFont();
f就是当前窗口视默认使用的字体对象指针
参考技术B VC 获取已系统安装的字体
BOOL CALLBACK EnumFonts(CONST LOGFONT* lplf, CONST TEXTMETRIC *lptm,DWORD dwType,LPARAM lparam)

CString tempFontName(lplf->lfFaceName);
CString temp=gSysFontNames;
if(tempFontName.Find("@")!=-1)
return true;
//可对tempFontName自行附加过滤条件
//
gSysFontNames.Format("%s,%s",temp,tempFontName);
//
return true;

void CDialogTest:OnButton1()

AfxMessageBox(GetSystemFontName((LPVOID)this);

CString CDialogTest::GetSysFontName(LPVOID lp)

gSysFontNames="";
try

CPaintDC dc((CWnd*)lp);
::EnumFonts(dc.m_hDC,NULL,(FONTENUMPROC)EnumFonts,0);
return gSysFontNames.Mid(1);

catch(...)

return "";

请问如何获得中文字体的英文名?VC

请问如何获得中文字体的英文名?这两者是用什么方法一一对应起来的?比如宋体,对应的英文字体(FaceName)名称为SimSun使用 EnumFontFamiliesEx英文系统上获得的当然是英文名但中文系统上如何获得宋体字体的英文名SimSun?英文系统上如何将“宋体”(FaceName)转换成英文名SimSun?谢谢

字体注册到系统的时候,就会把名字根据系统类型写到注册表里了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts 枚举字体的时候,字体名无非是从注册表里读取而已。 参考技术A 使用Font Creator Program 4.1打开想要查看的字体文件,点击菜单里的格式→命名,里面的“包括完整字体名称”就是了

以上是关于VC怎么能获取系统字体的主要内容,如果未能解决你的问题,请参考以下文章

请问如何获得中文字体的英文名?VC

VC 如何获取一个控件内的字体

NGUI中怎么获取Android系统字体使用

C#winform 如何获取当前系统所使用的默认字体

华为手机app字体不随系统

VC/MFC怎么改变状态栏字体颜色和大小