게임에서 한/영 키를 누르고 나면, IME 때문에 WM_KEYDOWN 등의 메시지가 다르게 처리돼서 원래 의도대로 키가 작동하지 않는 문제가 생깁니다. 이걸 해결하는 간단한 방법은 평소엔 IME와 윈도우 핸들의 연결을 끊어두고, 한글을 입력 받아야 할 때만 연결하는 것입니다. 이에 대한 힌트는 DirectX SDK의 DXUT에서 IME 관련 소스 코드를 보면 얻을 수 있습니다. 대략 다음 소스 코드처럼 처리하면 됩니다.
HWND global_window_handle;
HIMC global_ime_context;

void save_ime_context()
{
        global_ime_context = ImmGetContext(global_window_handle);
        ImmReleaseContext(global_window_handle, global_ime_context);
}

void set_ime_enablement(bool enablement)
{
        ImmAssociateContext(global_window_handle, enablement ? global_ime_context : NULL);
}
2009/08/04 23:51 2009/08/04 23:51

트랙백 주소 :: http://www.easyisright.net/trackback/592

댓글을 달아 주세요