2012-04-16 2 views

답변

4

WndProc은 WinForms가 Win32 Windows 메시지를 둘러싼 랩퍼를 사용하여 .NET 계층을보다 쉽게 ​​이해하고 이해하는 방법입니다.

일반적으로 다음과 같은 방식으로 작동합니다. WM_LBUTTONDOWN 윈도우 메시지의 예제를 보자. Windows.Forms.Control.WndProc는이 메시지를 가로 채고 메시지의 WPARAM 및 LPARAM에서 관련 정보를 추출합니다. 그런 다음 보호 된 가상 메서드 인 OnMouseDown을 MouseEventArgs에 적절히 패키지 된 관련 정보와 함께 호출합니다. 구현은 자체 처리가 끝나면 MouseDown 이벤트를 발생시킵니다.

OnXXXX 메소드/XXXX 이벤트 세트를 다루는 것이 Windows 메시지를 직접 가로 채기가 훨씬 쉽습니다.

관심있는 Windows 메시지가 WinForms에 의해 처리되지 않으면 어떻게해야합니까? 이 경우 WndProc을 재정 의하여 직접 처리 할 수 ​​있습니다. 또 다른 용도는 메시지 자체를 차단 한 다음 컨트롤 자체가 처리하기 전에 메시지를 버리는 것입니다. 또는 응용 프로그램 내의 컨트롤간에 보내기위한 사용자 지정 메시지를 만들 수 있습니다. 컨트롤이받는 모든 메시지를보고 싶을 때 디버깅에 유용합니다. 한 곳에서만 로깅을 추가하면됩니다.

2

.NET은 Win32와 관련된 래퍼입니다. Windows에서 모든 메서드, 이벤트 및 속성의 100 %를 노출하지 않습니다.

때때로 덮개 아래로 가야합니다.

그러나 문제가 필요한 경우 스택 교환 검색을 통해 알 수 있습니다.

관련 문제