.NET 창에서는 양식에 컨트롤 모음이 있고 내부적으로 모두 Microsoft Windows에서 제공하는 창 하위 시스템으로 둘러 쌉니다. MFC와 다소 비슷합니다. 이것은 윈도우 API 주위의 얕은 래퍼입니다. 폼/윈도우 내의 제어는 트리 구조를 생성하고 이벤트는 리프 노드에 의해 수신된다. MouseMove 이벤트는 마우스 바로 아래의 창/컨트롤에 의해 수신됩니다.Windows에서 이벤트 라우팅 전략을 변경할 수 있습니까?
그러나 프리젠 테이션 프레임 워크에서 마이크로 소프트는 다음과 같은 전략
- 터널 중 하나를 가질 수있는 RoutedEvent 제공은 라우팅 된 이벤트는 터널링 전략을 사용하는 경우 루트에서 소스 요소에 트리를 통해 아래로 이벤트 인스턴스 경로 .
- 버블 라우팅 된 이벤트는 버블 링 전략을 사용합니다. 버블 전략은 이벤트 인스턴스가 트리를 통해 이벤트 소스에서 루트로 위쪽으로 라우팅합니다.
- 직접 라우팅 된 이벤트는 요소 트리를 통해 라우팅되지 않습니다.
내 생각 엔 그 프리젠 테이션 프레임 워크는 하나의 메인 윈도우를 생성하고 자식 요소가
지금 내 일반 창 형태로이 전략을 변경할 수있는 이벤트 라우팅 전략을 지원하기 위해 자체적으로 드로잉을한다. 내가 원한다면 터널 또는 버블이고 현재 윈도우 시스템은 입니다. 그 위에 컨트롤이 있어도 MouseEnter/MouseLeave 이벤트를 받길 원합니다. 한 가지 방법은 글로벌 마우스/키보드 후크입니다. 그러나 나는 그것을 피하고 싶다고 말하자.
WPF에 대해 이야기하고 있습니까? – Arseny
WPF에서 할 수 있습니다. Windows Forms와 Microsoft Windows에서 CreateWindow() API로 만든 모든 창에 대해 이야기하고 있습니다. – affan