서브클래싱된 콤보 상자

서브클래싱 intercept 및 프로세스 메시지를 응용 프로그램 전송 또는 창에 게시 하는 절차입니다. 응용 프로그램 하위 클래스를 사용 하 여 대부분의 메시지 클래스를 정의 하는 창 프로시저를 처리 하는 동안 특정 메시지에 대 한 자체 처리를 대체할 수 있습니다.

운영 체제 창을 만들면 창 프로시저의 주소를 포함 하는 내부 데이터 구조에 그것에 대 한 정보를 저장 합니다. 하위 클래스는 창, 응용 프로그램 하위 응용 프로그램에 정의 된 프로시저의 인스턴스 주소와 프로시저의 주소를 바꾸려면 SetClassLong 함수를 호출 합니다. 그러므로, 모든 메시지 창에 하위 프로시저에 전송 됩니다. 이 프로시저는 다음 처리 되지 않은 메시지 원래 창 프로시저에 전달 하 CallWindowProc 함수를 사용 합니다. 에 대 한 설명은 COMBOBOX 클래스 창 프로시저에 의해 수행 메시지 처리 기본 콤보 상자 동작 을 참조합니다.

콤보 상자는 대화 상자 밖에 있을 때 응용 프로그램 수 없습니다 처리 탭을, 입력, 및 하위 프로시저를 사용 하지 않는 경우 키를 탈출 합니다. 단순 또는 드롭다운 콤보 상자 입력된 포커스를 받으면 즉시 해당 자식 편집 컨트롤에 포커스 설정. 따라서, 응용 프로그램 하위 단순 또는 드롭다운 콤보 상자에 대 한 키보드 입력을 가로채 편집 컨트롤을 해야 합니다. 이 예를 들어 콤보 상자 서브클래싱하 면 을 참조 하십시오.

하위 프로시저를 처리 하는 경우는 WM_PAINT 메시지를 사용 해야 합니다를 BeginPaint 함수 그림에 대 한 준비를 합니다. 호출 하기 전에 EndPaint 기능, 그것 창 프로시저에 대 한 wParam 매개 장치 컨텍스트 (DC) 핸들을 전달 합니다. 클래스 창 프로시저에서 EndPaint 창 전체를 유효성을 검사 하기 때문에 아무 그림지 않습니다 EndPaint 를 먼저 호출 하는 경우.

서브클래싱 관련 기술을 superclassing이다. 수퍼 클래스 제외 하 고는 창 프로시저 DefWindowProc 처리 되지 않은 메시지를 처리 하기 위해 호출 하지 않습니다 다른 클래스를 닮았다. 대신, 그것은 부모 창 클래스에 대 한 창 프로시저를 처리 되지 않은 메시지를 전달합니다. 서브클래싱 및 superclassing 발생할 수 있는 문제를 방지 하려면 창 프로시저 에서 지침에 따라.

 

Index