C++ Winapi:获取字体信息

C++ Winapi:获取字体信息,c++,winapi,fonts,controls,C++,Winapi,Fonts,Controls,所以我用winapi做了一个应用程序,我有一些静态控件,我没有设置任何字体。当我看到这些静态控件中的文本看起来如何时,我决定winapi控件的默认字体很好,并且没有为它们设置任何其他带有WM_SETFONT消息的字体。作为一个没有经验的程序员,我没有想到其他用户可以在他们的系统中为控件设置完全不同的默认字体,例如,取决于他们设置的语言环境。当我把我的应用程序交给我的一些朋友测试时,我注意到他们在静态控件中有完全不同的字体,我没有接触到WM_SETFONT消息。结论似乎很清楚:我必须自己为这些控件

所以我用winapi做了一个应用程序,我有一些静态控件,我没有设置任何字体。当我看到这些静态控件中的文本看起来如何时,我决定winapi控件的默认字体很好,并且没有为它们设置任何其他带有WM_SETFONT消息的字体。作为一个没有经验的程序员,我没有想到其他用户可以在他们的系统中为控件设置完全不同的默认字体,例如,取决于他们设置的语言环境。当我把我的应用程序交给我的一些朋友测试时,我注意到他们在静态控件中有完全不同的字体,我没有接触到WM_SETFONT消息。结论似乎很清楚:我必须自己为这些控件设置这个好看的字体。问题是,我不知道那是什么字体。我不想测试我系统中的每一种字体,看它是否匹配,所以我想知道是否有办法在创建控件时了解控件的默认字体设置。我听说过WM_GETFONT消息,但它只返回要在我的应用程序中使用的字体句柄,而我要查找的是有关字体的特定信息,所以我可以自己用WM_SETFONT设置它。
也就是说,有没有办法知道为刚刚使用CreateWindow/CreateWindowEx函数创建的窗口和控件设置的字体默认参数是什么,因此,我可以使用这些信息,使用这些参数选择/创建字体,并为自己的控件设置它。

不同的Windows版本使用不同的默认字体。如果您不喜欢默认字体,那么编写代码来找出默认字体是什么,然后更改它是没有意义的。马上做出选择。如果你不知道该选什么,用户会根据个人喜好选择字体。不要忽视这一点。简单地使用他们选择的东西。对话框资源维度使用基于所用字体的DLU(对话框逻辑单元)。如果为具有不同默认字体的用户显示对话框,它将自动调整,以考虑不同的字体度量。是的,但我想的是如何检查系统中为新控件设置的默认字体的详细信息。不管怎样,我只是找到并实现了另一种字体,它看起来也很不错。要获得有关在带有
SPI\u GETNONCLIENTMETRICS
参数的对话框调用中使用的默认字体的详细信息。在其他人的系统上,选择另一种“看起来相当不错”的字体可能不太合适。