HwndSource 클래스

정의

Win32 창에 WPF(Windows Presentation Foundation) 콘텐츠를 표시합니다.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 IKeyboardInputSink
    interface 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 WPF 콘텐츠를 포함할 수 있는 Win32 창을 구현 합니다.An HwndSource implements a Win32 window that can contain WPF content. 창에 있는 WPF 콘텐츠가 정렬 되 고 측정 되며 렌더링 됩니다. 및는 입력에 대해 대화형입니다.The WPF content in the window is arranged, measured, and rendered; and is interactive to input. HwndSource Win32와 상호 운용 되도록 특별히 설계 되었기 때문에이 클래스는 몇 가지 하위 수준 Win32 기능을 노출 합니다.Because the HwndSource is specifically designed to interoperate with Win32, this class exposes several low-level Win32 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 속성을 통해 win32 창 핸들 (HWND)에 대 한 액세스를 제공 합니다 .이는 Handle PInvoke 기법을 사용 하 여 창을 조작 하기 위해 win32 api에 전달할 수 있습니다.Instead, the HwndSource class provides access to the Win32 window handle (HWND) through the Handle property, which can be passed by means of PInvoke techniques to Win32 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. 창 스타일을 변경 하기 전에 Win32 설명서를 참조 하세요.Consult the Win32 documentation before changing window styles.

  • 창의 초기 위치입니다.The initial position of the window.

  • 크기를 지정 했는지 또는 결정 된 WPF 콘텐츠 크기에서 결정 해야 하는지 여부를 포함 하는 창의 초기 크기입니다.The initial size of the window, which includes whether the size is specified or should be determined from the determined size of the WPF 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. 최상위 창은 WPF 콘텐츠의 픽셀 별 투명도에 따라 바탕 화면에서 다른 창과 혼합 되도록 구성할 수 있습니다.A top-level window can be configured to blend with the other windows on the desktop according to the per-pixel transparency of the WPF 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 일반 CLR (공용 언어 런타임) 개체이 고 수명은 가비지 수집기에 의해 관리 됩니다.An HwndSource is a regular common 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 하면 소유자 스레드에서 호출 된 경우 Win32 창이 즉시 소멸 됩니다.Synchronously calling Dispose immediately destroys the Win32 window if called from the owner thread. 다른 스레드에서 호출 되는 경우 Win32 창이 비동기적으로 소멸 됩니다.If called from another thread, the Win32 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 CreateWindowEx와 같은 Win32 함수의 매개 변수와 유사한 매개 변수를 사용 하는 방법을 확인 합니다.Notice how the constructors for HwndSource take parameters that resemble the parameters for Win32 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)

지정된 클래스 스타일, 스타일, 확장 스타일, x-y 위치, 너비, 높이, 이름 및 부모 창을 사용하여 HwndSource 클래스의 새 인스턴스를 초기화합니다.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)

지정된 클래스 스타일, 스타일, 확장 스타일, x-y 위치, 너비, 높이, 이름, 부모 창을 사용하고 창의 자동 크기 조정 여부를 지정하여 HwndSource 클래스의 새 인스턴스를 초기화합니다.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)

지정된 클래스 스타일, 스타일, 확장 스타일, x-y 위치, 이름 및 부모 창을 사용하여 HwndSource 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the HwndSource class with a specified class style, style, extended style, x-y position, name, and parent window.

속성

AcquireHwndFocusInMenuMode

HwndSource에 대해 창이 포함된 WPF에 대한 Win32 포커스를 가져올지 여부를 결정하는 값을 가져옵니다.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)

keydown 메시지 수준에서 키보드 입력을 처리합니다.Processes keyboard input at the key-down message level.

TranslateCharCore(MSG, ModifierKeys)

OnMnemonic(MSG, ModifierKeys) 메서드가 호출되기 전에 WM_CHAR, WM_SYSCHAR, WM_DEADCHAR 및 WM_SYSDEADCHAR 입력 메시지를 처리합니다.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의 모니터 DPI가 변경되거나 Hwnd가 다른 DPI의 모니터로 이동될 때 발생합니다.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).

적용 대상

추가 정보