无窗口控件是一个对象,它为您提供控件的行为,而不需要您创建窗口。
当您想要修改或扩展行为时,或者当您想要在创建窗口会很尴尬或困难的地方使用该行为时,这非常有用。
例如,您想在页面上嵌入数百个丰富的编辑控件,如果它们都是窗口,那么每个控件都必须获得焦点才能获得用户输入,并且每个控件都将单独绘制,等等。
但是,如果您愿意跟踪无窗口控件的位置,并执行一些通常通过创建窗口免费获得的其他内务处理(即路由键盘消息),那么您可以通过使用无窗控制。
Anon是的。它是一个不需要底层窗口句柄的控件 (
HWND
)。对于这些的需求尤其是在 Web 浏览器中出现,因为每个进程的最大句柄数限制为 10,000 个。您会打开两个半复杂网页选项卡,然后就会用完句柄。
使用,尤其是滚动自己的无窗口控件是很难,因为至少你需要重新创建它们原来的、有时非常复杂和棘手的实现。 (例如:IE 的列表框仍然是窗口控件,因为所有棘手的复杂性)
这可能会有所帮助。
无窗口控件没有专用的窗口句柄。
在我看来,无窗口控件可能会使用更少的系统资源,并且更容易定制