为什么WM_GETFONT不起作用?

时间:2017-03-04 21:10:27

标签: delphi winapi delphi-xe2

Delphi XE2。

对于TForm我做:

hFont := SendMessage(Self.Handle, WM_GETFONT, 0, 0);

但它返回0.也就是说,好像表单有一个系统字体。那是为什么?

如果我这样做,例如,像这样:

hFont := SendMessage(CheckBox1.Handle, WM_GETFONT, 0, 0);

返回正确的描述符。

同样的事情,例如,对于TPanel - hFont = 0.对于TButton,hFont具有正确的值。

1 个答案:

答案 0 :(得分:1)

https://devblogs.microsoft.com/oldnewthing/20140724-00/?p=413

WM_SETFONT 和 WM_GETFONT 消息不是强制性的。一个窗口可以选择支持它们,也可以选择不支持,甚至可以选择支持一个而不支持另一个。 (虽然如果它支持 WM_SETFONT,它可能应该支持 WM_GETFONT。)