창 프로시저 Superclassing

Superclassing 는 응용 프로그램을 기존 클래스와 응용 프로그램에서 제공 하는 향상 된 기본 기능으로 새 창 클래스를 만들 수 있게 해 주는 기술입니다. 수퍼 클래스를 기본 클래스라고 하는 기존 창 클래스를 기준으로 합니다. 자주, 기본 클래스 편집 제어와 같은 시스템 글로벌 창 클래스는 하지만 그것은 모든 창 클래스 수.

수퍼 클래스는 슈퍼 클래스 프로시저를 호출한 자체 창 프로시저. 슈퍼 클래스 프로시저 메시지를 받으면 세 가지 조치를 취할 수: 수 원본 창 프로시저에 메시지를 전달, 메시지 수정 원래 창 프로시저에 전달 또는 메시지 처리 및 하지 원래 창 프로시저에 전달 합니다. 메시지를 처리 하는 슈퍼 클래스 프로시저, 그것은 그렇게 할 수 있다 전에 후, 또는 둘 모두 전과 후 메시지 원래 창 프로시저에 전달.

하위 프로시저와는 달리 슈퍼 클래스 프로시저 창 만들기 메시지 (WM_NCCREATE, WM_CREATE, 그리고 등등)를 처리할 수 있습니다 하지만 그것은 또한 통과 해야 합니다 그들 원래 기본 클래스 창 프로시저를 기본 클래스 창 프로시저는 초기화 절차를 수행할 수 있도록.

슈퍼 창 클래스를 응용 프로그램 기본 클래스에 대 한 정보를 검색 하려면 GetClassInfo 함수를 먼저 호출 합니다. GetClassInfo 기본 클래스의 WNDCLASS 구조체의 값으로 WNDCLASS 구조체를 채웁니다. 다음, 응용 프로그램 WNDCLASS 구조체의 hInstance 멤버에 자체 인스턴스 핸들을 복사 하 고 lpszClassName 멤버 슈퍼 클래스의 이름을 복사 합니다. 기본 클래스에는 메뉴, 응용 프로그램 같은 메뉴 식별자와 함께 새로운 메뉴를 제공 하 고 lpszMenuName 멤버 메뉴 이름을 복사 해야 합니다. 슈퍼 클래스 프로시저는 WM_COMMAND 메시지를 처리 하 고 기본 클래스의 창 프로시저에 전달 하지 않습니다, 만약 메뉴는 해당 id를 가질 필요가 없다. GetClassInfo lpszMenuName, lpszClassName또는 hInstance WNDCLASS 구조체의 멤버를 반환 하지 않습니다.

응용 프로그램 또한 WNDCLASS 구조체의 lpfnWndProc 멤버를 설정 해야 합니다. GetClassInfo 함수는이 멤버를 클래스에 대 한 원래 창 프로시저의 주소와 함께 채웁니다. 응용 프로그램은 메시지 원래 창 프로시저에 전달 하려면이 주소를 저장 하 고 lpfnWndProc 멤버에 슈퍼 클래스 프로시저의 주소를 복사 해야 합니다. 응용 프로그램, 필요한 경우 수정할 수 있습니다 WNDCLASS 구조체의 다른 멤버. WNDCLASS 구조를 채우고, 후 응용 프로그램 구조의 주소 RegisterClass 함수에 전달 하 여 수퍼 클래스를 등록 합니다. 수퍼 클래스 창 만들기를 사용할 수 있습니다.

Superclassing 새 창 클래스를 등록 하기 때문에 응용 프로그램 추가 클래스 바이트를 추가 창 바이트 추가할 수 있습니다. 안 슈퍼 클래스 원래 추가 바이트는 인스턴스 하위 또는 글로벌 서브 클래스 사용 하지 말아야 그들이 같은 이유로 기본 클래스 또는 창에 대 한 사용 해야 합니다. 또한, 응용 프로그램의 사용에 대 한 추가 바이트 클래스 또는 창 인스턴스를 추가 하는 경우 원래 기본 클래스에 의해 사용 되는 추가 바이트의 수를 기준으로 추가 바이트를 참조 해야 합니다 그것. 기본 클래스에 의해 사용 된 바이트 수 다음에 대 한 기본 클래스, 슈퍼 클래스의 자체에 대 한 시작 오프셋의 한 버전에서 달라질 수 있습니다 때문에 여분의 바이트 또한 달라질 수 있습니다 기본 클래스의 한 버전에서 다음.

 

Index