안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당자 임펠리테리입니다.
얼마전에 제가 골머리를 썩였던 문제로 고민하고 계시는군요. 저도 한글을 메시지로
보내기 위해 골치좀 썩였답니다. ^^;;
원하시는 것처럼 한글문자를 코딩으로 보내기 위해서는, WM_CHAR 메시지가 아니라
WM_IME_CHAR 메시지를 써야합니다. 2바이트 문자를 위해 별도로 준비된 메시지죠.
사용법, 그러니까 wparam과 lparam은 WM_CHAR의 경우와 유사한데, 단지 주의할 것은
wapram 인자로서 2바이트 문자를 같이 보내줘야 한다는 것입니다. 그러니까, 한글 코
드 2바이트 문자의 앞 바이트를 8비트만큼 시프트해서 두번째 바이트를 or해서 넘겨
줘야 합니다.
그리고, SendMessage와 PostMessage는 윈32 레퍼런스를 찾아보면 자세히 나옵니다.
물론 위의 WM_IME_CHAR 메시지도 그렇구요. 글쎄, 그렇게 잘 알고 말고 할 내용은 없
을거 같은데.. ^^;;; 단지, SendMessage와 PostMessage는 약간의 차이점이 있는데,
SendMessage는 메시지를 특정 윈도우에 직접적으로 전달하고 그 메시지의 처리가 완
료될때까지 리턴되지 않습니다. 그러니까, 그동안 현재 프로세스는 중지된 상태죠.
반면에, PostMessage는, Post란 이름에서도 알수 있듯이, 윈도우의 메시지큐에
메시지를 덜~렁~ 던져줘버리고는 재빨리 돌아와버립니다. 경우에 따라 SendMessage
와 PostMessage를 구별해서 사용해야겠지만, 일반적인 경우에는 SendMessage가 안전
합니다.
그럼 도움되시길 바라면서, 이만...
독립문에서 임펠리테리였습니다.
(cbuilder, skyhi18)
|