HwndSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 Win32 窗口中呈现 Windows Presentation Foundation (WPF) 内容。
public ref class HwndSource : System::Windows::PresentationSource, IDisposable, System::Windows::Interop::IKeyboardInputSink, System::Windows::Interop::IWin32Window
public class HwndSource : System.Windows.PresentationSource, IDisposable, System.Windows.Interop.IKeyboardInputSink, System.Windows.Interop.IWin32Window
type HwndSource = class
inherit PresentationSource
interface IDisposable
interface IWin32Window
interface IKeyboardInputSink
type HwndSource = class
inherit PresentationSource
interface IDisposable
interface IKeyboardInputSink
interface IWin32Window
Public Class HwndSource
Inherits PresentationSource
Implements IDisposable, IKeyboardInputSink, IWin32Window
- 继承
- 实现
注解
重要
此类的许多成员在 Internet 安全区域中不可用。
实现 HwndSource 可包含 WPF 内容的 Win32 窗口。 窗口中的 WPF 内容经过排列、测量和呈现;和 与输入交互。 HwndSource由于 专为与 Win32 互操作而设计,因此此类公开了几个低级别的 Win32 功能。 可以使用此类执行以下操作:
指定窗口样式、窗口类样式和扩展窗口样式。
挂钩窗口过程。
提供对 HWND) (窗口句柄的访问权限。
销毁窗口。
类 HwndSource 旨在实现常规互操作性,而不是设计为托管 HWND 包装器。 通常,它不提供用于操作窗口的托管方法或用于检查其状态的属性。 相反, HwndSource 类通过 Handle 属性提供对 Win32 窗口句柄 (HWND) 的访问权限,该属性可以通过 PInvoke 技术传递给 Win32 API,以便操作窗口。
建筑
的许多方面 HwndSource 只能在构造时指定。 若要创建 , HwndSource请首先创建一个 HwndSourceParameters 结构,并使用所需的参数填充该结构。 这些参数包括:
类、窗口和扩展窗口样式。 创建窗口后,必须使用 PInvoke 更改样式。 创建窗口后,并非所有样式都可以更改。 在更改窗口样式之前,请查阅 Win32 文档。
窗口的初始位置。
窗口的初始大小,包括大小是指定还是应根据 WPF 内容的确定大小确定。
父窗口。
要 HwndSourceHook 包含在窗口过程链中的 。 如果在构造时指定挂钩,它将接收窗口的所有消息。 可以使用 AddHook 在创建窗口后添加挂钩。
透明度设置。 可以根据 WPF 内容的每像素透明度将顶级窗口配置为与桌面上的其他窗口混合。 若要启用此功能,请将 UsesPerPixelOpacity 中的 HwndSourceParameters 属性设置为
true
。 此属性只能在构造时指定,并且只能通过 HwndSource(HwndSourceParameters) 构造函数签名指定,并且它施加了几个限制。
填充 HwndSourceParameters 结构后,将其传递给 HwndSource(HwndSourceParameters) 的 HwndSource构造函数。
对象生存期
是 HwndSource CLR) 对象的常规公共语言运行时 (,其生存期由垃圾回收器管理。 HwndSource由于 表示非托管资源, HwndSource 实现 IDisposable。 如果从所有者线程调用,则同步调用 Dispose 会立即销毁 Win32 窗口。 如果从另一个线程调用,则 Win32 窗口将异步销毁。 对于某些互操作方案,可能需要从互操作代码显式调用 Dispose 。
窗口过程
类 HwndSource 实现其自己的窗口过程。 此窗口过程用于处理重要的窗口消息,例如与布局、呈现和输入相关的消息。 但是,也可以挂接窗口过程供自己使用。 可以通过设置 HwndSourceParameters.HwndSourceHook 属性在构造期间指定自己的挂钩,也可以在创建窗口后使用 AddHook 和 RemoveHook 添加和删除挂钩。 挂钩按上进先出顺序调用,这使挂钩能够在内置处理之前执行。 实际挂钩由弱引用保留。 因此,请确保管理挂钩委托的生存期。
有关 和其他互操作类的详细信息 HwndSource ,请参阅 WPF 和 Win32 互操作。
请注意 的构造函数 HwndSource 如何采用类似于 Win32 函数的参数(例如 CreateWindowEx)的参数。
缩放转换不应应用于 RootVisual 的 HwndSource。 请参阅 的 RootVisual备注。
构造函数
HwndSource(HwndSourceParameters) |
通过使用包含初始设置的结构初始化 HwndSource 类的新实例。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr) |
初始化具有指定类样式、样式、扩展样式、x-y 位置、宽度、高度、名称和父窗口的 HwndSource 类的新实例。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr, Boolean) |
初始化 HwndSource 类的新实例,此实例具有指定的类样式、样式、扩展样式、x-y 位置、宽度、高度、名称和父窗口,并且指示了窗口是否自动调整大小。 |
HwndSource(Int32, Int32, Int32, Int32, Int32, String, IntPtr) |
初始化具有指定类样式、样式、扩展样式、x-y 位置、名称和父窗口的 HwndSource 类的新实例。 |
属性
AcquireHwndFocusInMenuMode |
获取一个值,该值确定是否为此 HwndSource 获取包含窗口的 WPF 的 Win32 焦点。 |
ChildKeyboardInputSinks |
获取一系列注册的输入接收器。 |
CompositionTarget |
获取所承载的窗口的可视化管理器。 |
DefaultAcquireHwndFocusInMenuMode |
获取或设置 AcquireHwndFocusInMenuMode 的新实例的默认 HwndSource 值。 |
Dispatcher |
获取与此 Dispatcher 关联的 DispatcherObject。 (继承自 DispatcherObject) |
Handle |
获取此 HwndSource 的窗口句柄。 |
IsDisposed |
获取一个值,指示是否已对此 Dispose() 调用 HwndSource。 |
KeyboardInputSiteCore |
获取或设置对组件容器的 IKeyboardInputSite 接口的引用。 |
RestoreFocusMode |
获取窗口的 RestoreFocusMode。 |
RootVisual |
获取或设置窗口的 RootVisual。 |
SizeToContent |
获取或设置窗口是否根据其内容调整大小以及如何调整大小。 |
UsesPerPixelOpacity |
获取一个值,该值声明是否遵守源窗口内容的每像素不透明度。 |
方法
事件
AutoResized |
当布局导致 HwndSource 自动调整大小时发生。 |
ContentRendered |
在呈现内容并准备开始用户交互时发生。 (继承自 PresentationSource) |
Disposed |
对此对象调用 Dispose() 方法时发生。 |
DpiChanged |
已更改此 Hwnd 的监视器的 DPI 或 Hwnd 移动到具有不同 DPI 的监视器时发生。 |
SizeToContentChanged |
当 SizeToContent 属性的值更改时发生。 |