WPF不使用Windows(pl.)作为控件的含义是什么?

WPF不使用Windows(pl.)作为控件的含义是什么?,wpf,windows,winapi,visual-c++,hwnd,Wpf,Windows,Winapi,Visual C++,Hwnd,在经典的Windowstm应用程序中,显示的每个控件(按钮、列表框、菜单等)都有自己的窗口(如HWND) 此外,对于Windows窗体(WinForms),虽然控件不再使用经典窗口类,但每个控件仍有自己的窗口(HWND) 但是,通过WPF创建的窗口(复数)不会对其控件使用单独的窗口(pl)。WPF对话框上的按钮不是单独的窗口(HWND) 问题: 这对我们(作为开发人员)使用WPF窗口加上它的控件与“经典”对话框窗口(每个控件都有自己的HWND),甚至是众所周知的窗口类(Button,#32770

在经典的Windowstm应用程序中,显示的每个控件(按钮、列表框、菜单等)都有自己的窗口(如
HWND

此外,对于Windows窗体(WinForms),虽然控件不再使用经典窗口类,但每个控件仍有自己的窗口(
HWND

但是,通过WPF创建的窗口(复数)不会对其控件使用单独的窗口(pl)。WPF对话框上的按钮不是单独的窗口(
HWND

问题:
这对我们(作为开发人员)使用WPF窗口加上它的控件与“经典”对话框窗口(每个控件都有自己的
HWND
),甚至是众所周知的窗口类(
Button
#32770(dialog)
,…)会有什么影响?

这不是新的。在ActiveX时代,无窗口控件很流行,VB6对其进行了大量的介绍。浏览器使用它们。Winforms也有,ToolStripItem类是无窗口的。像Telerik这样的组件供应商专门从事这方面的工作。明显的优势在于能够更快地渲染、填充缺少的功能、更好地支持自定义样式和平台独立性


后果是显而易见的。用户界面往往老化得更快,因为它不能适应不断变化的操作系统外观。通常被引用为优势。当自定义用户界面的行为与本机用户界面的行为不同时,往往会出现一些小故障。WPF确实有一些。而UI自动化则更为困难,尽管WPF中有System.Windows.Automation名称空间进行了很好的介绍。

“UI往往老化得更快,因为它无法适应不断变化的操作系统外观和感觉”。。。我想知道这是否与无窗有关。WinForms控件在使用HWND时,似乎有单独的类,因此它们不一定会从任何操作系统修正中受益,或者它们会受益吗?您能澄清一下“补齐缺失的功能”是什么意思吗?谢谢。哦,顺便说一句,对于任何想知道的人来说:一个没有窗口的控件可以自己进行渲染,所以根据定义,它的外观和感觉在时间上是冻结的。从VB6应用程序中很明显,你可以从一百英尺外认出一个。Winforms控件类是围绕本机Windows控件的托管包装,TextBox仍然是1985年以来的编辑控件。但看起来不像1985年。WPF做得很好的一个缺失特性是透明度。