__hook
키워드(keyword)
처리기 메서드를 이벤트와 연결합니다.
참고 항목
네이티브 C++의 이벤트 특성은 표준 C++와 호환되지 않습니다. 규칙 모드를 지정할 /permissive-
때 컴파일되지 않습니다.
구문
long __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
매개 변수
&SourceClass::EventMethod
이벤트 처리기 메서드를 후크할 이벤트 메서드에 대한 포인터입니다.
네이티브 C++ 이벤트:
SourceClass
이벤트 원본 클래스이며EventMethod
이벤트입니다.COM 이벤트:
SourceClass
이벤트 원본 인터페이스이며EventMethod
해당 메서드 중 하나입니다.관리되는 이벤트:
SourceClass
이벤트 원본 클래스이며EventMethod
이벤트입니다.
interface
특성의 event_receiver
매개 변수가 있는 COM 이벤트 수신기에 대해서만 연결receiver
되는 layout_dependent
인터페이스 이름입니다true
.
source
이벤트 소스의 인스턴스에 대한 포인터입니다. 에 지정된 event_receiver
source
코드 type
에 따라 다음 형식 중 하나가 될 수 있습니다.
네이티브 이벤트 소스 개체 포인터입니다.
IUnknown
COM 원본(-based pointer)입니다.관리되는 이벤트의 관리되는 개체 포인터입니다.
&ReceiverClass::HandlerMethod
이벤트에 후크될 이벤트 처리기 메서드에 대한 포인터입니다. 처리기는 클래스의 메서드 또는 동일한 참조로 지정됩니다. 클래스 이름을 __hook
지정하지 않으면 클래스가 호출된 클래스라고 가정합니다.
네이티브 C++ 이벤트:
ReceiverClass
이벤트 수신기 클래스이며HandlerMethod
처리기입니다.COM 이벤트:
ReceiverClass
이벤트 수신기 인터페이스이며HandlerMethod
해당 처리기 중 하나입니다.관리되는 이벤트:
ReceiverClass
이벤트 수신기 클래스이며HandlerMethod
처리기입니다.
receiver
(선택 사항) 이벤트 수신기 클래스의 인스턴스에 대한 포인터입니다. 수신기를 지정하지 않으면 기본값은 호출되는 __hook
수신기 클래스 또는 구조체입니다.
사용
이벤트 수신기 클래스 외부의 main을 포함하여 모든 함수 범위에서 사용할 수 있습니다.
설명
이벤트 수신기의 내장 함수 __hook
를 사용하여 처리기 메서드를 이벤트 메서드와 연결하거나 후크합니다. 이렇게 하면 소스에서 지정된 이벤트를 발생시킬 때 지정된 처리기가 호출됩니다. 여러 처리기를 단일 이벤트에 후크하거나 여러 이벤트를 단일 처리기에 후크할 수 있습니다.
두 가지 형식이 있습니다 __hook
. 특성의 layout_dependent 매개 변수 event_receiver
가 있는 COM 이벤트 수신기의 경우 대부분의 경우 첫 번째(4 인수) 양식을 사용할 수 있습니다false
.
이러한 경우 메서드 중 하나에서 이벤트를 실행하기 전에 인터페이스의 모든 메서드를 후크할 필요가 없습니다. 이벤트를 처리하는 메서드만 후크하면 됩니다. 두 번째(두 인수) 형식 __hook
은 COM 이벤트 수신기에만 사용할 수 있습니다 layout_dependent
= true
.
__hook
는 긴 값을 반환합니다. 0이 아닌 반환 값은 오류가 발생했음을 나타냅니다(관리되는 이벤트가 예외를 throw함).
컴파일러는 이벤트가 있는지 확인하고 이벤트 시그니처가 대리자 시그니처와 일치하는지 확인합니다.
COM 이벤트를 제외하고 이벤트 수신기 외부에서 호출 __hook
__unhook
할 수 있습니다.
사용 __hook
대신 += 연산자를 사용하는 것이 좋습니다.
새 구문에서 관리되는 이벤트를 코딩하는 방법에 대한 자세한 내용은 다음을 참조하세요 event
.
참고 항목
템플릿 기반 클래스 또는 구조체에 event를 포함시킬 수 없습니다.
예시
샘플은 네이티브 C++의 이벤트 처리 및 COM의 이벤트 처리를 참조하세요.
참고 항목
키워드
이벤트 처리
event_source
event_receiver
__event
__unhook
__raise
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기