c# wndproc 예제
y posteado en Sin categoría

해당 메시지가 표시되는 경우 코드는 마우스의 커서 위치를 가져옵니다. 그런 다음 GetChildAtPoint 메서드를 사용하여 마우스 위치에 있는 컨트롤을 확인하지만 해당 접근 방식에는 두 가지 문제가 있습니다. 첫째, 양식의 컨테이너에 포함된 컨트롤은 양식의 직접적인 자식이 아닙니다. 예를 들어 이 프로그램 레이블3은 양식에 포함된 tabControl1에 포함된 tabPage1에 포함된 groupBox2에 포함되어 있습니다. label3을 클릭하면 양식의 직접적인 자식이 아니므로 GetChildAtPoint에서 찾을 수 없습니다. 대신 양식에 의해 직접 포함된 컨트롤이기 때문에 tabControl1을 찾을 수 있습니다. 두 번째 합병증은 한 컨트롤이 다른 컨트롤 위에 있을 때 발생합니다. 이 예제에서는 두 탭 페이지가 서로 위에 있습니다. 두 번째 탭을 선택한 다음 클릭하면 GetChildAtPoint가 동일한 지점에 있고 메서드가 검색에서 해당 페이지를 먼저 만나므로 첫 번째 탭을 반환합니다. 양식의 WndProc 메서드는 Windows 운영 체제에서 양식으로 전송된 메시지를 처리합니다. 이는 양식이 다른 중요한 작업을 이동, 크기 조정, 다시 그리기 및 수행할 수 있도록 하는 매우 중요한 방법입니다.

일반적으로 WndProc의 기본 구현을 변경할 필요는 없지만 기본 WndProc을 재정의하여 특별한 작업을 수행할 수 있습니다. 이 예제에서는 다음 코드를 사용하여 사용자가 양식에 포함된 컨트롤을 클릭하는 시기를 감지합니다. 이 예제에서는 프로그램에서 수신하는 Windows 메시지를 확인하는 방법을 보여 주며 있습니다. 이전 버전의 Visual Basic에서는 API 함수를 사용하여 WndProc 처리기를 설치하여 메시지를 가로챌 수 있습니다. “하위 클래스링”이라고 불렸기 때문에 여기에 설명된 메서드를 “하위 클래스링”이라고도 합니다. Windows 종료 이벤트와 같은 특정 메시지에 응답하려는 경우 다음 코드 예제에서는 이 작업을 수행하는 방법을 보여 줍니다. 그런 다음 다음 에 대해 작업을 계속하거나 수정할 새 프로젝트에 복사할 수 있습니다. 먼저 추가하려는 코드 (사용자에게 프로그램의 파일 이름을 표시)를 제시한 다음 프로그램에 통합합니다.

나중에 나는 아마 당신에게 코드를 보여주고 당신이 당신의 프로그램에 통합 할 수 있습니다. 이것은 물론 나를 위해 더 나은 나에 대 한 많은 입력 하지 않아도 하 고 그것은 당신을 위해 더 나은 모든 프로그램에 코드를 추가할 수 있을 것입니다 그리고 그냥 내가 제시 하는 것 들. 이 작업을 수행하는 방법을 잘 모르는 경우 섹션에 포함된 예제 zip 파일을 확인하십시오. 이제 예제를 살펴보겠습니다. 우리는 이미 WM_DEVICECHANGED 메시지를 트래킹하고 두 개의 특정 이벤트를 필터링해야 한다는 것을 알고 있습니다.

Compartir este contenido...
Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone
Los Comentarios están cerrados.