![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
Editor1.jpg
336.8KB
Editor2.jpg
335.8KB
![]() 아크로에디트에서도 저런 문제가 가끔 있었는데 꽁수로 해결했습니다만 제 결론은 IME 버그였습니다. 조합 완료 메시지가 날라오지 않는거죠...^^
김성동님 말씀이 맞습니다.
저도 몇달 전에 해당 문제로 깊이 추적을 해봤는데, 델파이나 C++빌더가 아니라 윈도우 IME가 근본적으로 문제가 있더군요. 저도 그 버그를 피해갈 방법을 많이 고민했었는데, 딱히 방법이 없습니다. 또 모든 PC에서 발생하는 것은 아니고요. 제 PC에서는 발생하지 않길래 문제가 발생하는 PC와 비교해보니 IME의 고급 설정 몇개가 달라서 제 PC에도 똑같이 해봤었는데, 그랬더니 해당 문제가 재연이 되더군요. 그래서 아싸! 했는데.... 그 설정들을 거꾸로 되돌려도 원래대로 복귀가 안되더군요. 허덕! 그래서 저도 지금은 그 문제가 발생하는 상태에서 쓰고 있습니다. -.-;;;; 윈도우의 IME 코드가 엉망진창 쓰레기인 듯 합니다. 양용성님, 이 문제가 델파이 2009 이후부터 발생하는 이유는 이 IME 버그 자체가 유니코드 환경에만 발생하기 때문입니다. 동일한 API 코드로 안시코드 버전과 유니코드 버전을 만들어도, 유니코드에서는 오동작하고 안시코드는 잘 동작합니다. 이건 델파이나 C++빌더 뿐만 아니고 비주얼 C++로 만든 애플리케이션에서도 여러 번 봤습니다.
김성동님 말씀처럼, IME에서 넘어오는 IME 메시지가 비정상적으로 날아오는데요. IME 메시지는 반드시 순서를 지켜서 날아와야 하는데, 순서가 거꾸로 날아옵니다. 더 구체적으로 말하자면, 마우스에 의해 포커스 이동 등의 메시지가 발생하면, 조합완료 IME 메시지를 먼저 처리해야 하는데 마우스 메시지가 먼저 처리됩니다. 이런 이유로 한글 조합중에 다른 곳을 마우스로 찍으면 커서가 먼저 이동하고 그 다음에 조합완료가 일어나서 이동된 커서 위치에 조합된 한글 글자가 찍혀버리는 상황이 발생합니다. 저도 자주 컴포넌트를 패치하기도 하고 합니다만, IDE에서의 문제는 IME 메시지가 근본적으로 잘못들어오는 거라서 저도 원인을 정확하게 알고 있지만 본사에 어떻게 대책을 제시하질 못하고 있습니다. 사실 윈도우의 버그를 개발툴이 피해가는 기능을 추가하는 문제라서 이걸 패치라고 부르기도 뭣하구요. SynEdit는 아직 유니코드를 지원하지 않는데... 2009 버전 이전에 발생했던 한글 문제를 말씀하신 거 같습니다. 델파이/C++빌더가 윈도우의 버그를 피해 기능을 추가한 경우가 지금까지 의외로 꽤 많이 있었습니다. 예를 들면 ntdll에는 코드로 브레이크포인트를 잡는 API 함수인 DbgBreakPoint를 호출하는 디버그용 코드가 그대로 남아있어서, 개발자가 특정 코딩을 하면 개발자가 브레이크포인트를 설정하지도 않은 곳에서 난데없이 IDE가 멈추는 현상이 발생하는데요. 이게 델파이나 C++빌더의 버그인줄로 알고 있는 개발자분들이 아직도 꽤 많이 있습니다. 그래서 2007 버전 IDE에는 Ingnore non-user breakpoint라는 IDE 환경설정 옵션이 추가되었죠. 그래서 이 한글조합중의 마우스 이동의 문제에 대해서도 델파이/C++빌더 IDE 차원에서 패치(?)가 나오면 좋겠지만, 제가 생각해도 이걸 어떻게 피해가야 할지 아이디어가 떠오르질 않더군요. 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |