HwndSource Класс

Определение

Представляет содержимое Windows Presentation Foundation (WPF) в окне Win32.Presents Windows Presentation Foundation (WPF) content in a Win32 window.

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
Public Class HwndSource
Inherits PresentationSource
Implements IDisposable, IKeyboardInputSink, IWin32Window
Наследование
Реализации

Комментарии

Важно!

Многие члены этого класса недоступны в зоне безопасности Интернета.Many members of this class are unavailable in the Internet security zone.

HwndSource реализует окно Win32Win32, которое может содержать WPFWPF содержимое.An HwndSource implements a Win32Win32 window that can contain WPFWPF content. Содержимое WPFWPF в окне упорядочивается, измеряется и готовится к просмотру. и является интерактивным для входных данных.The WPFWPF content in the window is arranged, measured, and rendered; and is interactive to input. Поскольку HwndSource специально разработана для взаимодействия с Win32Win32, этот класс предоставляет несколько низкоуровневых Win32Win32 функций.Because the HwndSource is specifically designed to interoperate with Win32Win32, this class exposes several low-level Win32Win32 features. Этот класс можно использовать для следующих задач:You can use this class to do the following:

  • Укажите стили окон, стили классов окон и расширенные стили окна.Specify window styles, window class styles, and extended window styles.

  • Подсоедините процедуру окна.Hook the window procedure.

  • Предоставление доступа к дескриптору окна (HWND).Provide access to the window handle (HWND).

  • Уничтожить окно.Destroy the window.

Класс HwndSource предназначен для общего взаимодействия и не предназначен для управляемой оболочки HWND.The HwndSource class is designed for general interoperability and is not designed as a managed HWND wrapper. Как правило, он не предоставляет управляемые методы для управления окном или свойствами для проверки его состояния.In general, it does not provide managed methods for manipulating the window or properties for inspecting its state. Вместо этого класс HwndSource предоставляет доступ к дескриптору окна Win32Win32 (HWND) через свойство Handle, которое можно передать с помощью методов PInvoke для Win32Win32 интерфейсов API для управления окном.Instead, the HwndSource class provides access to the Win32Win32 window handle (HWND) through the Handle property, which can be passed by means of PInvoke techniques to Win32Win32 APIs in order to manipulate the window.

ФормированиеConstruction

Многие аспекты HwndSource могут быть указаны только во время создания.Many aspects of the HwndSource can only be specified at construction time. Чтобы создать HwndSource, сначала создайте структуру HwndSourceParameters и заполните ее нужными параметрами.To create an HwndSource, first create an HwndSourceParameters structure and populate it with the desired parameters. К этим параметрам относятся следующие.These parameters include the following:

  • Классы, окна и расширенные стили окна.The class, window, and extended window styles. Для изменения стилей после создания окна необходимо использовать PInvoke.You must use PInvoke to change the styles after the window is created. Не все стили можно изменить после создания окна.Not all styles can be changed after the window is created. Перед изменением стилей окна обратитесь к документации по Win32Win32.Consult the Win32Win32 documentation before changing window styles.

  • Начальное расположение окна.The initial position of the window.

  • Начальный размер окна, включающий, задан ли размер, или должен быть определен из определенного размера WPFWPF содержимого.The initial size of the window, which includes whether the size is specified or should be determined from the determined size of the WPFWPF content.

  • Родительское окно.The parent window.

  • HwndSourceHook для включения в цепочку оконных процедур.The HwndSourceHook to include in the window procedure chain. При указании обработчика во время создания он получает все сообщения для окна.If you specify a hook at construction time, it receives all messages for the window. AddHook можно использовать для добавления обработчика после создания окна.You can use AddHook to add a hook after the window is created.

  • Параметры прозрачности.The transparency settings. Окно верхнего уровня можно настроить для смешения с другими окнами на рабочем столе в соответствии с прозрачностью WPFWPF содержимого в пикселях.A top-level window can be configured to blend with the other windows on the desktop according to the per-pixel transparency of the WPFWPF content. Чтобы включить эту функцию, задайте для свойства UsesPerPixelOpacity в HwndSourceParameters значение true.To enable this, set the UsesPerPixelOpacity property in the HwndSourceParameters to true. Это свойство может быть указано только во время создания и только через сигнатуру конструктора HwndSource(HwndSourceParameters) и накладывает несколько ограничений.This property can only be specified at construction time, and only through the HwndSource(HwndSourceParameters) constructor signature, and it imposes several limitations.

