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具有正确的值。
答案 0 :(得分:1)
https://devblogs.microsoft.com/oldnewthing/20140724-00/?p=413
WM_SETFONT 和 WM_GETFONT 消息不是强制性的。一个窗口可以选择支持它们,也可以选择不支持,甚至可以选择支持一个而不支持另一个。 (虽然如果它支持 WM_SETFONT,它可能应该支持 WM_GETFONT。)