我希望我的应用程序中的所有控件(编辑,列表控件等)具有相同的字体,而不是系统默认的字体。 我该怎么做呢? 有没有设置应用程序默认字体的任何Win32 API?
如何确定安装字体的O / S文件名?
为什么不FONTSIGNATURE反映lfCharSet?
Qt字体在不同的系统上有不同的大小
如何在Windows中获取所有等宽字体?
QFontDatabase :: addApplicationFont在embedded式Linux中工作,但不在Linux Ubuntu中工作
Windows不提供任何应用程序范围的字体的机制。 每个窗口类可能有其自己的行为来选择默认使用的字体。 它可以尝试选择Windows外壳对话框使用的字体,或者可以使用自动选择到新DC中的可怕位图“系统”字体来绘制文本。
Windows公共控制窗口类都响应WM_SETFONT ,这是标准的窗口消息,用于告诉窗口你希望使用哪种字体。 当你实现你自己的窗口类(尤其是新的子控件窗口类)时,你还应该为WM_SETFONT编写一个处理程序:
如果你的窗口类有任何子窗口,你的WM_SETFONT处理程序应该将消息转发给它们中的每一个。
如果您的窗口类进行任何自定义绘图,请确保将您收到的HFONT保存在您的WM_SETFONT处理程序中,并将其选择到绘制窗口时使用的DC中。
如果您的窗口类用作顶层窗口,则需要逻辑来选择自己的字体,因为它没有父窗口发送WM_SETFONT消息。
请注意,对话管理器为你做了一些这样的事情; 当实例化对话框模板时,新对话框的字体被设置为在模板中命名的字体,并且对话框发送WM_SETFONT所有子控件。
实现这个:
bool CALLBACK SetFont(HWND child,LParaM font){ SendMessage(child,WM_SETFONT,font,true); return true; }
EnumChildWindows(hwnd,(WNDENUMPROC)SetFont,(LParaM)GetStockObject(DEFAULT_GUI_FONT));
只要你想,例如在WM_CREATE消息,你已经创建了所有的子窗口后!
我的win32 GUI应用程序解决方案中总是有一个SetFont.cpp和一个SetFont.h 。
是的你可以 !
HFONT defaultFont; defaultFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); SendMessage(handlerControl,WParaM (defaultFont),TRUE); // Send this to each control
SendMessagetoDescendants( WM_SETFONT,(WParaM)m_fntDialogFont.GetSafeHandle(),0 );
你不能,在同一时间没有办法为所有的控制。 您需要通过资源编辑器来设置它,或者在每个控件上手动调用SetFont()。
您可以通过资源视图为每个对话框设置字体。 右键单击一个对话框(不在其他控件上),选择属性和字体选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。