После заполнения структуры HwndSourceParameters передайте ее в конструктор HwndSource(HwndSourceParameters) для HwndSource.After you populate the HwndSourceParameters structure, pass it to the HwndSource(HwndSourceParameters) constructor for the HwndSource.

Время существования объектаObject Lifetime

HwndSource — это обычный среда CLRcommon language runtime (CLR) объект, и его время существования управляется сборщиком мусора.An HwndSource is a regular среда CLRcommon language runtime (CLR) object, and its lifetime is managed by the garbage collector. Поскольку HwndSource представляет неуправляемый ресурс, HwndSource реализует IDisposable.Because the HwndSource represents an unmanaged resource, HwndSource implements IDisposable. Синхронный вызов Dispose немедленно уничтожает Win32Win32 окно, если оно вызывается из потока владельца.Synchronously calling Dispose immediately destroys the Win32Win32 window if called from the owner thread. При вызове из другого потока окно Win32Win32 уничтожается асинхронно.If called from another thread, the Win32Win32 window is destroyed asynchronously. Для некоторых сценариев взаимодействия может потребоваться вызов Dispose явным образом из взаимодействия с этим кодом.Calling Dispose explicitly from the interoperating code might be necessary for certain interoperation scenarios.

Процедуры окнаWindow Procedures

Класс HwndSource реализует свою собственную процедуру окна.The HwndSource class implements its own window procedure. Эта процедура окна используется для обработки важных оконных сообщений, таких как связанные с макетом, отрисовкой и вводом.This window procedure is used to process important window messages, such as those related to layout, rendering, and input. Тем не менее можно также подключить процедуру окна для собственного использования.However, you can also hook the window procedure for your own use. Вы можете указать свой собственный обработчик во время построения, задав свойство HwndSourceParameters.HwndSourceHook. также можно использовать AddHook и RemoveHook для добавления и удаления обработчиков после создания окна.You can specify your own hook during construction by setting the HwndSourceParameters.HwndSourceHook property, or you can also use AddHook and RemoveHook to add and remove hooks after the window is created. Обработчики вызываются по последнему первому порядку, что позволяет обработчикам выполняться перед встроенной обработкой.The hooks are called by last-in first-out order, which enables your hooks to execute before the built-in processing. Фактические обработчики удерживаются слабой ссылкой.The actual hooks are held by a weak reference. Поэтому убедитесь, что вы управляете временем существования делегата-обработчика.Therefore, make sure that you manage the lifetime of your hook delegate.

Дополнительные сведения о HwndSource и других классах взаимодействия см. в разделе взаимодействие WPF и Win32.For more information about HwndSource and other interoperation classes, see WPF and Win32 Interoperation.

Обратите внимание, что конструкторы для HwndSource принимают параметры, аналогичные параметрам для Win32Win32 таких функций, как CreateWindowEx.Notice how the constructors for HwndSource take parameters that resemble the parameters for Win32Win32 functions such as CreateWindowEx.

Преобразования масштаба не следует применять к RootVisual HwndSource.Scale transformations should not be applied to the RootVisual of an HwndSource. См. раздел Примечания для RootVisual.See Remarks for RootVisual.

Конструкторы

HwndSource(HwndSourceParameters)

Инициализирует новый экземпляр класса HwndSource, используя структуру, содержащую начальные установки.Initializes a new instance of the HwndSource class by using a structure that contains the initial settings.

HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr)

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, ширину, высоту, имя и родительское окно.Initializes a new instance of the HwndSource class with a specified class style, style, extended style, x-y position, width, height, name, and parent window.

