Compartilhar via


HwndSource Classe

Definição

Apresenta conteúdo do WPF (Windows Presentation Foundation) em uma janela do 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
Herança
Implementações

Comentários

Importante

Muitos membros dessa classe não estão disponíveis na zona de segurança da Internet.

Um HwndSource implementa uma janela Win32 que pode conter conteúdo WPF. O conteúdo do WPF na janela é organizado, medido e renderizado; e é interativo para entrada. Como o HwndSource foi projetado especificamente para interoperar com o Win32, essa classe expõe vários recursos win32 de baixo nível. Você pode usar essa classe para fazer o seguinte:

  • Especifique estilos de janela, estilos de classe de janela e estilos de janela estendidos.

  • Conecte o procedimento da janela.

  • Forneça acesso ao identificador de janela (HWND).

  • Destrua a janela.

A HwndSource classe foi projetada para interoperabilidade geral e não foi projetada como um wrapper HWND gerenciado. Em geral, ele não fornece métodos gerenciados para manipular a janela ou propriedades para inspecionar seu estado. Em vez disso, a HwndSource classe fornece acesso ao identificador de janela Win32 (HWND) por meio da Handle propriedade , que pode ser passada por meio de técnicas PInvoke para APIs win32 a fim de manipular a janela.

Construção

Muitos aspectos do HwndSource só podem ser especificados no momento da construção. Para criar um HwndSource, primeiro crie uma HwndSourceParameters estrutura e preencha-a com os parâmetros desejados. Esses parâmetros incluem o seguinte:

  • A classe, a janela e os estilos de janela estendidos. Você deve usar o PInvoke para alterar os estilos depois que a janela é criada. Nem todos os estilos podem ser alterados depois que a janela é criada. Consulte a documentação do Win32 antes de alterar os estilos de janela.

  • A posição inicial da janela.

  • O tamanho inicial da janela, que inclui se o tamanho é especificado ou deve ser determinado do tamanho determinado do conteúdo do WPF.

  • A janela pai.

  • O HwndSourceHook a ser incluído na cadeia de procedimentos da janela. Se você especificar um gancho no momento da construção, ele receberá todas as mensagens para a janela. Você pode usar AddHook para adicionar um gancho depois que a janela é criada.

  • As configurações de transparência. Uma janela de nível superior pode ser configurada para se misturar com as outras janelas na área de trabalho de acordo com a transparência por pixel do conteúdo do WPF. Para habilitar isso, defina a UsesPerPixelOpacity propriedade no como HwndSourceParameterstrue. Essa propriedade só pode ser especificada no momento da construção e somente por meio da assinatura do HwndSource(HwndSourceParameters) construtor e impõe várias limitações.

Depois de preencher a HwndSourceParameters estrutura, passe-a para o HwndSource(HwndSourceParameters) construtor do HwndSource.

Tempo de vida do objeto

Um HwndSource é um objeto CLR (Common Language Runtime) regular e seu tempo de vida é gerenciado pelo coletor de lixo. Como o HwndSource representa um recurso não gerenciado, HwndSource implementa IDisposable. A chamada Dispose síncrona destrói imediatamente a janela win32 se chamada do thread do proprietário. Se chamado de outro thread, a janela win32 é destruída de forma assíncrona. Chamar Dispose explicitamente do código de interoperação pode ser necessário para determinados cenários de interoperação.

Procedimentos de janela

A HwndSource classe implementa seu próprio procedimento de janela. Esse procedimento de janela é usado para processar mensagens de janela importantes, como aquelas relacionadas a layout, renderização e entrada. No entanto, você também pode enganchar o procedimento de janela para seu próprio uso. Você pode especificar seu próprio gancho durante a construção definindo a HwndSourceParameters.HwndSourceHook propriedade ou também pode usar AddHook e RemoveHook para adicionar e remover ganchos após a criação da janela. Os ganchos são chamados pela ordem de primeira saída última, que permite que seus ganchos sejam executados antes do processamento interno. Os ganchos reais são mantidos por uma referência fraca. Portanto, certifique-se de gerenciar o tempo de vida do delegado do gancho.

Para obter mais informações sobre HwndSource e outras classes de interoperação, consulte Interoperação WPF e Win32.

Observe como os construtores para HwndSource usar parâmetros semelhantes aos parâmetros para funções Win32, como CreateWindowEx.

As transformações de escala não devem ser aplicadas ao RootVisual de um HwndSource. Consulte Comentários para RootVisual.

Construtores

HwndSource(HwndSourceParameters)

Inicializa uma nova instância da classe HwndSource usando uma estrutura que contém as configurações iniciais.

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

Inicializa uma nova instância da classe HwndSource com um estilo de classe, estilo, estilo estendido, posição x-y, largura, altura, nome e janela pai especificados.

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

Inicializa uma nova instância da classe HwndSource com um estilo de classe, estilo, estilo estendido, posição x-y, largura, altura, nome e janela pai especificados e especificando se a janela tem dimensionamento automático.

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

Inicializa uma nova instância da classe HwndSource com um estilo de classe, estilo, estilo estendido, posição x-y, nome e janela pai especificados.

Propriedades

AcquireHwndFocusInMenuMode

Obtém o valor que determina se é necessário adquirir o foco do Win32 para a janela que contém o WPF para este HwndSource.

