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