【问题标题】:Integrate custom control into Windows message processing system将自定义控件集成到 Windows 消息处理系统中
【发布时间】:2021-02-08 22:44:58
【问题描述】:

这个问题是关于 Windows 消息系统内部的。 我们都知道,在最低级别上,所有控件都接收来自 Windows 系统的消息。每个应用程序都有自己的消息循环来处理它们。 我没有找到关于内部的任何好的描述,但我猜想windows有一堆控件,例如当用户点击一个窗口时,操作系统会遍历所有控件以检查点击完成时鼠标所在的区域。特定窗口接收消息。

所以我有两个问题

窗户总是矩形的吗?我的意思是我可以绘制一个自定义控件(圆形按钮)并告诉操作系统消息传递子系统检查鼠标单击该圆形形状。

窗口是否有合法的 API 接口来将自定义控件添加到它的子系统中?

我知道所有的窗口都是通过 CreateWindow API 函数创建的。这个函数需要一个类名。这意味着 Windows 操作系统有一个预定义类列表。是否可以添加新课程?

有一些 GUI 库使用自定义控件(例如,用于音乐 VST 插件),但它们实现了检查鼠标是否在其区域内被自己按下。 将它移到操作系统区域会很好,因为我们知道 Windows 消息传递系统速度很快,因为它以更高的优先级运行。 谢谢

【问题讨论】:

    标签: windows api user-interface createwindow


    【解决方案1】:

    窗户总是矩形的吗?

    没有。您可以拨打SetWindowRgn。

    窗口是否有合法的 API 接口来将自定义控件添加到它的子系统中?

    当然,您可以使用RegisterClassEx 注册您的自定义窗口类。

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 2011-06-18
      • 2014-10-05
      • 2013-07-19
      • 2018-02-25
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多