Поделиться через


HwndSource Класс

Определение

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

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
Наследование
Реализации

Комментарии

Важно!

Многие члены этого класса недоступны в зоне безопасности Интернета.

Реализует HwndSource окно Win32, которое может содержать содержимое WPF. Содержимое WPF в окне упорядочено, измеряется и отображается; и является интерактивным для ввода. HwndSource Так как специально разработан для взаимодействия с Win32, этот класс предоставляет несколько низкоуровневых функций Win32. Этот класс можно использовать для выполнения следующих действий:

  • Укажите стили окон, стили классов окон и расширенные стили окон.

  • Зацепить процедуру окна.

  • Предоставьте доступ к дескрипторе окна (HWND).

  • Уничтожьте окно.

Класс HwndSource предназначен для общего взаимодействия и не предназначен для управляемой оболочки HWND. Как правило, он не предоставляет управляемые методы для управления окном или свойствами для проверки его состояния. Вместо этого HwndSource класс предоставляет доступ к дескриптолю окна Win32 (HWND) через Handle свойство , которое можно передать с помощью методов PInvoke в API Win32 для управления окном.

Строительство

Многие аспекты 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 свойство , или использовать и RemoveHook для AddHook добавления и удаления перехватчиков после создания окна. Перехватчики вызываются в порядке последнего первого выхода, что позволяет обработчикам выполняться перед встроенной обработкой. Фактические крючки удерживаются слабой ссылкой. Поэтому убедитесь, что вы управляете временем существования делегата-перехватчика.

Дополнительные сведения о HwndSource и других классах взаимодействия см. в разделе Взаимодействие WPF и Win32.

Обратите внимание, что конструкторы для HwndSource принимают параметры, похожие на параметры для функций Win32, таких как CreateWindowEx.

Преобразования масштабирования не должны применяться к объекту RootVisualHwndSource. См. примечания для RootVisual.

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

HwndSource(HwndSourceParameters)

Инициализирует новый экземпляр класса HwndSource, используя структуру, содержащую начальные установки.

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

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, ширину, высоту, имя и родительское окно.

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

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, ширину, высоту, имя, родительское окно и значение, указывающее, должен ли размер окна определяться автоматически.

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

Инициализирует новый экземпляр класса HwndSource, используя заданные стиль класса, стиль, расширенный стиль, позицию x-y, имя и родительское окно.

Свойства

AcquireHwndFocusInMenuMode

Получает значение, определяющее, нужно ли получать фокус Win32 для содержащего окно WPF для данного объекта HwndSource.

ChildKeyboardInputSinks

Получает последовательность зарегистрированных приемников ввода.

CompositionTarget

Возвращает наглядный диспетчер размещенного окна.

DefaultAcquireHwndFocusInMenuMode

Получает или задает значение AcquireHwndFocusInMenuMode для новых экземпляров HwndSource.

Dispatcher

Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject.

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

Возвращает дескриптор окна для данного HwndSource.

IsDisposed

Возвращает значение, показывающее, выполнена ли отмена Dispose() для данного HwndSource.

KeyboardInputSiteCore

Возвращает или задает указатель на интерфейс IKeyboardInputSite контейнера компонента.

RestoreFocusMode

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

RootVisual

Получает или задает свойство RootVisual окна.

SizeToContent

Возвращает или задает значение, указывающее, как выполняется изменение размера окна в соответствии с его содержимым.

UsesPerPixelOpacity

Возвращает значение, указывающее, учитывается ли значение непрозрачности каждого пикселя содержимого исходного окна.

Методы

AddHook(HwndSourceHook)

Добавляет обработчик событий, получающий все сообщения окна.

AddSource()

Добавляет экземпляр производного класса PresentationSource в список известных источников презентаций.

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

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.

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

Задает для списка прослушивателей события ContentRendered значение null.

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

Возвращает дескриптор окна для HwndSource. Дескриптор окна упаковывается как часть структуры HandleRef.

Dispose()

Освобождает все управляемые ресурсы, используемые объектом HwndSource, и порождает событие Disposed.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

Возвращает объект HwndSource заданного окна.

GetCompositionTargetCore()

Возвращает визуальный целевой объект окна.

GetHashCode()

Служит хэш-функцией по умолчанию.

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

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

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

Возвращает значение, указывающее, имеет ли приемник или один из содержащихся в нем компонентов фокус ввода.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

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

Вызывается, когда значение DPI будет изменяться для окна.

OnMnemonicCore(MSG, ModifierKeys)

Вызывается, когда нажата одна из мнемоник (клавиш доступа) данного приемника.

RegisterKeyboardInputSinkCore(IKeyboardInputSink)

Регистрирует интерфейс IKeyboardInputSink размещенного компонента.

RemoveHook(HwndSourceHook)

Удаляет обработчики событий, добавленные методом AddHook(HwndSourceHook).

RemoveSource()

Удаляет экземпляр производного класса PresentationSource из списка известных источников презентаций.

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

Обеспечивает уведомление об изменении корневого объекта Visual.

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

Устанавливает фокус на первую или последнюю позицию табуляции приемника.

ToString()

Возвращает строку, представляющую текущий объект.

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

Обрабатывает ввод с клавиатуры на уровне сообщений о нажатии клавиши.

TranslateCharCore(MSG, ModifierKeys)

Обрабатывает входные сообщения WM_CHAR, WM_SYSCHAR, WM_DEADCHAR и WM_SYSDEADCHAR перед вызовом метода OnMnemonic(MSG, ModifierKeys).

VerifyAccess()

Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject.

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

События

AutoResized

Генерируется, когда структура инициирует автоматическое изменение размера HwndSource.

ContentRendered

Происходит, когда содержимое отрисовано и готово к взаимодействию с пользователем.

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

Генерируется при вызове метода Dispose() данного объекта.

DpiChanged

Создается при изменении разрешения монитора Hwnd или перемещении Hwnd на монитор с отличным разрешением (в точках на дюйм).

SizeToContentChanged

Происходит при изменении значения свойства SizeToContent.

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

IKeyboardInputSink.HasFocusWithin()

Описание этого члена см. в разделе IList.Remove(Object).

IKeyboardInputSink.KeyboardInputSite

Описание этого члена см. в разделе KeyboardInputSite.

IKeyboardInputSink.OnMnemonic(MSG, ModifierKeys)

Описание этого члена см. в разделе OnMnemonic(MSG, ModifierKeys).

IKeyboardInputSink.RegisterKeyboardInputSink(IKeyboardInputSink)

Описание этого члена см. в разделе RegisterKeyboardInputSink(IKeyboardInputSink).

IKeyboardInputSink.TabInto(TraversalRequest)

Описание этого члена см. в разделе TabInto(TraversalRequest).

IKeyboardInputSink.TranslateAccelerator(MSG, ModifierKeys)

Описание этого члена см. в разделе TranslateAccelerator(MSG, ModifierKeys).

IKeyboardInputSink.TranslateChar(MSG, ModifierKeys)

Описание этого члена см. в разделе TranslateChar(MSG, ModifierKeys).

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

См. также раздел