- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试获取其他应用程序中按钮的字体。
当我尝试 WM_GETFONT
时,它返回 0。这是我的代码:
[DllImport("User32.DLL")] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
IntPtr fx = SendMessage(button1.Handle, 0x31, 0, 0);
我知道问题的原因,它是由于 FlatStyle 属性
查看此链接
http://www.siao2.com/2008/09/26/8965526.aspx
我该如何解决这个问题?
我在 Windows 7 下使用 C#。
最佳答案
您获得该值是因为您正在检查的控件使用默认系统字体。
如果未明确指定自定义字体,则这些值正是你应该期待。
如果使用默认系统字体绘制控件文本,WM_GETFONT
消息将始终返回 0(或 NULL)。根据documentation :
The return value is a handle to the font used by the control, or NULL if the control is using the system font.
同样适用于 GetTextFace
函数。在这种情况下,相关 WM_SETFONT
message 的文档提供了一些清晰的见解:如果 wParam
值为 NULL,控件将使用默认系统字体来绘制其文本。
显然您没有更改字体,或者至少 Windows 认为您没有更改。您提到您正在尝试获取其他 应用程序的字体——您如何更改用于在另一个应用程序的控件上绘制文本的字体?
如果您更改默认系统字体,上述行为仍然适用,无论您在屏幕上看到的是否不同。
如果您正在发送 WM_SETFONT
消息,您可能忘记告诉控件它应该重绘自己。同样,从上面链接的文档中提取:
lParam
The low-order word of lParam specifies whether the control should be redrawn immediately upon setting the font. If this parameter is TRUE, the control redraws itself.
关于c# - 将 WM_GETFONT 与标准平面样式一起使用时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569723/
我正在尝试获取其他应用程序中按钮的字体。 当我尝试 WM_GETFONT 时,它返回 0。这是我的代码: [DllImport("User32.DLL")] public static extern
HFONT childfont = SendMessage (childwin, WM_GETFONT, NULL, NULL); 导致错误“从‘LRESULT’到‘HFONT__*’的无效转换”当M
我是一名优秀的程序员,十分优秀!