현재 작업하고 있는 부분 중에 텍스트 입력란이 있습니다.
중국어 / 영어 입력을 받는데 텍스트 입력란 옆에 현재 중국어인지 영어인지 확인 할 수 있도록 되어있습니다.
문제는 중국쪽에서 중국어 / 영어를 변경하는데 키보드 타입을 변경하는 것입니다.
한국어의 한 / 영 버튼으로 바꾸는게 아니라 키보드 타입을 바꿔버리니 기존에 한 / 영 체크 방식으론 구분이 안 됩니다.
GetKeyboardLayoutName 같은 함수로 구분이 되는 경우도 있지만 그렇지 않은 경우도 있더군요.
예를 들어서 중국어 자판 중에 "US Keyboard" 가 있고 "중국어 간체 US Keyboard" 가 있습니다.
"US Keyboard"는 다른 중국어 간체 키보드 타입들과는 키보드 레이아웃 이름이 다르기 때문에 구별이 가능합니다.
문제가 되는 "중국어 간체 US Keyboard" 의 경우 다른 중국어 간체 키보드와 구별도 안되고 IME 언어 확인하는 함수로도 확인이 불가능하더군요.
한가지 방법으로 텍스트 입력란에 입력이 들어갈때 WM_IME_STARTCOMP OSITION 메시지가 들어오면 조합 언어인 중국어라는 사실로 아는 것 뿐입니다.
하지만 텍스트 입력이 들어가기 전에 어떤 언어인지 알아야하기 때문에 이건 사용할 수 없습니다.
그래서 제일 확실한 방법은 현재 설정된 키보드 타입이 무엇인지 확실히 구별하는 방법일 것입니다.
혹시 이 방법을 아시는 분이 계시면 한수 가르침을 주시기 바랍니다.
아마 이걸로 어느정도 체크는 가능했던걸로 기억하는데 한번 해보세요.