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 значение |
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). |