입력 컨텍스트

"입력 컨텍스트"는 IMM에서 유지 관리하는 내부 구조입니다. 여기에는 IME의 상태 대한 정보가 포함되어 있으며 IME 창에서 사용됩니다. 기본적으로 운영 체제는 각 스레드에 입력 컨텍스트를 만들고 할당합니다. 스레드 내에서 이 기본 입력 컨텍스트는 공유 리소스이며 새로 만든 각 창과 연결됩니다.

IME에서 정보를 검색하거나 설정하려면 IME 인식 애플리케이션이 먼저 지정된 창과 연결된 입력 컨텍스트에 대한 핸들을 검색해야 합니다. 애플리케이션은 ImmGetContext 함수를 사용하여 핸들을 검색합니다. IMM 함수에 대한 후속 호출에서 검색된 핸들을 사용하여 컴퍼지션 창 스타일, 컴퍼지션 스타일 및 상태 창 위치와 같은 IME 값을 검색하고 설정할 수 있습니다. 애플리케이션이 컨텍스트 사용을 완료하면 ImmReleaseContext 함수를 사용하여 컨텍스트를 해제해야 합니다.

기본 입력 컨텍스트는 공유 리소스이므로 애플리케이션이 변경한 내용은 스레드의 모든 창에 적용됩니다. 그러나 애플리케이션은 자체 입력 컨텍스트를 만들고 스레드의 하나 이상의 창에 연결하여 이 기본 동작을 재정의할 수 있습니다. 애플리케이션별 입력 컨텍스트에 대한 변경 내용은 컨텍스트와 연결된 창에만 적용됩니다.

애플리케이션은 ImmCreateContext 함수를 사용하여 입력 컨텍스트를 만들 수 있습니다. 창에 컨텍스트를 할당하기 위해 애플리케이션은 ImmAssociateContext 함수를 호출합니다. 이 함수는 이전에 연결된 입력 컨텍스트에 대한 핸들을 반환합니다. 애플리케이션이 입력 컨텍스트를 창과 연결하지 않은 경우 반환된 핸들은 기본 입력 컨텍스트에 대한 것입니다. 일반적으로 애플리케이션은 이 핸들을 저장하고 나중에 사용자 지정된 입력 컨텍스트가 더 이상 필요하지 않을 때 창과 다시 연결합니다.

입력 컨텍스트가 창과 연결되면 운영 체제는 창이 활성화되고 입력 포커스를 받을 때 해당 컨텍스트를 자동으로 선택합니다. 입력 컨텍스트의 스타일 및 기타 정보는 해당 창의 후속 키보드 입력에 영향을 미치며 IME 작동 방식을 결정합니다.

애플리케이션이 종료되기 전에 사용자 지정된 입력 컨텍스트를 삭제해야 합니다. 먼저 애플리케이션은 ImmAssociateContext 함수를 사용하여 스레드의 창과 연결한 모든 연결에서 입력 컨텍스트를 제거합니다. 그런 다음 ImmDestroyContext 함수를 호출합니다.

입력 방법 관리자 정보