【发布时间】:2011-01-08 21:40:54
【问题描述】:
【问题讨论】:
-
我的第一个想法是“不需要窗口句柄”。
【问题讨论】:
This 可能会有所帮助。
【讨论】:
无窗口控件是一种无需创建窗口即可为您提供控件行为的对象。
当您想要修改或扩展行为时,或者想要在创建窗口不方便或困难的地方使用行为时,这很有用。
比如说,你想在一个页面上嵌入数百个富编辑控件,如果它们是每个窗口,那么每个都必须获得焦点才能获得用户输入,并且每个都将单独绘制,等等。
但是,如果您愿意跟踪无窗口控件的位置并进行一些通常可以通过创建窗口免费获得的其他内务管理(即路由键盘消息),那么您可以以更低的开销获得更好的结果通过使用无窗口控件。
【讨论】:
无窗口控件没有专用的窗口句柄。
【讨论】:
Anon's 对。这是一个不需要底层窗口句柄 (HWND) 的控件。对这些的需求尤其出现在 Web 浏览器中,因为每个进程最多只能处理 10,000 个句柄。您会像打开两个半复杂网页的选项卡一样打开,并且会用完句柄。
使用并且尤其是滚动您自己的无窗口控件很难,因为至少您需要重新创建它们的原始实现,有时非常复杂和棘手。 (例如:IE's listbox is still windowed control because of all the tricky intricacies)
【讨论】:
在我看来,无窗口控件可能会使用更少的 sys 资源,并且更容易自定义
【讨论】: