Q&A

  • keybd_event를 이용한 한글입력...
일단...가상키보드를 구현하는지라, 키보드는 사용을 할수 없습니다.



그래서 한영키가 눌리면...

ImmSetConversionStatus(tMode, IME_CMODE_HANGEUL,IME_CMODE_HANGEUL);

이 함수로 한영을 전환하는데...



문제가여...

가령....한글상태에서...A버튼을 클릭하면...'ㅁ'은 잘찍혀요...근데...

B버튼을 클릭하면....'ㅠ'가 찍히긴 하는데...'뮤'이런식으로 조합된 문장이 아닌

'ㅁㅠ' 이런식으로 찍히니 환장하겠습니다.



A버튼 클릭 이벤트에...

Keybd_Event(ord('A'), 0, 0, 0 ); 와 같이 코딩을했고...



B버튼클릭 이벤트에..

Keybd_Event(ord('B'), 0, 0, 0 ); 와 같이 코딩을 했습니다.



이거 어케 해결해야죠?



정말 환장하겠네요...다 된줄알고....마음 놓고 있었더니....이런문제가...떱~



2  COMMENTS
  • Profile
    이대선 2001.12.03 21:43
    wooki wrote:

    > 일단...가상키보드를 구현하는지라, 키보드는 사용을 할수 없습니다.

    >

    > 그래서 한영키가 눌리면...

    > ImmSetConversionStatus(tMode, IME_CMODE_HANGEUL,IME_CMODE_HANGEUL);

    > 이 함수로 한영을 전환하는데...

    >

    > 문제가여...

    > 가령....한글상태에서...A버튼을 클릭하면...'ㅁ'은 잘찍혀요...근데...

    > B버튼을 클릭하면....'ㅠ'가 찍히긴 하는데...'뮤'이런식으로 조합된 문장이 아닌

    > 'ㅁㅠ' 이런식으로 찍히니 환장하겠습니다.

    >

    > A버튼 클릭 이벤트에...

    > Keybd_Event(ord('A'), 0, 0, 0 ); 와 같이 코딩을했고...

    >

    > B버튼클릭 이벤트에..

    > Keybd_Event(ord('B'), 0, 0, 0 ); 와 같이 코딩을 했습니다.

    >

    > 이거 어케 해결해야죠?

    >

    > 정말 환장하겠네요...다 된줄알고....마음 놓고 있었더니....이런문제가...떱~

    >



    혹시 가상 키보드를 만드시는 건지요?



    가상키보드를 만들었다면 Button Event를 사용 해서 코딩을 했다면 당연히 그러한 문제는 발생합니다.



    이유인 즉슨 만일 메모장에 'ㅁ'이라는 글자를 쓰고난 다음 가상키보드의 보튼을 누른 다면 당연히 메모장은 포커스를 잃어 버렸기 때문에'ㅁ'의 한글자가 완성 된것으로 간주 합니다.



    따라서 다음의 'ㅠ'자를 넣었다 해도 '뮤'자가 나오는 것이 아니고 'ㅁㅠ'자가 나오는 것이죠.



    그리고 아래한글은 Keybd_Event에 스캔 코트값을 '0'으로만 넣어 주면 아예 직히지 않습니다.



    질문의 상황을 해결 하기 위해서는 다음과 같이 코딩하시기 바랍니다.



    1. 가상키보드의 버튼에 눌리는 마우스 이벤트를 후킹해서 사용 할것.



    2. Keybd_Event에 스캔코드값을 넣어줄것.



    그럼 존 코딩...^^

  • Profile
    wooki 2001.12.04 00:22
    먼저 답변 감사합니다.



    먼저 저는 버튼컴포넌트를 사용하는것이 아니기에 마우스이벤트 후킹은 안해도 될거 같고요...2번재 말씀하신 스캔코드를 넣으라고 하셨는데...

    전 이미지박스를 이용 클릭이벤트로 가상키보드 처리를 하고 있습니다.



    스캔코드 처리에 대한, 간단한 예제나 정보좀 부탁드리겠습니다. 감사합니다.

    제가 처리한 스캔코드 처리방법은 다음과 같습니다.

    Var ScanCode : Byte;

    Begin

    ScanCode := MapVirtualKey(Ord('A'),0);

    KeyBd_Event(Ord('A'),ScanCode,0,0);

    end;



    문제를 지적해 주시면 정말 감사하겠습니다.



    이대선 wrote:

    > wooki wrote:

    > > 일단...가상키보드를 구현하는지라, 키보드는 사용을 할수 없습니다.

    > >

    > > 그래서 한영키가 눌리면...

    > > ImmSetConversionStatus(tMode, IME_CMODE_HANGEUL,IME_CMODE_HANGEUL);

    > > 이 함수로 한영을 전환하는데...

    > >

    > > 문제가여...

    > > 가령....한글상태에서...A버튼을 클릭하면...'ㅁ'은 잘찍혀요...근데...

    > > B버튼을 클릭하면....'ㅠ'가 찍히긴 하는데...'뮤'이런식으로 조합된 문장이 아닌

    > > 'ㅁㅠ' 이런식으로 찍히니 환장하겠습니다.

    > >

    > > A버튼 클릭 이벤트에...

    > > Keybd_Event(ord('A'), 0, 0, 0 ); 와 같이 코딩을했고...

    > >

    > > B버튼클릭 이벤트에..

    > > Keybd_Event(ord('B'), 0, 0, 0 ); 와 같이 코딩을 했습니다.

    > >

    > > 이거 어케 해결해야죠?

    > >

    > > 정말 환장하겠네요...다 된줄알고....마음 놓고 있었더니....이런문제가...떱~

    > >

    >

    > 혹시 가상 키보드를 만드시는 건지요?

    >

    > 가상키보드를 만들었다면 Button Event를 사용 해서 코딩을 했다면 당연히 그러한 문제는 발생합니다.

    >

    > 이유인 즉슨 만일 메모장에 'ㅁ'이라는 글자를 쓰고난 다음 가상키보드의 보튼을 누른 다면 당연히 메모장은 포커스를 잃어 버렸기 때문에'ㅁ'의 한글자가 완성 된것으로 간주 합니다.

    >

    > 따라서 다음의 'ㅠ'자를 넣었다 해도 '뮤'자가 나오는 것이 아니고 'ㅁㅠ'자가 나오는 것이죠.

    >

    > 그리고 아래한글은 Keybd_Event에 스캔 코트값을 '0'으로만 넣어 주면 아예 직히지 않습니다.

    >

    > 질문의 상황을 해결 하기 위해서는 다음과 같이 코딩하시기 바랍니다.

    >

    > 1. 가상키보드의 버튼에 눌리는 마우스 이벤트를 후킹해서 사용 할것.

    >

    > 2. Keybd_Event에 스캔코드값을 넣어줄것.

    >

    > 그럼 존 코딩...^^