HwndSource(Int32, Int32, Int32, Int32, Int32, Int32, Int32, String, IntPtr, Boolean)

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, ширину, высоту, имя, родительское окно и значение, указывающее, должен ли размер окна определяться автоматически.Initializes a new instance of the HwndSource class with a specified class style, style, extended style, x-y position, width, height, name, and parent window, and by specifying whether the window is autosized.

HwndSource(Int32, Int32, Int32, Int32, Int32, String, IntPtr)

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, имя и родительское окно.Initializes a new instance of the HwndSource class with a specified class style, style, extended style, x-y position, name, and parent window.

Свойства

AcquireHwndFocusInMenuMode

Получает значение, определяющее, нужно ли получать фокус Win32 для содержащего окно WPF для данного объекта HwndSource.Gets the value that determines whether to acquire Win32 focus for the WPF containing window for this HwndSource.

ChildKeyboardInputSinks

Получает последовательность зарегистрированных приемников ввода.Gets a sequence of registered input sinks.

CompositionTarget

Возвращает наглядный диспетчер размещенного окна.Gets the visual manager for the hosted window.

DefaultAcquireHwndFocusInMenuMode

Получает или задает значение AcquireHwndFocusInMenuMode для новых экземпляров HwndSource.Gets or sets the default AcquireHwndFocusInMenuMode value for new instances of HwndSource.

Dispatcher

Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Унаследовано от DispatcherObject)
Handle

Возвращает дескриптор окна для данного HwndSource.Gets the window handle for this HwndSource.

IsDisposed

Возвращает значение, показывающее, выполнена ли отмена Dispose() для данного HwndSource.Gets a value that indicates whether Dispose() has been called on this HwndSource.

KeyboardInputSiteCore

Возвращает или задает указатель на интерфейс IKeyboardInputSite контейнера компонента.Gets or sets a reference to the component's container's IKeyboardInputSite interface.

RestoreFocusMode

Получает режим RestoreFocusMode для окна.Gets the RestoreFocusMode for the window.

RootVisual

Получает или задает свойство RootVisual окна.Gets or sets the RootVisual of the window.

SizeToContent

Возвращает или задает значение, указывающее, как выполняется изменение размера окна в соответствии с его содержимым.Get or sets whether and how the window is sized to its content.

UsesPerPixelOpacity

Возвращает значение, указывающее, учитывается ли значение непрозрачности каждого пикселя содержимого исходного окна.Gets a value that declares whether the per-pixel opacity of the source window content is respected.

Методы

AddHook(HwndSourceHook)

Добавляет обработчик событий, получающий все сообщения окна.Adds an event handler that receives all window messages.

AddSource()

Добавляет экземпляр производного класса PresentationSource в список известных источников презентаций.Adds a PresentationSource derived class instance to the list of known presentation sources.

(Унаследовано от PresentationSource)
CheckAccess()

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Унаследовано от DispatcherObject)
ClearContentRenderedListeners()

Задает для списка прослушивателей события ContentRendered значение null.Sets the list of listeners for the ContentRendered event to null.

(Унаследовано от PresentationSource)
CreateHandleRef()

Возвращает дескриптор окна для HwndSource.Gets the window handle for the HwndSource. Дескриптор окна упаковывается как часть структуры HandleRef.The window handle is packaged as part of a HandleRef structure.

Dispose()

Освобождает все управляемые ресурсы, используемые объектом HwndSource, и порождает событие Disposed.Releases all managed resources that are used by the HwndSource, and raises the Disposed event.

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
FromHwnd(IntPtr)

Возвращает объект HwndSource заданного окна.Returns the HwndSource object of the specified window.

GetCompositionTargetCore()

Возвращает визуальный целевой объект окна.Gets the visual target of the window.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
HasFocusWithinCore()

Возвращает значение, указывающее, имеет ли приемник или один из содержащихся в нем компонентов фокус ввода.Gets a value that indicates whether the sink or one of its contained components has focus.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnDpiChanged(HwndDpiChangedEventArgs)

Вызывается, когда значение DPI будет изменяться для окна.Called when the DPI is going to change for the window.

OnMnemonicCore(MSG, ModifierKeys)

Вызывается, когда нажата одна из мнемоник (клавиш доступа) данного приемника.Called when one of the mnemonics (access keys) for this sink is invoked.

