임프랍니다.
오늘의 팁은, 어플리케이션 수준에서 한영처리를 하는데 관련된 모든
코딩입니다.
먼저.. 현재의 한영 상태와 코딩으로 한영 전환하는 방법부터 알아봅시다.
현재의 한영상태를 알아내는 함수의 소스는...
// C++ 코드
bool __fastcall GetHanMode(void)
{
unsigned long Conversion, Sentence;
HIMC Mode = ImmGetContext(Application->Handle);
ImmGetConversionStatus(Mode, &Conversion, &Sentence);
return (Conversion == IME_CMODE_HANGEUL);
}
// 델파이 코드
function GetImeHanMode: boolean;
var
Mode: HIMC;
Conversion, Sentence: dword;
begin
Mode := ImmGetContext(Application.Handle);
ImmGetConversionStatus(Mode, Conversion, Sentence);
result := Conversion = IME_CMODE_HANGEUL;
end;
이렇게 하면 됩니다. 이와 비슷하게, 한영상태를 토글하려면,
// C++ 코드
void __fastcall ToggleHanMode(void)
{
unsigned long Conversion, Sentence;
HIMC Mode = ImmGetContext(Application->Handle);
ImmGetConversionStatus(Mode, &Conversion, &Sentence);
if (Conversion == IME_CMODE_HANGEUL)
ImmSetConversionStatus(Mode, IME_CMODE_ALPHANUMERIC, IME_CMODE_ALPHANUME
RIC);
else
ImmSetConversionStatus(Mode, IME_CMODE_HANGEUL, IME_CMODE_HANGEUL);
}
// 델파이 코드
procedure ToggleHanMode;
var
Mode: HIMC;
Conversion, Sentence: dword;
begin
Mode := ImmGetContext(Application.Handle);
ImmGetConversionStatus(Mode, Conversion, Sentence);
if Conversion = IME_CMODE_ALPHANUMERIC then
ImmSetConversionStatus(Mode, IME_CMODE_HANGEUL, IME_SMODE_NONE)
else
ImmSetConversionStatus(Mode, IME_CMODE_ALPHANUMERIC, IME_SMODE_NONE);
end;
비교적 간단하지요? ^^
그럼 도움되시길 바라면서, 이만..
독립문에서 임펠리테리였습니다.