ChildKeyboardInputSinks

Obtém uma sequência de coletores de entrada registrados.

CompositionTarget

Obtém o gerenciador visual para a janela hospedada.

DefaultAcquireHwndFocusInMenuMode

Obtém ou define o valor AcquireHwndFocusInMenuMode padrão para novas instâncias de HwndSource.

Dispatcher

Obtém o Dispatcher ao qual este DispatcherObject está associado.

(Herdado de DispatcherObject)
Handle

Obtém o identificador de janela para este HwndSource.

IsDisposed

Obtém um valor que indica se Dispose() foi chamado neste HwndSource.

KeyboardInputSiteCore

Obtém ou define uma referência à interface IKeyboardInputSite do contêiner do componente.

RestoreFocusMode

Obtém o RestoreFocusMode para a janela.

RootVisual

Obtém ou define o RootVisual da janela.

SizeToContent

Obtém ou define se a janela é dimensionada para seu conteúdo e como ela é dimensionada.

UsesPerPixelOpacity

Obtém um valor que declara se a opacidade por pixel da janela do conteúdo de origem é respeitada.

Métodos

AddHook(HwndSourceHook)

Adiciona um manipulador de eventos que recebe todas as mensagens da janela.

AddSource()

Adiciona uma instância de classe derivada PresentationSource à lista de fontes de apresentação conhecidas.

(Herdado de PresentationSource)
CheckAccess()

Determina se o thread de chamada tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
ClearContentRenderedListeners()

Define a lista de ouvintes para o evento ContentRendered para null.

(Herdado de PresentationSource)
CreateHandleRef()

Obtém o identificador de janela para o HwndSource. O identificador de janela é empacotado como parte de uma estrutura HandleRef.

Dispose()

Libera todos os recursos gerenciados usados pelo HwndSource e aciona o evento Disposed.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
FromHwnd(IntPtr)

Retorna o objeto HwndSource da janela especificada.

GetCompositionTargetCore()

Obtém o destino visual da janela.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HasFocusWithinCore()

Obtém um valor que indica se o coletor ou um de seus componentes independentes tem foco.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnDpiChanged(HwndDpiChangedEventArgs)

Chamado quando o DPI for alterado para a janela.

OnMnemonicCore(MSG, ModifierKeys)

Chamado quando uma das teclas mnemônicas (teclas de acesso) para esse coletor é invocada.

RegisterKeyboardInputSinkCore(IKeyboardInputSink)

Registra a interface IKeyboardInputSink de um componente independente.

RemoveHook(HwndSourceHook)

Remove os manipuladores de eventos que foram adicionados por AddHook(HwndSourceHook).

RemoveSource()

Remove uma instância de classe derivada PresentationSource da lista de fontes de apresentação conhecidas.

(Herdado de PresentationSource)
RootChanged(Visual, Visual)

Fornece notificação de que a raiz Visual foi alterada.

(Herdado de PresentationSource)
TabIntoCore(TraversalRequest)

Define se o foco estará na primeira parada de tabulação ou na última parada de tabulação do coletor.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TranslateAcceleratorCore(MSG, ModifierKeys)

Processa a entrada do teclado no nível da mensagem por pressionamento de tecla.

TranslateCharCore(MSG, ModifierKeys)

Processa as mensagens de entrada WM_CHAR, WM_SYSCHAR, WM_DEADCHAR e WM_SYSDEADCHAR antes que o método OnMnemonic(MSG, ModifierKeys) seja chamado.

VerifyAccess()

Impõe que o thread de chamada tenha acesso a este DispatcherObject.

(Herdado de DispatcherObject)

Eventos

AutoResized

Ocorre quando o layout faz com que o HwndSource seja redimensionado automaticamente.

ContentRendered

Ocorre quando o conteúdo é processado e está pronto para interação com o usuário.

(Herdado de PresentationSource)
Disposed

Ocorre quando o método Dispose() é chamado neste objeto.

DpiChanged

Ocorre quando o valor de DPIs do monitor deste HWND é alterado ou quando o HWND é movido para um monitor com um valor de DPIs diferente.

SizeToContentChanged

Ocorre quando o valor da propriedade SizeToContent muda.

Implantações explícitas de interface

IKeyboardInputSink.HasFocusWithin()

Para obter uma descrição desse membro, confira IList.Remove(Object).

IKeyboardInputSink.KeyboardInputSite

Para obter uma descrição desse membro, confira KeyboardInputSite.

IKeyboardInputSink.OnMnemonic(MSG, ModifierKeys)

Para obter uma descrição desse membro, confira OnMnemonic(MSG, ModifierKeys).

IKeyboardInputSink.RegisterKeyboardInputSink(IKeyboardInputSink)

Para obter uma descrição desse membro, confira RegisterKeyboardInputSink(IKeyboardInputSink).

IKeyboardInputSink.TabInto(TraversalRequest)

Para obter uma descrição desse membro, confira TabInto(TraversalRequest).

IKeyboardInputSink.TranslateAccelerator(MSG, ModifierKeys)

Para obter uma descrição desse membro, confira TranslateAccelerator(MSG, ModifierKeys).

IKeyboardInputSink.TranslateChar(MSG, ModifierKeys)

Para obter uma descrição desse membro, confira TranslateChar(MSG, ModifierKeys).

Aplica-se a

Confira também