RegisterKeyboardInputSinkCore(IKeyboardInputSink)

Регистрирует интерфейс IKeyboardInputSink размещенного компонента.Registers the IKeyboardInputSink interface of a contained component.

RemoveHook(HwndSourceHook)

Удаляет обработчики событий, добавленные методом AddHook(HwndSourceHook).Removes the event handlers that were added by AddHook(HwndSourceHook).

RemoveSource()

Удаляет экземпляр производного класса PresentationSource из списка известных источников презентаций.Removes a PresentationSource derived class instance from the list of known presentation sources.

(Унаследовано от PresentationSource)
RootChanged(Visual, Visual)

Обеспечивает уведомление об изменении корневого объекта Visual.Provides notification that the root Visual has changed.

(Унаследовано от PresentationSource)
TabIntoCore(TraversalRequest)

Устанавливает фокус на первую или последнюю позицию табуляции приемника.Sets focus on either the first tab stop or the last tab stop of the sink.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
TranslateAcceleratorCore(MSG, ModifierKeys)

Обрабатывает ввод с клавиатуры на уровне сообщений о нажатии клавиши.Processes keyboard input at the key-down message level.

TranslateCharCore(MSG, ModifierKeys)

Обрабатывает входные сообщения WM_CHAR, WM_SYSCHAR, WM_DEADCHAR и WM_SYSDEADCHAR перед вызовом метода OnMnemonic(MSG, ModifierKeys).Processes WM_CHAR, WM_SYSCHAR, WM_DEADCHAR, and WM_SYSDEADCHAR input messages before the OnMnemonic(MSG, ModifierKeys) method is called.

VerifyAccess()

Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Унаследовано от DispatcherObject)

События

AutoResized

Генерируется, когда структура инициирует автоматическое изменение размера HwndSource.Occurs when layout causes the HwndSource to automatically resize.

ContentRendered

Происходит, когда содержимое отрисовано и готово к взаимодействию с пользователем.Occurs when content is rendered and ready for user interaction.

(Унаследовано от PresentationSource)
Disposed

Генерируется при вызове метода Dispose() данного объекта.Occurs when the Dispose() method is called on this object.

DpiChanged

Создается при изменении разрешения монитора Hwnd или перемещении Hwnd на монитор с отличным разрешением (в точках на дюйм).Occurs when the DPI of the monitor of this Hwnd has changed, or the Hwnd is moved to a monitor with a different DPI.

SizeToContentChanged

Происходит при изменении значения свойства SizeToContent.Occurs when the value of the SizeToContent property changes.

Явные реализации интерфейса

IKeyboardInputSink.HasFocusWithin()

Описание этого члена см. в разделе IList.Remove(Object).For a description of this member, see IList.Remove(Object).

IKeyboardInputSink.KeyboardInputSite

Описание этого члена см. в разделе KeyboardInputSite.For a description of this member, see KeyboardInputSite.

IKeyboardInputSink.OnMnemonic(MSG, ModifierKeys)

Описание этого члена см. в разделе OnMnemonic(MSG, ModifierKeys).For a description of this member, see OnMnemonic(MSG, ModifierKeys).

IKeyboardInputSink.RegisterKeyboardInputSink(IKeyboardInputSink)

Описание этого члена см. в разделе RegisterKeyboardInputSink(IKeyboardInputSink).For a description of this member, see RegisterKeyboardInputSink(IKeyboardInputSink).

IKeyboardInputSink.TabInto(TraversalRequest)

Описание этого члена см. в разделе TabInto(TraversalRequest).For a description of this member, see TabInto(TraversalRequest).

IKeyboardInputSink.TranslateAccelerator(MSG, ModifierKeys)

Описание этого члена см. в разделе TranslateAccelerator(MSG, ModifierKeys).For a description of this member, see TranslateAccelerator(MSG, ModifierKeys).

IKeyboardInputSink.TranslateChar(MSG, ModifierKeys)

Описание этого члена см. в разделе TranslateChar(MSG, ModifierKeys).For a description of this member, see TranslateChar(MSG, ModifierKeys).

Применяется к

Дополнительно