我正在使用纯Win32 API(RegisterClass和CreateWindow函数)创建窗口。如何为窗口指定字体而不是系统定义的字体?
答案 0 :(得分:14)
当您创建自己的窗口类时,您自己负责管理字体。此任务将包含四个部分:
答案 1 :(得分:9)
生动说,只需使用CreateFont()/CreateFontIndirect:
HFONT hFont = CreateFont (13, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, TEXT("Tahoma"));
然后使用WM_SETFONT消息为您的窗口/控件设置此字体:
SendMessage(window, WM_SETFONT, hFont, TRUE);
答案 2 :(得分:6)
如果您对已经拥有自己的字体句柄的标准公共控件进行超类,请使用以下方法:使用CreateFont
或CreateFontIndirect
创建字体并使用WM_SETFONT
消息进行设置(在MFC和ATL中会有相应的SetFont
函数。当不再需要该字体时,使用DeleteObject
销毁字体。请务必不要破坏窗口以前设置的字体。
如果您正在编写自定义控件,只需使用CreateFont
或CreateFontIndirect
创建一个新的字体对象,并将其存储在您的类中。如果您想支持第三方用户,请处理WM_SETFONT
和WM_GETFONT
以允许用户设置其他字体。绘画时,使用存储在班级中的当前字体对象。