如何使用GetThemeFont读取字体数据?

我正在尝试使用GetThemeFont从视觉样式中读取字体数据,但我似乎无法让它返回任何内容。这是我如何使用它:
IntPtr h = OpenThemeData(this.Handle, "Button");
LOGFONT font = new LOGFONT();
int r = GetThemeFont(h, IntPtr.Zero, 1, 1, 210, out font);
CloseThemeData(h);
返回值始终为“-2147023728”,字体始终为null。我放210的地方(对于TMT_FONT),我不确定在那里使用什么。任何有关这方面的帮助将非常感激。     
已邀请:
-2147023728是0x80070490L的十进制等值,它是分配给
E_PROP_ID_UNSUPPORTED
的值。来自GetThemeFont文档的“备注”部分:   如果不支持该属性   指定的部分和状态,   可以返回E_PROP_ID_UNSUPPORTED。 您传入的部件和状态组合不支持该属性。     
请参阅此要点https://gist.github.com/1219126 你永远不会得到任何超过null或不支持的结果。此外,如果您尝试在托管应用程序中使用它,使用TMT_FONT(210)将丢弃一个很好的内存错误并清除堆栈(谁知道是什么原因)。 VisualStyleRenderer.GetFont和/或GetThemeFont的内部存在固有的缺陷。我正在尝试与MS的一些人合作解决这个问题,并提供一个解决方法,更多文档或一些确认这是破坏。     

要回复问题请先登录注册