Wpf 本机Windows控件是否仍在.NET GUI中使用?
当您使用WinForms或WPF创建GUI时显示的内容是否仍然基于本机控件(如或其中任何控件),或者显示的所有内容是否都是由框架绘制的“自定义” 注意:我不是在说文件对话框之类的东西,而是用WinForms或WPF实现的GUIWpf 本机Windows控件是否仍在.NET GUI中使用?,wpf,windows,winforms,winapi,common-controls,Wpf,Windows,Winforms,Winapi,Common Controls,当您使用WinForms或WPF创建GUI时显示的内容是否仍然基于本机控件(如或其中任何控件),或者显示的所有内容是否都是由框架绘制的“自定义” 注意:我不是在说文件对话框之类的东西,而是用WinForms或WPF实现的GUI 是的,这纯粹是出于兴趣。用户HighCore评论道: WPF对窗口对象使用“HWND”,但对所有其他对象使用“HWND” 窗口中的(控件)是与中的Win32无关的WPF对象 无论如何,winforms对每个UI都使用单独的HWND 元素 事实上,使用Spy++,当我们创建
是的,这纯粹是出于兴趣。用户HighCore评论道: WPF对窗口对象使用“HWND”,但对所有其他对象使用“HWND” 窗口中的(控件)是与中的Win32无关的WPF对象 无论如何,winforms对每个UI都使用单独的HWND 元素 事实上,使用Spy++,当我们创建一个带有简单对话框/窗口和按钮的测试应用程序时,我们可以观察到以下情况: MFC/本机:
- 应用程序窗口是一个窗口(HWND),窗口类为
(我使用了一个“基于对话框”的应用程序)#32770(Dialog)
- 该按钮是一个单独的窗口(类:
)按钮
- 该按钮是一个单独的窗口(类:
- 应用程序窗口具有窗口类
(噢,我的天)WindowsForms10.window.8.app.0.2bf8098_r20_ad1
- 按钮是一个单独的窗口(类别:
)WindowsForms10.Button.app.0.2bf8098\u r20\u ad1
- 按钮是一个单独的窗口(类别:
- 只有一个顶级窗口,不过为了更好地衡量,我在UI设计器中为该窗口添加了一个组合框、一个列表框和一个菜单
- 唯一窗口的类是:
HwndWrapper[WpfApplication1.exe;;9b1aec0f-1b88-419c-8730-858906314cd9]
显然,MS认为每个窗口使用多个窗口已经不再必要了。我想我需要回答第二个问题。Windows窗体对某些UI元素使用本机控件。WPF自己绘制所有内容。WPF对
窗口使用“HWND”作为对象,但窗口内的所有其他对象(控件)都是WPF对象,与Win32没有任何关系,但winforms对每个UI元素都使用单独的HWND。Spy++不是一个进行反向工程的好工具,您无法轻松看到各种弹出窗口。与工具提示、上下文菜单、组合框下拉列表类似。很容易错过传统的功能,比如shell对话框和webbrowser。